src/Controller/ApiController.php line 1552

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Comercial;
  4. use App\Entity\FullCalendarEvent;
  5. use App\Entity\Modalidad;
  6. use App\Entity\Producto;
  7. use App\Entity\ProductoProveedor;
  8. use App\Entity\TipoLectura;
  9. use App\Entity\EstadoFinanciero;
  10. use App\Repository\BancoRepository;
  11. use App\Repository\CanalRepository;
  12. use App\Repository\ContratoRepository;
  13. use App\Repository\ComercialRepository;
  14. use App\Repository\EstadoCompraFacturaRepository;
  15. use App\Repository\EstadoRepository;
  16. use App\Repository\EstadoFinancieroRepository;
  17. use App\Repository\FacturaGenericaRepository;
  18. use App\Repository\FacturaRepository;
  19. use App\Repository\FullCalendarEventRepository;
  20. use App\Repository\ImpuestoRepository;
  21. use App\Repository\NotificacionRepository;
  22. use App\Repository\ProductoProveedorRepository;
  23. use App\Repository\ProductoRepository;
  24. use App\Repository\ProveedorRepository;
  25. use App\Repository\PuntuacionRepository;
  26. use App\Repository\TarifaRepository;
  27. use App\Repository\TipoImpuestoRepository;
  28. use App\Repository\TipoIvaRepository;
  29. use App\Repository\TipoTarifaRepository;
  30. use Doctrine\ORM\EntityManagerInterface;
  31. use Doctrine\ORM\NonUniqueResultException;
  32. use Doctrine\ORM\NoResultException;
  33. use Doctrine\ORM\Query\ResultSetMapping;
  34. use Exception;
  35. use Knp\Snappy\Pdf;
  36. use Monolog\Handler\StreamHandler;
  37. use Monolog\Logger;
  38. use Doctrine\Persistence\ManagerRegistry;
  39. use Psr\Cache\InvalidArgumentException;
  40. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  41. use Symfony\Component\Mailer\MailerInterface;
  42. use Symfony\Component\Mime\Email;
  43. use Symfony\Component\HttpFoundation\Request;
  44. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  45. use Symfony\Component\Routing\Annotation\Route;
  46. use Symfony\Component\HttpFoundation\Response;
  47. class ApiController extends AbstractController
  48. {
  49.     /**
  50.      * @Route("/api/canal", name="api_canal")
  51.      */
  52.     public function canal(Request $requestCanalRepository $canalRepository)
  53.     {
  54.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  55.         if($request->isXmlHttpRequest()){
  56.             if( $request->isMethod('get') ){
  57.                 try {
  58.                     $array=$canalRepository->findAll();
  59.                     foreach($array as &$item){
  60.                         $item=[
  61.                             'id'=>$item->getId(),
  62.                             'nombre'=>$item->getNombre()
  63.                         ];
  64.                     }
  65.                 }catch (Exception $e){}
  66.             }
  67.             else{
  68.                 $array=$canalRepository->findAll();
  69.             }
  70.             return $this->json($array??[]);
  71.         }
  72.         else{
  73.             return $this->createNotFoundException();
  74.         }
  75.     }
  76.     /**
  77.      * @Route("/api/comercial", name="api_comercial")
  78.      */
  79.     public function comercial(Request $requestComercialRepository $comercialRepository)
  80.     {
  81.         $this->denyAccessUnlessGranted('ROLE_ALTACOMERCIALES');
  82.         $array=[];
  83.         if($request->isXmlHttpRequest()){
  84.             try {
  85.                 $array=$comercialRepository->findAll();
  86.                 foreach($array as &$item){
  87.                     $item=[
  88.                         'id'=>$item->getId(),
  89.                         'nombre'=>$item->__toString()
  90.                     ];
  91.                 }
  92.             }catch (Exception $e){
  93.             }
  94.             return $this->json($array??[]);
  95.         }
  96.         else{
  97.             return $this->createNotFoundException();
  98.         }
  99.     }
  100.     /**
  101.      * @Route("/api/contrato", name="api_contrato")
  102.      */
  103.     public function contrato(Request $requestContratoRepository $contratoRepositoryImpuestoRepository $impuestoRepository,
  104.                              TipoImpuestoRepository $tipoImpuestoRepositoryTarifaRepository $tarifaRepository,
  105.                              ProductoRepository $productoRepositoryEstadoRepository $estadoRepository,
  106.                              EstadoFinancieroRepository $estadoFinancieroRepositoryCanalRepository $canalRepository,
  107.                              ProveedorRepository $proveedorRepositoryComercialRepository $comercialRepository,
  108.                              ProductoProveedorRepository $productoProveedorRepositoryEntityManagerInterface $entityManager,
  109.                              ManagerRegistry $doctrine)
  110.     {
  111.         $this->denyAccessUnlessGranted('ROLE_FACTURACION');
  112.         $logger = new Logger('my_logger');
  113.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  114.         if( $request->isXmlHttpRequest() ){
  115.             try{
  116.                 $logger->info('Detected AJAX request in /api/contrato');
  117.                 if( $request->isMethod('post') ){
  118.                     $logger->debug('Detected method POST');
  119.                     $logger->debug(var_export($_POST1));
  120.                     if( ($_POST['action']??null)=='select' ){
  121.                         $logger->info'Detected action SELECT' );
  122.                         $values=($_POST['values']??null);
  123.                         $logger->debug(var_export($values,1));
  124.                         if( $values=='cuenta' ){
  125.                             try {
  126.                                 $contrato=$contratoRepository->find$_POST['id'] );
  127.                                 $array=[
  128.                                     'cuenta'=>$contrato->getNumeroCuenta()
  129.                                 ];
  130.                             }catch (Exception $e){
  131.                                 $logger->alert$e->getMessage() );
  132.                             }
  133.                         }
  134.                         if( $values=='observaciones' ){
  135.                             try {
  136.                                 $contrato=$contratoRepository->find$_POST['id'] );
  137.                                 $array=[
  138.                                     'observaciones'=>$contrato->getObservaciones()
  139.                                 ];
  140.                             }catch (Exception $e){
  141.                                 $logger->alert$e->getMessage() );
  142.                             }
  143.                         }
  144.                         elseif( $values=='potencias' ){
  145.                             try {
  146.                                 $suministro=$contratoRepository->find$_POST['id'] )->getSuministro();
  147.                                 $array=[
  148.                                     'p1'=>$suministro->getpotenciaP1(),
  149.                                     'p2'=>$suministro->getpotenciaP2(),
  150.                                     'p3'=>$suministro->getpotenciaP3(),
  151.                                     'p4'=>$suministro->getpotenciaP4(),
  152.                                     'p5'=>$suministro->getpotenciaP5(),
  153.                                     'p6'=>$suministro->getpotenciaP6(),
  154.                                 ];
  155.                             }catch (Exception $e){
  156.                                 $logger->alert$e->getMessage() );
  157.                             }
  158.                         }
  159.                         elseif( $values=='tarifa' ){
  160.                             $logger->debug('Returning tarifa');
  161.                             try {
  162.                                 $contrato=$contratoRepository->find$_POST['id'] );
  163.                                 $suministro=$contrato->getSuministro();
  164.                                 $array=[
  165.                                     'tarifa'=>$contrato->getProducto()->getTarifa()->getNombre(),
  166.                                     'p1'=>$suministro->getpotenciaP1(),
  167.                                     'p2'=>$suministro->getpotenciaP2(),
  168.                                     'p3'=>$suministro->getpotenciaP3(),
  169.                                     'p4'=>$suministro->getpotenciaP4(),
  170.                                     'p5'=>$suministro->getpotenciaP5(),
  171.                                     'p6'=>$suministro->getpotenciaP6(),
  172.                                 ];
  173.                             }catch (Exception $e){
  174.                                 $logger->alert$e->getMessage() );
  175.                             }
  176.                         }
  177.                         elseif( $values=='producto' ){
  178.                             $logger->debug('Returning producto');
  179.                             try {
  180.                                 $contrato=$contratoRepository->find$_POST['id'] );
  181.                                 $producto=$contrato->getProducto();
  182.                                 $array=[
  183.                                     'producto'=>$producto->getNombre(),
  184.                                     'precios'=>[
  185.                                         'potencia'=>[
  186.                                             'p1'=>$producto->getPrecioPotenciaP1(),
  187.                                             'p2'=>$producto->getPrecioPotenciaP2(),
  188.                                             'p3'=>$producto->getPrecioPotenciaP3(),
  189.                                             'p4'=>$producto->getPrecioPotenciaP4(),
  190.                                             'p5'=>$producto->getPrecioPotenciaP5(),
  191.                                             'p6'=>$producto->getPrecioPotenciaP6()
  192.                                         ],
  193.                                         'energia'=>[
  194.                                             'p1'=>$producto->getPrecioEnergiaP1(),
  195.                                             'p2'=>$producto->getPrecioEnergiaP2(),
  196.                                             'p3'=>$producto->getPrecioEnergiaP3(),
  197.                                             'p4'=>$producto->getPrecioEnergiaP4(),
  198.                                             'p5'=>$producto->getPrecioEnergiaP5(),
  199.                                             'p6'=>$producto->getPrecioEnergiaP6()
  200.                                         ]
  201.                                     ]
  202.                                 ];
  203.                             }catch (Exception $e){
  204.                                 $logger->alert$e->getMessage() );
  205.                             }
  206.                         }
  207.                         elseif( $values=='productoProveedor' ){
  208.                             try {
  209.                                 $contrato=$contratoRepository->find$_POST['id'] );
  210.                                 $producto=$contrato->getProductoProveedor();
  211.                                 $suministro=$contrato->getSuministro();
  212.                                 $array=[
  213.                                     'proveedor'=>$producto->getProveedor()->getNombre(),
  214.                                     'proveedorId'=>$producto->getProveedor()->getId(),
  215.                                     'tarifa'=>$producto->getTarifa()->getNombre(),
  216.                                     'precios'=>[
  217.                                         'potencia'=>[
  218.                                             'p1'=>$producto->getPrecioPotenciaP1(),
  219.                                             'p2'=>$producto->getPrecioPotenciaP2(),
  220.                                             'p3'=>$producto->getPrecioPotenciaP3(),
  221.                                             'p4'=>$producto->getPrecioPotenciaP4(),
  222.                                             'p5'=>$producto->getPrecioPotenciaP5(),
  223.                                             'p6'=>$producto->getPrecioPotenciaP6()
  224.                                         ],
  225.                                         'energia'=>[
  226.                                             'p1'=>$producto->getPrecioEnergiaP1(),
  227.                                             'p2'=>$producto->getPrecioEnergiaP2(),
  228.                                             'p3'=>$producto->getPrecioEnergiaP3(),
  229.                                             'p4'=>$producto->getPrecioEnergiaP4(),
  230.                                             'p5'=>$producto->getPrecioEnergiaP5(),
  231.                                             'p6'=>$producto->getPrecioEnergiaP6()
  232.                                         ],
  233.                                         'alquilerContador'=>$suministro->getAlquilerContadorReal()
  234.                                     ]
  235.                                 ];
  236.                             }catch (Exception $e){
  237.                                 $logger->alert$e->getMessage() );
  238.                             }
  239.                         }
  240.                         elseif( $values=='impuesto' ){
  241.                             try {
  242.                                 $contrato=$contratoRepository->find$_POST['id'] );
  243.                                 $nombreImpuesto=$contrato->getTipoImpuesto()->getNombre();
  244.                                 if($nombreImpuesto=='Sí'){
  245.                                     $importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidad' ])->getImporte();
  246.                                 }elseif($nombreImpuesto=='Reducido'){
  247.                                     $importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidadReducido' ])->getImporte();
  248.                                 }else{
  249.                                     $importe=0;
  250.                                 }
  251.                                 $array=[
  252.                                     'nombre'=>$nombreImpuesto,
  253.                                     'importe'=>$importe
  254.                                 ];
  255.                             }catch (Exception $e){
  256.                                 $logger->alert$e->getMessage() );
  257.                             }
  258.                         }
  259.                         elseif( $values=='comercial' ){
  260.                             try {
  261.                                 $contrato=$contratoRepository->find$_POST['id'] );
  262.                                 $array=[
  263.                                     'seller'=>($contrato->getSeller()??new Comercial())->__toString(),
  264.                                     'comercial'=>$contrato->getComercial()
  265.                                 ];
  266.                             }catch (Exception $e){
  267.                                 $logger->alert$e->getMessage() );
  268.                             }
  269.                         }
  270.                         elseif( $values=='estado' ){
  271.                             try {
  272.                                 $contrato=$contratoRepository->find$_POST['id'] );
  273.                                 $array=[
  274.                                     'estado'=>$contrato->getEstado()->getNombre()
  275.                                 ];
  276.                             }catch (Exception $e){
  277.                                 $logger->alert$e->getMessage() );
  278.                             }
  279.                         }
  280.                         elseif( $values=='rentabilidad' ){
  281.                             try {
  282.                                 $contrato=$contratoRepository->find$_POST['id'] );
  283.                                 $array=[
  284.                                     'estadoFinanciero'=>($contrato->getEstadoFinanciero() ?? new EstadoFinanciero)->getNombre(),
  285.                                     'fechaRentabilidad'=>$contrato->getFechaRentabilidad()? $contrato->getFechaRentabilidad()->format('d/m/Y') : null,
  286.                                     'observacionesRentabilidad'=>$contrato->getObservacionesRentabilidad()
  287.                                 ];
  288.                             }catch (Exception $e){
  289.                                 $logger->alert$e->getMessage() );
  290.                             }
  291.                         }
  292.                         elseif( $values=='caducidad' ){
  293.                             try {
  294.                                 $contrato=$contratoRepository->find$_POST['id'] );
  295.                                 $array=[
  296.                                     'caducidad'=>($contrato->getFechaCaducidad() ?? $contrato->getFechaFin())->format('Y-m-d'),
  297.                                     'canal'=>$contrato->getCanal()->getNombre(),
  298.                                     'proveedor'=>$contrato->getProveedor()->getNombre()
  299.                                 ];
  300.                             }catch (Exception $e){
  301.                                 $logger->alert$e->getMessage() );
  302.                             }
  303.                         }
  304.                         elseif( $values=='canal' ){
  305.                             try {
  306.                                 $contrato=$contratoRepository->find$_POST['id'] );
  307.                                 $array=[
  308.                                     'canal'=>$contrato->getCanal()->getNombre(),
  309.                                     'proveedor'=>$contrato->getProductoProveedor()->getNombre()
  310.                                 ];
  311.                             }catch (Exception $e){
  312.                                 $logger->alert$e->getMessage() );
  313.                             }
  314.                         }
  315.                     }
  316.                     elseif( ($_POST['action']??null)=='update' ){
  317.                         $logger->info'Detected action UPDATE' );
  318.                         if( !empty($_POST['values']['observaciones']) ){
  319.                             try {
  320.                                 $contrato=$contratoRepository->find$_POST['id'] );
  321.                                 if($_POST['values']['observaciones']==='null'){
  322.                                     $contrato->setObservaciones(null);
  323.                                 }else{
  324.                                     $contrato->setObservaciones($_POST['values']['observaciones']);
  325.                                 }
  326.                                 $entityManager->flush();
  327.                                 $array=[
  328.                                     'success'=>true
  329.                                 ];
  330.                             }catch (Exception $e){
  331.                                 $logger->alert$e->getMessage() );
  332.                                 $array=[
  333.                                     'success'=>false
  334.                                 ];
  335.                             }
  336.                         }
  337.                         if( !empty($_POST['values']['cuenta']) ){
  338.                             try {
  339.                                 $contrato=$contratoRepository->find$_POST['id'] );
  340.                                 $cuentaOld=$contrato->getNumeroCuenta();
  341.                                 $contrato->setNumeroCuenta($_POST['values']['cuenta']);
  342.                                 $contrato->setObservaciones('Número de cuenta anterior: '.$cuentaOld.'. '.$contrato->getObservaciones());
  343.                                 $entityManager->flush();
  344.                                 $array=[
  345.                                     'success'=>true
  346.                                 ];
  347.                             }catch (Exception $e){
  348.                                 $logger->alert$e->getMessage() );
  349.                                 $array=[
  350.                                     'success'=>false
  351.                                 ];
  352.                             }
  353.                         }
  354.                         if( !empty($_POST['values']['impuesto']) ){
  355.                             try {
  356.                                 $contrato=$contratoRepository->find$_POST['id'] );
  357.                                 $tipoImpuesto=$tipoImpuestoRepository->find$_POST['values']['impuesto'] );
  358.                                 $contrato->setTipoImpuesto($tipoImpuesto);
  359.                                 $entityManager->flush();
  360.                                 $array=[
  361.                                     'success'=>true
  362.                                 ];
  363.                             }catch (Exception $e){
  364.                                 $logger->alert$e->getMessage() );
  365.                                 $array=[
  366.                                     'success'=>false
  367.                                 ];
  368.                             }
  369.                         }
  370.                         if( !empty($_POST['values']['seller']) ){
  371.                             try {
  372.                                 $contrato=$contratoRepository->find$_POST['id'] );
  373.                                 $seller=$comercialRepository->find$_POST['values']['seller'] );
  374.                                 $contrato->setSeller($seller??null);
  375.                                 $entityManager->flush();
  376.                                 $array=[
  377.                                     'success'=>true
  378.                                 ];
  379.                             }catch (Exception $e){
  380.                                 $logger->alert$e->getMessage() );
  381.                                 $array=[
  382.                                     'success'=>false
  383.                                 ];
  384.                             }
  385.                         }
  386.                         if( !empty($_POST['values']['comercial']) ){
  387.                             try {
  388.                                 $contrato=$contratoRepository->find$_POST['id'] );
  389.                                 if($_POST['values']['comercial']==='null'){
  390.                                     $contrato->setComercial(null);
  391.                                 }else{
  392.                                     $contrato->setComercial($_POST['values']['comercial']);
  393.                                 }
  394.                                 $entityManager->flush();
  395.                                 $array=[
  396.                                     'success'=>true
  397.                                 ];
  398.                             }catch (Exception $e){
  399.                                 $logger->alert$e->getMessage() );
  400.                                 $array=[
  401.                                     'success'=>false
  402.                                 ];
  403.                             }
  404.                         }
  405.                         if( !empty($_POST['values']['estado']) ){
  406.                             try {
  407.                                 $contrato=$contratoRepository->find$_POST['id'] );
  408.                                 $estado=$estadoRepository->find$_POST['values']['estado'] );
  409.                                 $logger->alert'Found contrato and estado' );
  410.                                 if( $estado->getNombre()=='ACTIVO' ){
  411.                                     $logger->alert($_POST['values']['fechaActivacion']??'Couldn\'t find date');
  412.                                     if( $contrato->getFechaLectura()!==null ){
  413.                                         $contrato->setObservaciones('Fecha de activación anterior: '.$contrato->getFechaLectura()->format('d/m/Y').'. '.$contrato->getObservaciones());
  414.                                     }
  415.                                     if( ($_POST['values']['fechaActivacion']??null)==null ){
  416.                                         $contrato->setFechaLectura(date_create());
  417.                                         $contrato->setFechaFin(
  418.                                             date_add(
  419.                                                 date_create(),
  420.                                                 $contrato->getProducto()->getDuracion()??date_interval_create_from_date_string('1 year')
  421.                                             )
  422.                                         );
  423.                                     }else{
  424.                                         $contrato->setFechaLecturadate_create_from_format('Y-m-d'$_POST['values']['fechaActivacion']) );
  425.                                         $contrato->setFechaFin(
  426.                                             date_add(
  427.                                                 date_create_from_format('Y-m-d'$_POST['values']['fechaActivacion']),
  428.                                                 $contrato->getProducto()->getDuracion()??date_interval_create_from_date_string('1 year')
  429.                                             )
  430.                                         );
  431.                                     }
  432.                                     if( ($_POST['values']['lecturas']??'null')!=='null' ){
  433.                                         $contrato->setLecturaInicialP1($_POST['values']['lecturas']['p1']);
  434.                                         $contrato->setLecturaInicialP2($_POST['values']['lecturas']['p1']);
  435.                                         $contrato->setLecturaInicialP3($_POST['values']['lecturas']['p1']);
  436.                                         $contrato->setLecturaInicialP4($_POST['values']['lecturas']['p1']);
  437.                                         $contrato->setLecturaInicialP5($_POST['values']['lecturas']['p1']);
  438.                                         $contrato->setLecturaInicialP6($_POST['values']['lecturas']['p1']);
  439.                                         $contrato->setLecturaReactivaP1($_POST['values']['lecturas']['reactivas']['p1']);
  440.                                         $contrato->setLecturaReactivaP2($_POST['values']['lecturas']['reactivas']['p2']);
  441.                                         $contrato->setLecturaReactivaP3($_POST['values']['lecturas']['reactivas']['p3']);
  442.                                         $contrato->setLecturaReactivaP4($_POST['values']['lecturas']['reactivas']['p4']);
  443.                                         $contrato->setLecturaReactivaP5($_POST['values']['lecturas']['reactivas']['p5']);
  444.                                         $contrato->setLecturaReactivaP6($_POST['values']['lecturas']['reactivas']['p6']);
  445.                                     }
  446.                                     $contrato->setTipoLectura$doctrine->getRepository(TipoLectura::class)->findOneBy(['nombre'=>'Real'])??null );
  447.                                 }
  448.                                 $contrato->setEstado($estado);
  449.                                 $entityManager->flush();
  450.                                 /*$contrato->setUltimaLectura($contratoRepository->findUltimaLectura($contrato)['fecha']);
  451.                                 $entityManager->flush();*/
  452.                                 $array=[
  453.                                     'success'=>true
  454.                                 ];
  455.                             }catch (Exception $e){
  456.                                 $logger->alert$e->getMessage() );
  457.                                 $array=[
  458.                                     'success'=>false
  459.                                 ];
  460.                             }
  461.                         }
  462.                         if( !empty($_POST['values']['estadoFinanciero']) ){
  463.                             try {
  464.                                 $contrato=$contratoRepository->find$_POST['id'] );
  465.                                 $data=$_POST['values']['estadoFinanciero'];
  466.                                 if ($data!=='null'){
  467.                                     $estado=$estadoFinancieroRepository->find$_POST['values']['estadoFinanciero'] );
  468.                                 }else{
  469.                                     $estado=null;
  470.                                 }
  471.                                 $contrato->setEstadoFinanciero($estado);
  472.                                 $entityManager->flush();
  473.                                 /*$contrato->setUltimaLectura($contratoRepository->findUltimaLectura($contrato)['fecha']);
  474.                                 $entityManager->flush();*/
  475.                                 $array=[
  476.                                     'success'=>true
  477.                                 ];
  478.                             }catch (Exception $e){
  479.                                 $logger->alert$e->getMessage() );
  480.                                 $array=[
  481.                                     'success'=>false
  482.                                 ];
  483.                             }
  484.                         }
  485.                         if( !empty($_POST['values']['observacionesRentabilidad']) ){
  486.                             try {
  487.                                 $contrato=$contratoRepository->find$_POST['id'] );
  488.                                 if($_POST['values']['observacionesRentabilidad']==='null'){
  489.                                     $contrato->setObservacionesRentabilidad(null);
  490.                                 }else{
  491.                                     $contrato->setObservacionesRentabilidad($_POST['values']['observacionesRentabilidad']);
  492.                                 }
  493.                                 $entityManager->flush();
  494.                                 $array=[
  495.                                     'success'=>true
  496.                                 ];
  497.                             }catch (Exception $e){
  498.                                 $logger->alert$e->getMessage() );
  499.                                 $array=[
  500.                                     'success'=>false
  501.                                 ];
  502.                             }
  503.                         }
  504.                         if( !empty($_POST['values']['fechaRentabilidad']) && $_POST['values']['fechaRentabilidad']!=='null' ){
  505.                             try {
  506.                                 ob_start();
  507.                                 var_dump($_POST['values']);
  508.                                 $result ob_get_clean();
  509.                                 $logger->info$result );
  510.                                 $contrato=$contratoRepository->find$_POST['id'] );
  511.                                 $contrato->setFechaRentabilidaddate_create_from_format('Y-m-d',$_POST['values']['fechaRentabilidad']) );
  512.                                 $entityManager->flush();
  513.                                 $array=[
  514.                                     'success'=>true
  515.                                 ];
  516.                             }catch (Exception $e){
  517.                                 $logger->alert$e->getMessage() );
  518.                                 $array=[
  519.                                     'success'=>false
  520.                                 ];
  521.                             }
  522.                         }
  523.                         if( !empty($_POST['values']['caducidad']) && $_POST['values']['caducidad']!=='null' ){
  524.                             try {
  525.                                 ob_start();
  526.                                 var_dump($_POST['values']);
  527.                                 $result ob_get_clean();
  528.                                 $logger->info$result );
  529.                                 $contrato=$contratoRepository->find$_POST['id'] );
  530.                                 $contrato->setFechaCaducidaddate_create_from_format('Y-m-d',$_POST['values']['caducidad']) );
  531.                                 $entityManager->flush();
  532.                                 $array=[
  533.                                     'success'=>true
  534.                                 ];
  535.                             }catch (Exception $e){
  536.                                 $logger->alert$e->getMessage() );
  537.                                 $array=[
  538.                                     'success'=>false
  539.                                 ];
  540.                             }
  541.                         }
  542.                         if( !empty($_POST['values']['canal']) ){
  543.                             try {
  544.                                 $contrato=$contratoRepository->find$_POST['id'] );
  545.                                 $canal=$canalRepository->find$_POST['values']['canal'] );
  546.                                 $contrato->setCanal($canal);
  547.                                 $entityManager->flush();
  548.                                 $array=[
  549.                                     'success'=>true
  550.                                 ];
  551.                             }catch (Exception $e){
  552.                                 $logger->alert$e->getMessage() );
  553.                                 $array=[
  554.                                     'success'=>false
  555.                                 ];
  556.                             }
  557.                         }
  558.                         if( !empty($_POST['values']['proveedor']) ){
  559.                             try {
  560.                                 $contrato=$contratoRepository->find$_POST['id'] );
  561.                                 $proveedor=$proveedorRepository->find$_POST['values']['proveedor'] );
  562.                                 $productoProveedor=$contrato->getProductoProveedor();
  563.                                 $contrato->setProveedor($proveedor);
  564.                                 if($productoProveedor->getPersonalizado()){
  565.                                     $productoProveedor->setProveedor($proveedor);
  566.                                 }
  567.                                 $entityManager->flush();
  568.                                 $array=[
  569.                                     'success'=>true
  570.                                 ];
  571.                             }catch (Exception $e){
  572.                                 $logger->alert$e->getMessage() );
  573.                                 $array=[
  574.                                     'success'=>false
  575.                                 ];
  576.                             }
  577.                         }
  578.                         if( !empty($_POST['values']['tarifaProveedor']) ){
  579.                             $logger->info('Detected productoProveedor');
  580.                             try {
  581.                                 $contrato=$contratoRepository->find$_POST['values']['id'] );
  582.                                 if( ($_POST['values']['productoProveedor']??null)==null || $_POST['values']['productoProveedor']=='null' ){
  583.                                     $producto=new ProductoProveedor();
  584.                                     $suministro=$contrato->getSuministro();
  585.                                     $producto->setNombre('PERSONALIZADO');
  586.                                     $producto->setTarifa$contrato->getProducto()->getTarifa() );
  587.                                     $producto->setProveedor$contrato->getProveedor() );
  588.                                     $producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
  589.                                     $producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
  590.                                     $producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
  591.                                     $producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
  592.                                     $producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
  593.                                     $producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
  594.                                     $producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
  595.                                     $producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
  596.                                     $producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
  597.                                     $producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
  598.                                     $producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
  599.                                     $producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
  600.                                     $producto->setDuraciondate_interval_create_from_date_string('1 year') );
  601.                                     $producto->setPersonalizado(true);
  602.                                     $producto->setFacturaElectronica(true);
  603.                                     $suministro->setAlquilerContadorReal($_POST['values']['precios']['alquilerContador']);
  604.                                     $entityManager->persist($producto);
  605.                                     $contrato->setProductoProveedor($producto);
  606.                                 }
  607.                                 else{
  608.                                     $contrato->setProductoProveedor$productoProveedorRepository->find($_POST['values']['producto']) );
  609.                                 }
  610.                                 $entityManager->flush();
  611.                                 $array=[
  612.                                     'success'=>true
  613.                                 ];
  614.                             }catch (Exception $e){
  615.                                 $logger->alert$e->getMessage() );
  616.                                 $array=[
  617.                                     'success'=>false
  618.                                 ];
  619.                             }
  620.                         }
  621.                         elseif( !empty($_POST['values']['tarifa']) ){
  622.                             $logger->debug('tarifa');
  623.                             try {
  624.                                 //$contrato=$contratoRepository->find( $_POST['values']['id'] );
  625.                                 $contrato=$contratoRepository->find$_POST['id'] );
  626.                                 $suministro=$contrato->getSuministro();
  627.                                 $tarifaOld=$contrato->getProducto()->getTarifa();
  628.                                 if( $_POST['values']['tarifa']=='update' ){
  629.                                     switch( $tarifaOld->getNombre() ){
  630.                                         case '2.0A':case '2.1A':case '2.0DHA':case '2.1DHA':case '2.0DHS':case '2.1DHS':
  631.                                         $suministro->setPotenciaP2$suministro->getPotenciaP1() );
  632.                                         $array=[
  633.                                             'success'=>true
  634.                                         ];
  635.                                         break;
  636.                                         case '3.0A':case '3.1A':
  637.                                         $potenciaP1=$suministro->getPotenciaP1();
  638.                                         $potenciaP2=$suministro->getPotenciaP2();
  639.                                         $potenciaP3=$suministro->getPotenciaP3();
  640.                                         if($potenciaP2<$potenciaP1){
  641.                                             $potenciaP2=$potenciaP1;
  642.                                         }
  643.                                         if($potenciaP3<$potenciaP2){
  644.                                             $potenciaP3=$potenciaP2;
  645.                                         }
  646.                                         $suministro
  647.                                             ->setPotenciaP3$potenciaP2 )
  648.                                             ->setPotenciaP4$potenciaP2 )
  649.                                             ->setPotenciaP5$potenciaP2 )
  650.                                             ->setPotenciaP6$potenciaP3 );
  651.                                         $array=[
  652.                                             'success'=>true
  653.                                         ];
  654.                                         break;
  655.                                         default:
  656.                                             $array=[
  657.                                                 'success'=>false
  658.                                             ];
  659.                                     }
  660.                                 }
  661.                                 else{
  662.                                     $suministro->setPotenciaP1($_POST['values']['potencias']['p1']);
  663.                                     $suministro->setPotenciaP2($_POST['values']['potencias']['p2']);
  664.                                     $suministro->setPotenciaP3($_POST['values']['potencias']['p3']);
  665.                                     $suministro->setPotenciaP4($_POST['values']['potencias']['p4']);
  666.                                     $suministro->setPotenciaP5($_POST['values']['potencias']['p5']);
  667.                                     $suministro->setPotenciaP6($_POST['values']['potencias']['p6']);
  668.                                     if( ($_POST['values']['producto']??null)==null ){
  669.                                         ob_start();
  670.                                         var_dump($_POST['values']['precios']);
  671.                                         $result ob_get_clean();
  672.                                         $logger->info($result);
  673.                                         $producto=new Producto();
  674.                                         $producto->setNombre('PERSONALIZADO');
  675.                                         $producto->setTarifa$tarifaRepository->find($_POST['values']['tarifa']) );
  676.                                         $producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
  677.                                         $producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
  678.                                         $producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
  679.                                         $producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
  680.                                         $producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
  681.                                         $producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
  682.                                         $producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
  683.                                         $producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
  684.                                         $producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
  685.                                         $producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
  686.                                         $producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
  687.                                         $producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
  688.                                         $producto->setFacturaElectronica($_POST['values']['precios']['facturaElectronica']);
  689.                                         $producto->setModalidad($doctrine->getRepository(Modalidad::class)->find(1));
  690.                                         $producto->setDuraciondate_interval_create_from_date_string('1 year') );
  691.                                         $producto->setPersonalizado(true);
  692.                                         $entityManager->persist($producto);
  693.                                         $contrato->setProducto($producto);
  694.                                     }else{
  695.                                         $contrato->setProducto$productoRepository->find($_POST['values']['producto']) );
  696.                                     }
  697.                                     $producto=$contrato->getProducto();
  698.                                     if( !empty( $contrato->getFacturas() ) ){
  699.                                         $tarifaNew=$producto->getTarifa();
  700.                                         $reactivasOld=(
  701.                                             $tarifaOld->getReactivaP1() ||
  702.                                             $tarifaOld->getReactivaP2() ||
  703.                                             $tarifaOld->getReactivaP3() ||
  704.                                             $tarifaOld->getReactivaP4() ||
  705.                                             $tarifaOld->getReactivaP5() ||
  706.                                             $tarifaOld->getReactivaP6()
  707.                                         );
  708.                                         $reactivasNew=(
  709.                                             $tarifaNew->getReactivaP1() ||
  710.                                             $tarifaNew->getReactivaP2() ||
  711.                                             $tarifaNew->getReactivaP3() ||
  712.                                             $tarifaNew->getReactivaP4() ||
  713.                                             $tarifaNew->getReactivaP5() ||
  714.                                             $tarifaNew->getReactivaP6()
  715.                                         );
  716.                                         if(
  717.                                             $tarifaNew->getEnergiaP1()!==$tarifaOld->getEnergiaP1() ||
  718.                                             $tarifaNew->getEnergiaP2()!==$tarifaOld->getEnergiaP2() ||
  719.                                             $tarifaNew->getEnergiaP3()!==$tarifaOld->getEnergiaP3() ||
  720.                                             $tarifaNew->getEnergiaP4()!==$tarifaOld->getEnergiaP4() ||
  721.                                             $tarifaNew->getEnergiaP5()!==$tarifaOld->getEnergiaP5() ||
  722.                                             $tarifaNew->getEnergiaP6()!==$tarifaOld->getEnergiaP6() ||
  723.                                             $tarifaNew->getMaximetro()!==$tarifaOld->getMaximetro() ||
  724.                                             $reactivasNew!==$reactivasOld
  725.                                         ){
  726.                                             $contrato->setCambioTarifa(true);
  727.                                         }
  728.                                     }
  729.                                     if( !$suministro->getMaximetro() )
  730.                                         $suministro->setMaximetro$producto->getTarifa()->getMaximetro() );
  731.                                     $entityManager->flush();
  732.                                     $array=[
  733.                                         'success'=>true
  734.                                     ];
  735.                                 }
  736.                             }catch (Exception $e){
  737.                                 $logger->alert$e->getMessage() );
  738.                                 $array=[
  739.                                     'success'=>false
  740.                                 ];
  741.                             }
  742.                         }
  743.                         elseif( !empty($_POST['values']['potencias']) ){
  744.                             $logger->debug('potencias');
  745.                             try {
  746.                                 $suministro=$contratoRepository->find$_POST['id'] )->getSuministro();
  747.                                 $suministro->setpotenciaP1($_POST['values']['potencias']['p1']);
  748.                                 $suministro->setpotenciaP2($_POST['values']['potencias']['p2']);
  749.                                 $suministro->setpotenciaP3($_POST['values']['potencias']['p3']);
  750.                                 $suministro->setpotenciaP4($_POST['values']['potencias']['p4']);
  751.                                 $suministro->setpotenciaP5($_POST['values']['potencias']['p5']);
  752.                                 $suministro->setpotenciaP6($_POST['values']['potencias']['p6']);
  753.                                 $entityManager->flush();
  754.                                 $array=[
  755.                                     'success'=>true
  756.                                 ];
  757.                             }catch (Exception $e){
  758.                                 $logger->alert$e->getMessage() );
  759.                                 $array=[
  760.                                     'success'=>false
  761.                                 ];
  762.                             }
  763.                         }
  764.                         elseif( !empty($_POST['values']['producto']) ){
  765.                             $logger->debug('producto');
  766.                             try {
  767.                                 $contrato=$contratoRepository->find$_POST['id'] );
  768.                                 if( ($_POST['values']['producto']??null)==null || $_POST['values']['producto']=='null' ){
  769.                                     $producto=new Producto();
  770.                                     $producto->setNombre('PERSONALIZADO');
  771.                                     $producto->setTarifa$contrato->getProducto()->getTarifa() );
  772.                                     $producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
  773.                                     $producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
  774.                                     $producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
  775.                                     $producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
  776.                                     $producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
  777.                                     $producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
  778.                                     $producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
  779.                                     $producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
  780.                                     $producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
  781.                                     $producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
  782.                                     $producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
  783.                                     $producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
  784.                                     $producto->setFacturaElectronica($_POST['values']['precios']['facturaElectronica']);
  785.                                     $producto->setModalidad($doctrine->getRepository(Modalidad::class)->find(1));
  786.                                     $producto->setDuraciondate_interval_create_from_date_string('1 year') );
  787.                                     $producto->setPersonalizado(true);
  788.                                     $entityManager->persist($producto);
  789.                                     $contrato->setProducto($producto);
  790.                                 }
  791.                                 else{
  792.                                     $contrato->setProducto$productoRepository->find($_POST['values']['producto']) );
  793.                                 }
  794.                                 $entityManager->flush();
  795.                                 $array=[
  796.                                     'success'=>true
  797.                                 ];
  798.                             }catch (Exception $e){
  799.                                 $logger->alert$e->getMessage() );
  800.                                 $array=[
  801.                                     'success'=>false
  802.                                 ];
  803.                             }
  804.                         }
  805.                         else{
  806.                             $logger->debug('No values detected');
  807.                         }
  808.                         $logger->debug('endif');
  809.                     }
  810.                     else{
  811.                         try {
  812.                             $array=$contratoRepository->findBy( [ 'cliente'=>$_POST['cliente'] ], ['fecha'=>'desc'] );
  813.                             foreach($array as &$item){
  814.                                 $item=[
  815.                                     'id'=>$item->getId(),
  816.                                     'referencia'=>$item->getReferenciaContrato(),
  817.                                     'direccion'=>$item->getSuministro()->getDireccion(),
  818.                                     'cups'=>$item->getSuministro()->getCups(),
  819.                                     'tipo'=>$item->getReferenciaContrato(),
  820.                                     'fecha'=>$item->getFecha(),
  821.                                     'fechaFin'=>$item->getFechaFin(),
  822.                                 ];
  823.                             }
  824.                         }catch (Exception $e){}
  825.                     }
  826.                 }
  827.                 else{
  828.                     //$cache=new FilesystemAdapter();
  829.                     $logger->info('Detected method GET');
  830.                     if( $this->isGranted('ROLE_FACTURACION') ){
  831.                         //$contratos=$contratoRepository->findBy([ 'oculto'=>false ]);
  832.                         $logger->debugvar_export($_GET,1) );
  833.                         if ( !empty($_GET['list']) ){
  834.                             $superadmin=$this->isGranted('ROLE_SUPERADMIN');
  835.                             $qb=$contratoRepository->createQueryBuilder('c')
  836.                                 ->leftJoin('c.cliente','cl')->leftJoin('c.suministro','s')
  837.                                 ->leftJoin('c.estado','e')->leftJoin('c.estadoFinanciero','ef')
  838.                                 ->leftJoin('c.producto','p')->leftJoin('p.tarifa','t');
  839.                             $qb->andWhere('c.oculto!= :true')
  840.                                 ->setParameter('true',true);
  841.                         
  842.                             $index=[
  843.                                 'index'=>null,
  844.                                 'cliente'=>'CONCAT(cl.nombre, " ", cl.apellido, " ", cl.apellido2)',
  845.                                 'nif'=>'cl.nif',
  846.                                 'direccion'=>'s.direccionCompleta',
  847.                                 'poblacion'=>'s.poblacion',
  848.                                 'cups'=>'s.cups',
  849.                                 'tarifa'=>'t.nombre',
  850.                                 'estado'=>'e.nombre',
  851.                                 'estadoFinanciero'=>'ef.nombre',
  852.                                 'ultimaLectura'=>'c.ultimaLectura',
  853.                                 'caducidad'=>'c.fechaCaducidad',
  854.                                 'options'=>null
  855.                             ];
  856.                             $indexN=array_values($index);
  857.                             $qbCount = clone $qb;
  858.                             $totalContratos $qbCount->select('COUNT(c.id)')
  859.                                 ->getQuery()
  860.                                 ->getSingleScalarResult();
  861.                             $dateFrom=($_GET['dateFrom']??null);
  862.                             $dateTo=($_GET['dateTo']??null);
  863.                             $lecturaFrom=($_GET['lecturaFrom']??null);
  864.                             $lecturaTo=($_GET['lecturaTo']??null);
  865.                             $caducidadFrom=($_GET['caducidadFrom']??null);
  866.                             $caducidadTo=($_GET['caducidadTo']??null);
  867.                             $search=trim($_GET['search']['value']??null);
  868.                             $searchArray=array_merge(explode(' ',$search));
  869.                             $order=($_GET['order']??[=>['column' => '7''dir' => 'asc',], =>['column' => '9''dir' => 'asc',],]);
  870.                             $pageSize=($_GET['length']??100);
  871.                             $offset=$_GET['start']??0;
  872.                             if($dateFrom!==null){
  873.                                 $qb->andWhere('c.fechaLectura>= :dateFrom')
  874.                                     ->setParameter('dateFrom',$dateFrom);
  875.                             }
  876.                             if($dateTo!==null){
  877.                                 $qb->andWhere('c.fechaLectura<= :dateTo')
  878.                                     ->setParameter('dateTo',$dateTo);
  879.                             }
  880.                             if($lecturaFrom!==null){
  881.                                 $qb->andWhere('c.ultimaLectura>= :lecturaFrom')
  882.                                     ->setParameter('lecturaFrom',$lecturaFrom);
  883.                             }
  884.                             if($lecturaTo!==null){
  885.                                 $qb->andWhere('c.ultimaLectura<= :lecturaTo')
  886.                                     ->setParameter('lecturaTo',$lecturaTo);
  887.                             }
  888.                             if ($superadmin){
  889.                                 if($caducidadFrom!==null){
  890.                                     $qb->andWhere('c.fechaCaducidad>= :caducidadFrom')
  891.                                         ->setParameter('caducidadFrom',$caducidadFrom);
  892.                                 }
  893.                                 if($caducidadTo!==null){
  894.                                     $qb->andWhere('c.fechaCaducidad<= :caducidadTo')
  895.                                         ->setParameter('caducidadTo',$caducidadTo);
  896.                                 }
  897.                             }
  898.                             if ($search != null) {
  899.                                 if ($superadmin){
  900.                                     $expressionA=$qb->expr()->orX(
  901.                                         $qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))''?0'),
  902.                                         $qb->expr()->like('cl.nif''?0'),
  903.                                         $qb->expr()->like('UPPER(s.direccionCompleta)''?0'),
  904.                                         $qb->expr()->like('UPPER(s.poblacion)''?0'),
  905.                                         $qb->expr()->like('UPPER(s.cups)''?0'),
  906.                                         $qb->expr()->like('UPPER(t.nombre)''?0'),
  907.                                         $qb->expr()->like('UPPER(e.nombre)''?0'),
  908.                                         $qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')"'?0'),
  909.                                         $qb->expr()->like("DATE_FORMAT(c.fechaCaducidad, '%d/%m/%Y')"'?0')
  910.                                     );
  911.                                 }else{
  912.                                     $expressionA=$qb->expr()->orX(
  913.                                         $qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))''?0'),
  914.                                         $qb->expr()->like('cl.nif''?0'),
  915.                                         $qb->expr()->like('UPPER(s.direccionCompleta)''?0'),
  916.                                         $qb->expr()->like('UPPER(s.poblacion)''?0'),
  917.                                         $qb->expr()->like('UPPER(s.cups)''?0'),
  918.                                         $qb->expr()->like('UPPER(t.nombre)''?0'),
  919.                                         $qb->expr()->like('UPPER(e.nombre)''?0'),
  920.                                         $qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')"'?0')
  921.                                     );
  922.                                 }
  923.                                 if( count($searchArray)>){
  924.                                     $i=0;
  925.                                     $expressions=[];
  926.                                     foreach ($searchArray as $s){
  927.                                         $i++;
  928.                                         if ($superadmin){
  929.                                             $expressions[]=$qb->expr()->orX(
  930.                                                 $qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))''?'.$i),
  931.                                                 $qb->expr()->like('cl.nif''?'.$i),
  932.                                                 $qb->expr()->like('UPPER(s.direccionCompleta)''?'.$i),
  933.                                                 $qb->expr()->like('UPPER(s.poblacion)''?'.$i),
  934.                                                 $qb->expr()->like('UPPER(s.cups)''?'.$i),
  935.                                                 $qb->expr()->like('UPPER(t.nombre)''?'.$i),
  936.                                                 $qb->expr()->like('UPPER(e.nombre)''?'.$i),
  937.                                                 $qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')"'?'.$i),
  938.                                                 $qb->expr()->like("DATE_FORMAT(c.fechaCaducidad, '%d/%m/%Y')"'?'.$i)
  939.                                             );
  940.                                         }else{
  941.                                             $expressions[]=$qb->expr()->orX(
  942.                                                 $qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))''?'.$i),
  943.                                                 $qb->expr()->like('cl.nif''?'.$i),
  944.                                                 $qb->expr()->like('UPPER(s.direccionCompleta)''?'.$i),
  945.                                                 $qb->expr()->like('UPPER(s.poblacion)''?'.$i),
  946.                                                 $qb->expr()->like('UPPER(s.cups)''?'.$i),
  947.                                                 $qb->expr()->like('UPPER(t.nombre)''?'.$i),
  948.                                                 $qb->expr()->like('UPPER(e.nombre)''?'.$i),
  949.                                                 $qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')"'?'.$i)
  950.                                             );
  951.                                         }
  952.                                     }
  953.                                     $qb->andWhere($qb->expr()->orX(
  954.                                         $expressionA,
  955.                                         $qb->expr()->andX(...$expressions)
  956.                                     ));
  957.                                     $i=0;
  958.                                     foreach ($searchArray as $s){
  959.                                         $i++;
  960.                                         $qb->setParameter($i"%".strtoupper($s)."%");
  961.                                     }
  962.                                     $qb->setParameter('0'"%".strtoupper($search)."%");
  963.                                 }else{
  964.                                     $qb->andWhere($expressionA)->setParameter('0'"%".strtoupper($search)."%");
  965.                                 }
  966.                                 $qbCount = clone $qb;
  967.                                 $result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
  968.                                     ->getQuery()
  969.                                     ->getSingleScalarResult();
  970.                             }else{
  971.                                 $result['recordsFiltered']=$totalContratos;
  972.                             }
  973.                             $qb->setMaxResults($pageSize)->setFirstResult($offset);
  974.                             foreach ($order as $param){
  975.                                 $qb->addOrderBy$indexN[$param['column']],strtoupper($param['dir']) );
  976.                             }
  977.                             $contratos=$qb->getQuery()->getResult();
  978.                             $result['recordsTotal']=$totalContratos;
  979.                             $result['draw']=intval($_GET['draw']);
  980.                         }
  981.                         elseif ( !empty($_GET['estado']) ){
  982.                             try {
  983.                                 $qb=$contratoRepository->createQueryBuilder('c')
  984.                                     ->join('c.estado','e');
  985.                                 $qb->where($qb->expr()->eq('e.id'':estado'))
  986.                                     ->andWhere($qb->expr()->eq('c.oculto'':false'))
  987.                                     ->setParameter('estado'$_GET['estado'])
  988.                                     ->setParameter('false'false);
  989.                                 $contratos=$qb->getQuery()->getResult();
  990.                             }catch (Exception $exception){
  991.                                 $result=$exception->getMessage();
  992.                             }
  993.                         }else{
  994.                             try {
  995.                                 $qb=$contratoRepository->createQueryBuilder('c')
  996.                                     ->join('c.estado','e');
  997.                                 $qb->where($qb->expr()->neq('e.id'':estado'))
  998.                                     ->andWhere($qb->expr()->eq('c.oculto'':false'))
  999.                                     ->setParameter('estado'2)
  1000.                                     ->setParameter('false'false);
  1001.                                 $contratos=$qb->getQuery()->getResult();
  1002.                             }catch (Exception $exception){
  1003.                                 $result=$exception->getMessage();
  1004.                             }
  1005.                         }
  1006.                         try{
  1007.                             if( $superadmin??$this->isGranted('ROLE_SUPERADMIN') ){
  1008.                                 foreach ($contratos as $contrato){
  1009.                                     $id=$contrato->getId();
  1010.                                     $cliente=$contrato->getCliente();
  1011.                                     $suministro=$contrato->getSuministro();
  1012.                                     $estado=$contrato->getEstado()->getNombre();
  1013.                                     $class='small';
  1014.                                     if($estado=='BORRADOR')
  1015.                                         $class.=' alert-dark';
  1016.                                     elseif($estado=='BAJA')
  1017.                                         $class.=' alert-danger';
  1018.                                     elseif($estado=='PENDIENTE ACTIVACIÓN')
  1019.                                         $class.=' alert-warning';
  1020.                                     $tarifa=$contrato->getProducto()->getTarifa();
  1021.                                     $tipoTarifa=$tarifa->getTipoTarifa();
  1022.                                     $item=[
  1023.                                         "DT_RowId"=>"row".$id,
  1024.                                         "DT_RowClass"=>$class,
  1025.                                         'cliente'=>$cliente->__toString(),
  1026.                                         'nif'=>$cliente->getNif(),
  1027.                                         'direccion'=>$suministro->getDireccion(),
  1028.                                         'poblacion'=>$suministro->getPoblacion(),
  1029.                                         'cups'=>$suministro->getCups(),
  1030.                                         'tarifa'=>$tarifa->getNombre(),
  1031.                                         'tarifaId'=>$tarifa->getId(),
  1032.                                         'tarifaOculta'=>$tarifa->getOculto(),
  1033.                                         'tipoTarifa'=>$tipoTarifa->getNombre(),
  1034.                                         'tipoTarifaId'=>$tipoTarifa->getId(),
  1035.                                         'estado'=>$estado,
  1036.                                         'estadoFinanciero'=>($contrato->getEstadoFinanciero()??new EstadoFinanciero)->getNombre(),
  1037.                                         'ultimaLectura'=>date_format(($contrato->getUltimaLectura()??date_create()),'Y-m-d'),
  1038.                                         'caducidad'=>date_format( ( $contrato->getFechaCaducidad()??( $contrato->getFechaFin()??date_create() ) ),'Y-m-d' ),
  1039.                                         'facturas'=>count($contrato->getFacturas())
  1040.                                     ];
  1041.                                     if($tarifa->getOculto()){
  1042.                                         $item['periodos']=[
  1043.                                             'energia'=>[
  1044.                                                 'p1'=>$tarifa->getEnergiaP1(),
  1045.                                                 'p2'=>$tarifa->getEnergiaP2(),
  1046.                                                 'p3'=>$tarifa->getEnergiaP3(),
  1047.                                                 'p4'=>$tarifa->getEnergiaP4(),
  1048.                                                 'p5'=>$tarifa->getEnergiaP5(),
  1049.                                                 'p6'=>$tarifa->getEnergiaP6(),
  1050.                                             ],
  1051.                                             'potencia'=>[
  1052.                                                 'p1'=>$tarifa->getPotenciaP1(),
  1053.                                                 'p2'=>$tarifa->getPotenciaP2(),
  1054.                                                 'p3'=>$tarifa->getPotenciaP3(),
  1055.                                                 'p4'=>$tarifa->getPotenciaP4(),
  1056.                                                 'p5'=>$tarifa->getPotenciaP5(),
  1057.                                                 'p6'=>$tarifa->getPotenciaP6(),
  1058.                                             ],
  1059.                                             'reactiva'=>[
  1060.                                                 'p1'=>$tarifa->getReactivaP1(),
  1061.                                                 'p2'=>$tarifa->getReactivaP2(),
  1062.                                                 'p3'=>$tarifa->getReactivaP3(),
  1063.                                                 'p4'=>$tarifa->getReactivaP4(),
  1064.                                                 'p5'=>$tarifa->getReactivaP5(),
  1065.                                                 'p6'=>$tarifa->getReactivaP6(),
  1066.                                             ]
  1067.                                         ];
  1068.                                     }
  1069.                                     $array[]=$item;
  1070.                                 }
  1071.                             }
  1072.                             else{
  1073.                                 foreach ($contratos as $contrato){
  1074.                                     $id=$contrato->getId();
  1075.                                     $cliente=$contrato->getCliente();
  1076.                                     $suministro=$contrato->getSuministro();
  1077.                                     $estado=$contrato->getEstado()->getNombre();
  1078.                                     $class='small';
  1079.                                     if($estado=='BORRADOR')
  1080.                                         $class.=' alert-dark';
  1081.                                     elseif($estado=='BAJA')
  1082.                                         $class.=' alert-danger';
  1083.                                     elseif($estado=='PENDIENTE ACTIVACIÓN')
  1084.                                         $class.=' alert-warning';
  1085.                                     $tarifa=$contrato->getProducto()->getTarifa();
  1086.                                     $tipoTarifa=$tarifa->getTipoTarifa();
  1087.                                     $item=[
  1088.                                         "DT_RowId"=>"row".$id,
  1089.                                         "DT_RowClass"=>$class,
  1090.                                         'cliente'=>$cliente->__toString(),
  1091.                                         'nif'=>$cliente->getNif(),
  1092.                                         'direccion'=>$suministro->getDireccion(),
  1093.                                         'poblacion'=>$suministro->getPoblacion(),
  1094.                                         'cups'=>$suministro->getCups(),
  1095.                                         'tarifa'=>$tarifa->getNombre(),
  1096.                                         'tarifaId'=>$tarifa->getId(),
  1097.                                         'tarifaOculta'=>$tarifa->getOculto(),
  1098.                                         'tipoTarifa'=>$tipoTarifa->getNombre(),
  1099.                                         'tipoTarifaId'=>$tipoTarifa->getId(),
  1100.                                         'estado'=>$estado,
  1101.                                         'estadoFinanciero'=>($contrato->getEstadoFinanciero()??new EstadoFinanciero)->getNombre(),
  1102.                                         'ultimaLectura'=>date_format(($contrato->getUltimaLectura()??date_create()),'Y-m-d'),
  1103.                                         'facturas'=>count($contrato->getFacturas())
  1104.                                     ];
  1105.                                     if($tarifa->getOculto()){
  1106.                                         $item['periodos']=[
  1107.                                             'energia'=>[
  1108.                                                 'p1'=>$tarifa->getEnergiaP1(),
  1109.                                                 'p2'=>$tarifa->getEnergiaP2(),
  1110.                                                 'p3'=>$tarifa->getEnergiaP3(),
  1111.                                                 'p4'=>$tarifa->getEnergiaP4(),
  1112.                                                 'p5'=>$tarifa->getEnergiaP5(),
  1113.                                                 'p6'=>$tarifa->getEnergiaP6(),
  1114.                                             ],
  1115.                                             'potencia'=>[
  1116.                                                 'p1'=>$tarifa->getPotenciaP1(),
  1117.                                                 'p2'=>$tarifa->getPotenciaP2(),
  1118.                                                 'p3'=>$tarifa->getPotenciaP3(),
  1119.                                                 'p4'=>$tarifa->getPotenciaP4(),
  1120.                                                 'p5'=>$tarifa->getPotenciaP5(),
  1121.                                                 'p6'=>$tarifa->getPotenciaP6(),
  1122.                                             ],
  1123.                                             'reactiva'=>[
  1124.                                                 'p1'=>$tarifa->getReactivaP1(),
  1125.                                                 'p2'=>$tarifa->getReactivaP2(),
  1126.                                                 'p3'=>$tarifa->getReactivaP3(),
  1127.                                                 'p4'=>$tarifa->getReactivaP4(),
  1128.                                                 'p5'=>$tarifa->getReactivaP5(),
  1129.                                                 'p6'=>$tarifa->getReactivaP6(),
  1130.                                             ]
  1131.                                         ];
  1132.                                     }
  1133.                                     $array[]=$item;
  1134.                                 }
  1135.                             }
  1136.                         }catch (Exception $exception){
  1137.                             $logger->warning($exception->getMessage());
  1138.                         }
  1139.                         $result['data']=$array??[];
  1140.                         return $this->json($result??[]);
  1141.                     }
  1142.                 }
  1143.                 $logger->debug(var_export($array??[],1));
  1144.                 return $this->json($array??[]);
  1145.             }catch(Exception $e){
  1146.                 $logger->warning($e->getMessage());
  1147.             }
  1148.         }
  1149.         else{
  1150.             return $this->createNotFoundException();
  1151.         }
  1152.         return null;
  1153.     }
  1154.     /**
  1155.      * @Route("/api/estado", name="api_estado")
  1156.      */
  1157.     public function estado(Request $requestEstadoRepository $estadoRepository)
  1158.     {
  1159.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  1160.         if($request->isXmlHttpRequest()){
  1161.             try {
  1162.                 $array=$estadoRepository->findAll();
  1163.                 foreach($array as &$item){
  1164.                     $item=[
  1165.                         'id'=>$item->getId(),
  1166.                         'nombre'=>$item->getNombre()
  1167.                     ];
  1168.                 }
  1169.             }catch (Exception $e){}
  1170.             return $this->json($array??[]);
  1171.         }
  1172.         else{
  1173.             return $this->createNotFoundException();
  1174.         }
  1175.     }
  1176.     /**
  1177.      * @Route("/api/estadoFinanciero", name="api_estadoFinanciero")
  1178.      */
  1179.     public function estadoFinanciero(Request $requestEstadoFinancieroRepository $estadoFinancieroRepository)
  1180.     {
  1181.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  1182.         if($request->isXmlHttpRequest()){
  1183.             try {
  1184.                 $array=$estadoFinancieroRepository->findAll();
  1185.                 foreach($array as &$item){
  1186.                     $item=[
  1187.                         'id'=>$item->getId(),
  1188.                         'nombre'=>$item->getNombre()
  1189.                     ];
  1190.                 }
  1191.             }catch (Exception $e){}
  1192.             return $this->json($array??[]);
  1193.         }
  1194.         else{
  1195.             return $this->createNotFoundException();
  1196.         }
  1197.     }
  1198.     /**
  1199.      * @Route("/api/event", name="api_event")
  1200.      */
  1201.     public function event(Request $requestFullCalendarEventRepository $eventRepositoryEntityManagerInterface $entityManager): Response
  1202.     {
  1203.         $this->denyAccessUnlessGranted('ROLE_FACTURACION');
  1204.         $logger = new Logger('my_logger');
  1205.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  1206.         if( $request->isXmlHttpRequest() ){
  1207.             $response=false;
  1208.             if( $request->isMethod('post') ){
  1209.                 try {
  1210.                     if($_POST['action']=='update'){
  1211.                         $logger->debug(var_export($_POST,true));
  1212.                         $values=json_decode($_POST['values'],true);
  1213.                         $event=$eventRepository->find($values['id']);
  1214.                         if(isset($values['title']))
  1215.                             $event->setTitle($values['title']);
  1216.                         if(isset($values['start'])){
  1217.                             if( count(explode('T',$values['start']))>){
  1218.                                 $event->setStartdate_create_from_format('Y-m-d\TH:i'$values['start']) );
  1219.                             }else{
  1220.                                 $event->setStartdate_create_from_format('Y-m-d'$values['start']) );
  1221.                             }
  1222.                         }
  1223.                         if(isset($values['end'])){
  1224.                             if( count(explode('T',$values['end']))>){
  1225.                                 $event->setEnddate_create_from_format('Y-m-d\TH:i'$values['end']) );
  1226.                             }else{
  1227.                                 $event->setEnddate_create_from_format('Y-m-d'$values['end']) );
  1228.                             }
  1229.                         }
  1230.                         if(isset($values['allDay']))
  1231.                             $event->setAllDay($values['allDay']);
  1232.                         if(isset($values['startTime'])){
  1233.                             $startTime=explode(":"$values['startTime']);
  1234.                             $startTime=[
  1235.                                 'milliseconds'=>( ($startTime[0]*3600000)+($startTime[1]*60000) )
  1236.                             ];
  1237.                             $event->setStartTime($startTime);
  1238.                         }
  1239.                         if(isset($values['endTime'])){
  1240.                             $endTime=explode(":"$values['endTime']);
  1241.                             $endTime=[
  1242.                                 'milliseconds'=>( ($endTime[0]*3600000)+($endTime[1]*60000) )
  1243.                             ];
  1244.                             $event->setEndTime($endTime);
  1245.                         }
  1246.                         if(isset($values['startRecur']))
  1247.                             $event->setStartRecurdate_create_from_format('Y-m-d\TH:i'$values['startRecur']) );
  1248.                         if(isset($values['endRecur']))
  1249.                             $event->setEndRecurdate_create_from_format('Y-m-d\TH:i'$values['endRecur']) );
  1250.                         if(isset($values['daysOfWeek']))
  1251.                             $event->setDaysOfWeek($values['daysOfWeek']);
  1252.                         if(isset($values['mensaje']))
  1253.                             $event->setMensaje($values['mensaje']);
  1254.                         $logger->debug(var_export($event,true));
  1255.                         $entityManager->persist($event);
  1256.                     }
  1257.                     elseif ($_POST['action']=='delete'){
  1258.                         $values=json_decode($_POST['values'],true);
  1259.                         $event=$eventRepository->find($values['id']);
  1260.                         $entityManager->remove($event);
  1261.                     }
  1262.                     else{
  1263.                         $logger->debug(var_export($_POST,true));
  1264.                         $values=json_decode($_POST['values'],true);
  1265.                         $event=new FullCalendarEvent();
  1266.                         if(isset($values['title']))
  1267.                             $event->setTitle($values['title']);
  1268.                         if(isset($values['start'])){
  1269.                             if( count(explode('T',$values['start']))>){
  1270.                                 $event->setStartdate_create_from_format('Y-m-d\TH:i'$values['start']) );
  1271.                             }else{
  1272.                                 $event->setStartdate_create_from_format('Y-m-d'$values['start']) );
  1273.                             }
  1274.                         }
  1275.                         if(isset($values['end'])){
  1276.                             if( count(explode('T',$values['end']))>){
  1277.                                 $event->setEnddate_create_from_format('Y-m-d\TH:i'$values['end']) );
  1278.                             }else{
  1279.                                 $event->setEnddate_create_from_format('Y-m-d'$values['end']) );
  1280.                             }
  1281.                         }
  1282.                         if(isset($values['allDay']))
  1283.                             $event->setAllDay($values['allDay']);
  1284.                         if(isset($values['startTime'])){
  1285.                             $startTime=explode(":"$values['startTime']);
  1286.                             $startTime=[
  1287.                                 'milliseconds'=>( ($startTime[0]*3600000)+($startTime[1]*60000) )
  1288.                             ];
  1289.                             $event->setStartTime($startTime);
  1290.                         }
  1291.                         if(isset($values['endTime'])){
  1292.                             $endTime=explode(":"$values['endTime']);
  1293.                             $endTime=[
  1294.                                 'milliseconds'=>( ($endTime[0]*3600000)+($endTime[1]*60000) )
  1295.                             ];
  1296.                             $event->setEndTime($endTime);
  1297.                         }
  1298.                         if(isset($values['startRecur']))
  1299.                             $event->setStartRecurdate_create_from_format('Y-m-d\TH:i'$values['startRecur']) );
  1300.                         if(isset($values['endRecur']))
  1301.                             $event->setEndRecurdate_create_from_format('Y-m-d\TH:i'$values['endRecur']) );
  1302.                         if(isset($values['daysOfWeek']))
  1303.                             $event->setDaysOfWeek($values['daysOfWeek']);
  1304.                         if(isset($values['mensaje']))
  1305.                             $event->setMensaje($values['mensaje']);
  1306.                         $logger->debug(var_export($event,true));
  1307.                         $entityManager->persist($event);
  1308.                     }
  1309.                     $entityManager->flush();
  1310.                     $response=true;
  1311.                 }catch (\Exception $exception){
  1312.                     $logger->error($exception->getMessage());
  1313.                 }
  1314.             }
  1315.             elseif ( $request->isMethod('get') ){
  1316.                 $events=$eventRepository->findAll();
  1317.                 $response=[];
  1318.                 foreach ($events as $event){
  1319.                     $response[]=[
  1320.                         'id'=>$event->getId(),
  1321.                         'allDay'=>$event->isAllDay(),
  1322.                         'start'=>$event->getStart(),
  1323.                         'end'=>$event->getEnd(),
  1324.                         'daysOfWeek'=>$event->getDaysOfWeek(),
  1325.                         'startTime'=>$event->getStartTime(),
  1326.                         'endTime'=>$event->getEndTime(),
  1327.                         'startRecur'=>$event->getStartRecur(),
  1328.                         'endRecur'=>$event->getEndRecur(),
  1329.                         'title'=>$event->getTitle(),
  1330.                         'extendedProps'=>[
  1331.                             'mensaje'=>$event->getMensaje(),
  1332.                             'daysOfWeek'=>$event->getDaysOfWeek(),
  1333.                             'startTime'=>$event->getStartTime(),
  1334.                             'endTime'=>$event->getEndTime(),
  1335.                             'startRecur'=>$event->getStartRecur(),
  1336.                             'endRecur'=>$event->getEndRecur()
  1337.                         ]
  1338.                     ];
  1339.                 }
  1340.             }
  1341.         }else{
  1342.             $events=$eventRepository->findAll();
  1343.             $response=[];
  1344.             foreach ($events as $event){
  1345.                 $start=null;
  1346.                 $end=null;
  1347.                 if ( !is_null($event->getStart()) )
  1348.                     $start=$event->getStart()->format('c');
  1349.                 if ( !is_null($event->getEnd()) )
  1350.                     $end=$event->getEnd()->format('c');
  1351.                 if ( !is_null($event->getDaysOfWeek()) ){
  1352.                     if(empty($event->getDaysOfWeek())){
  1353.                         $daysOfWeek=null;
  1354.                     }
  1355.                     else{
  1356.                         $daysOfWeek=$event->getDaysOfWeek();
  1357.                     }
  1358.                 }
  1359.                 $response[]=[
  1360.                     'id'=>$event->getId(),
  1361.                     'allDay'=>$event->isAllDay(),
  1362.                     'start'=>$start??null,
  1363.                     'end'=>$end??null,
  1364.                     'daysOfWeek'=>$daysOfWeek,
  1365.                     'startTime'=>$event->getStartTime(),
  1366.                     'endTime'=>$event->getEndTime(),
  1367.                     'startRecur'=>$event->getStartRecur(),
  1368.                     'endRecur'=>$event->getEndRecur(),
  1369.                     'title'=>$event->getTitle(),
  1370.                     'extendedProps'=>[
  1371.                         'mensaje'=>$event->getMensaje(),
  1372.                         'daysOfWeek'=>$event->getDaysOfWeek(),
  1373.                         'startTime'=>$event->getStartTime(),
  1374.                         'endTime'=>$event->getEndTime(),
  1375.                         'startRecur'=>$event->getStartRecur(),
  1376.                         'endRecur'=>$event->getEndRecur()
  1377.                     ]
  1378.                 ];
  1379.             }
  1380.             /*return $this->render('api/index.html.twig', [
  1381.                 'controller_name' => 'ApiController',
  1382.             ]);*/
  1383.         }
  1384.         $logger->debug(var_export($responsetrue));
  1385.         return $this->json($response??[]);
  1386.     }
  1387.     /**
  1388.      * @Route("/api/factura", name="api_factura")
  1389.      */
  1390.     public function factura(Request $requestFacturaRepository $facturaRepositoryFacturaGenericaRepository $facturaGenericaRepository,
  1391.                             EstadoCompraFacturaRepository $estadoCompraFacturaRepositoryBancoRepository $bancoRepository,
  1392.                             Pdf $pdfMailerInterface $mailerEntityManagerInterface $entityManager)
  1393.     {
  1394.         $this->denyAccessUnlessGranted('ROLE_FACTURACION');
  1395.         $logger = new Logger('my_logger');
  1396.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  1397.         $logger->info('Entered factura API');
  1398.         if( $request->isXmlHttpRequest() ){
  1399.             if( $request->isMethod('get') ){
  1400.                 $logger->info('Detected method GET');
  1401.                 $values=($_GET['values']??null);
  1402.                 $list=$request->get('list');
  1403.                 $response['success']=true;
  1404.                 if ( $list=='paged' ){
  1405.                     $logger->debug('entered factura paged list API');
  1406.                     $superadmin=$this->isGranted('ROLE_SUPERADMIN');
  1407.                     $qb=$facturaRepository->createQueryBuilder('f')
  1408.                         ->leftJoin('f.contrato','c')->leftJoin('c.cliente','cl')
  1409.                         ->leftJoin('c.suministro','s')->leftJoin('c.producto''p')
  1410.                         ->leftJoin('p.tarifa','t')->leftJoin('t.tipoTarifa','tt')
  1411.                         ->leftJoin('c.seller''cm');
  1412.                     $logger->debug('reached index');
  1413.                     $index=[
  1414.                         'index'=>null,
  1415.                         'cliente'=>'f.nombreCliente',
  1416.                         'nifCliente'=>'f.nifCliente',
  1417.                         'codigoCliente'=>'cl.codigoContable',
  1418.                         'referenciaContrato'=>'c.referenciaContrato',
  1419.                         'cups'=>'s.cups',
  1420.                         'codigoArticulo'=>'s.codigoContable',
  1421.                         'numero'=>'f.numeroFactura',
  1422.                         'fechaLectura'=>'f.fechaLectura',
  1423.                         'fechaEmision'=>'f.fechaEmision',
  1424.                         //'fechaDevolucion'=>'f.fechaDevolucion',
  1425.                         'suministro'=>'s.direccionCompleta',
  1426.                         'comercial'=>'c.comercial',
  1427.                         'tipo'=>'tt.nombre',
  1428.                         'tarifa'=>"t.nombre",
  1429.                         'baseImponible'=>'f.totalFactura/(1+(f.iva/100))',
  1430.                         'iva'=>'f.iva',
  1431.                         'importe'=>'f.totalFactura',
  1432.                         'fechaEmisionCompra'=>'f.fechaEmisionCompra',
  1433.                         'fechaCobroCompra'=>'f.fechaCobroCompra',
  1434.                         'importeCompra'=>'f.totalCompraFactura',
  1435.                         'estadoCompra'=>'f.estadoCompra',
  1436.                         'devuelta'=>'f.devuelta'
  1437.                     ];
  1438.                     $indexN=array_values($index);
  1439.                     $qbCount = clone $qb;
  1440.                     try {
  1441.                         $totalFacturas $qbCount->select('COUNT(t.id)')
  1442.                             ->getQuery()
  1443.                             ->getSingleScalarResult();
  1444.                     } catch (NoResultException|NonUniqueResultException $e) {
  1445.                         $totalFacturas=0;
  1446.                     }
  1447.                     $emisionFrom=($_GET['emisionFrom']??null);
  1448.                     $emisionTo=($_GET['emisionTo']??null);
  1449.                     $lecturaFrom=($_GET['lecturaFrom']??null);
  1450.                     $lecturaTo=($_GET['lecturaTo']??null);
  1451.                     $search=trim($_GET['search']['value']??null);
  1452.                     $searchArray=array_merge(explode(' ',$search));
  1453.                     $order=($_GET['order']??[=>['column' => '7''dir' => 'asc',], =>['column' => '9''dir' => 'asc',],]);
  1454.                     $logger->debug('Request: '.var_export($_GET,1));
  1455.                     $pageSize=($_GET['length']??100);
  1456.                     $offset=$_GET['start']??0;
  1457.                     if($emisionFrom!==null){
  1458.                         $qb->andWhere('f.fechaEmision>= :emisionFrom')
  1459.                             ->setParameter('emisionFrom',$emisionFrom);
  1460.                     }
  1461.                     if($emisionTo!==null){
  1462.                         $qb->andWhere('f.fechaEmision<= :emisionTo')
  1463.                             ->setParameter('emisionTo',$emisionTo);
  1464.                     }
  1465.                     if($lecturaFrom!==null){
  1466.                         $qb->andWhere('f.fechaLectura>= :lecturaFrom')
  1467.                             ->setParameter('lecturaFrom',$lecturaFrom);
  1468.                     }
  1469.                     if($lecturaTo!==null){
  1470.                         $qb->andWhere('f.fechaLectura<= :lecturaTo')
  1471.                             ->setParameter('lecturaTo',$lecturaTo);
  1472.                     }
  1473.                     if ($search != null) {
  1474.                         if ($superadmin){
  1475.                             $expressionA=$qb->expr()->orX(
  1476.                                 $qb->expr()->like('UPPER('.$index['cliente'].')''?0'),
  1477.                                 $qb->expr()->like($index['nifCliente'], '?0'),
  1478.                                 $qb->expr()->like($index['codigoCliente'], '?0'),
  1479.                                 $qb->expr()->like($index['referenciaContrato'], '?0'),
  1480.                                 $qb->expr()->like($index['cups'], '?0'),
  1481.                                 $qb->expr()->like($index['codigoArticulo'], '?0'),
  1482.                                 $qb->expr()->like($index['numero'], '?0'),
  1483.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')"'?0'),
  1484.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?0'),
  1485.                                 $qb->expr()->like('UPPER('.$index['suministro'].')''?0'),
  1486.                                 $qb->expr()->like('UPPER('.$index['comercial'].')''?0'),
  1487.                                 $qb->expr()->like('UPPER('.$index['tipo'].')''?0'),
  1488.                                 $qb->expr()->like('UPPER('.$index['tarifa'].')''?0'),
  1489.                                 $qb->expr()->like('UPPER('.$index['iva'].')''?0'),
  1490.                                 $qb->expr()->like('UPPER('.$index['importe'].')''?0'),
  1491.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaEmisionCompra'].", '%d/%m/%Y')"'?0'),
  1492.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaCobroCompra'].", '%d/%m/%Y')"'?0'),
  1493.                                 $qb->expr()->like('UPPER('.$index['importeCompra'].')''?0')
  1494.                             );
  1495.                         }else{
  1496.                             $expressionA=$qb->expr()->orX(
  1497.                                 $qb->expr()->like('UPPER('.$index['cliente'].')''?0'),
  1498.                                 $qb->expr()->like($index['nifCliente'], '?0'),
  1499.                                 $qb->expr()->like($index['codigoCliente'], '?0'),
  1500.                                 $qb->expr()->like($index['referenciaContrato'], '?0'),
  1501.                                 $qb->expr()->like($index['cups'], '?0'),
  1502.                                 $qb->expr()->like($index['codigoArticulo'], '?0'),
  1503.                                 $qb->expr()->like($index['numero'], '?0'),
  1504.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')"'?0'),
  1505.                                 $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?0'),
  1506.                                 $qb->expr()->like('UPPER('.$index['suministro'].')''?0'),
  1507.                                 $qb->expr()->like('UPPER('.$index['comercial'].')''?0'),
  1508.                                 $qb->expr()->like('UPPER('.$index['tipo'].')''?0'),
  1509.                                 $qb->expr()->like('UPPER('.$index['tarifa'].')''?0'),
  1510.                                 $qb->expr()->like('UPPER('.$index['iva'].')''?0'),
  1511.                                 $qb->expr()->like('UPPER('.$index['importe'].')''?0')
  1512.                             );
  1513.                         }
  1514.                         if( count($searchArray)>){
  1515.                             $i=0;
  1516.                             $expressions=[];
  1517.                             foreach ($searchArray as $s){
  1518.                                 $i++;
  1519.                                 if ($superadmin){
  1520.                                     $expressions[]=$qb->expr()->orX(
  1521.                                         $qb->expr()->like('UPPER('.$index['cliente'].')''?'.$i),
  1522.                                         $qb->expr()->like($index['nifCliente'], '?'.$i),
  1523.                                         $qb->expr()->like($index['codigoCliente'], '?'.$i),
  1524.                                         $qb->expr()->like($index['referenciaContrato'], '?'.$i),
  1525.                                         $qb->expr()->like($index['cups'], '?'.$i),
  1526.                                         $qb->expr()->like($index['codigoArticulo'], '?'.$i),
  1527.                                         $qb->expr()->like($index['numero'], '?'.$i),
  1528.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')"'?'.$i),
  1529.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?'.$i),
  1530.                                         $qb->expr()->like('UPPER('.$index['suministro'].')''?'.$i),
  1531.                                         $qb->expr()->like('UPPER('.$index['comercial'].')''?'.$i),
  1532.                                         $qb->expr()->like('UPPER('.$index['tipo'].')''?'.$i),
  1533.                                         $qb->expr()->like('UPPER('.$index['tarifa'].')''?'.$i),
  1534.                                         $qb->expr()->like('UPPER('.$index['iva'].')''?'.$i),
  1535.                                         $qb->expr()->like('UPPER('.$index['importe'].')''?'.$i),
  1536.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaEmisionCompra'].", '%d/%m/%Y')"'?'.$i),
  1537.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaCobroCompra'].", '%d/%m/%Y')"'?'.$i),
  1538.                                         $qb->expr()->like('UPPER('.$index['importeCompra'].')''?'.$i)
  1539.                                     );
  1540.                                 }else{
  1541.                                     $expressions[]=$qb->expr()->orX(
  1542.                                         $qb->expr()->like('UPPER('.$index['cliente'].')''?'.$i),
  1543.                                         $qb->expr()->like($index['nifCliente'], '?'.$i),
  1544.                                         $qb->expr()->like($index['codigoCliente'], '?'.$i),
  1545.                                         $qb->expr()->like($index['referenciaContrato'], '?'.$i),
  1546.                                         $qb->expr()->like($index['cups'], '?'.$i),
  1547.                                         $qb->expr()->like($index['codigoArticulo'], '?'.$i),
  1548.                                         $qb->expr()->like($index['numero'], '?'.$i),
  1549.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')"'?'.$i),
  1550.                                         $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?'.$i),
  1551.                                         $qb->expr()->like('UPPER('.$index['suministro'].')''?'.$i),
  1552.                                         $qb->expr()->like('UPPER('.$index['comercial'].')''?'.$i),
  1553.                                         $qb->expr()->like('UPPER('.$index['tipo'].')''?'.$i),
  1554.                                         $qb->expr()->like('UPPER('.$index['tarifa'].')''?'.$i),
  1555.                                         $qb->expr()->like('UPPER('.$index['iva'].')''?'.$i),
  1556.                                         $qb->expr()->like('UPPER('.$index['importe'].')''?'.$i)
  1557.                                     );
  1558.                                 }
  1559.                             }
  1560.                             $qb->andWhere($qb->expr()->orX(
  1561.                                 $expressionA,
  1562.                                 $qb->expr()->andX(...$expressions)
  1563.                             ));
  1564.                             $i=0;
  1565.                             foreach ($searchArray as $s){
  1566.                                 $i++;
  1567.                                 $qb->setParameter($i"%".strtoupper($s)."%");
  1568.                             }
  1569.                             $qb->setParameter('0'"%".strtoupper($search)."%");
  1570.                         }else{
  1571.                             $qb->andWhere($expressionA)->setParameter('0'"%".strtoupper($search)."%");
  1572.                         }
  1573.                         $qbCount = clone $qb;
  1574.                         $result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
  1575.                             ->getQuery()
  1576.                             ->getSingleScalarResult();
  1577.                     }else{
  1578.                         $result['recordsFiltered']=$totalFacturas;
  1579.                     }
  1580.                     $qb->setMaxResults($pageSize)->setFirstResult($offset);
  1581.                     foreach ($order as $param){
  1582.                         $qb->addOrderBy$indexN[$param['column']],strtoupper($param['dir']) );
  1583.                     }
  1584.                     $facturas=$qb->getQuery()->getResult();
  1585.                     $result['recordsTotal']=$totalFacturas;
  1586.                     $result['draw']=intval($_GET['draw']);
  1587.                     foreach ($facturas as $factura){
  1588.                         try {
  1589.                             $contrato=$factura->getContrato();
  1590.                             $tarifa=$contrato->getProducto()->getTarifa();
  1591.                             $class='';
  1592.                             if( $factura->getDevuelta() ){
  1593.                                 $class='alert-warning';
  1594.                             }
  1595.                             $fechaDevolucion=$factura->getFechaDevolucion();
  1596.                             if( !empty($fechaDevolucion) ){
  1597.                                 $fechaDevolucion=$fechaDevolucion->format('Y-m-d');
  1598.                             }
  1599.                             $item=[
  1600.                                 "DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
  1601.                                 "DT_RowClass"=>$class,
  1602.                                 'cliente'=>$factura->getNombreCliente(),
  1603.                                 'numero'=>$factura->getNumeroFactura(),
  1604.                                 'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
  1605.                                 'fechaDevolucion'=>$fechaDevolucion,
  1606.                                 'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
  1607.                                 'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
  1608.                                 'tarifa'=>$tarifa->getNombre(),
  1609.                                 'devuelta'=>$factura->getDevuelta(),
  1610.                                 'importe'=>$factura->getTotalFactura(),
  1611.                                 'nifCliente'=>$factura->getNifCliente(),
  1612.                                 'nombreContacto'=>( $contrato->getCliente()->getNombreRepresentante()??$contrato->getCliente()->__toString() ),
  1613.                                 'telefono'=>$contrato->getCliente()->getTelefono(),
  1614.                                 'email'=>$contrato->getCliente()->getEmail(),
  1615.                                 'referenciaContrato'=>$contrato->getReferenciaContrato(),
  1616.                                 'cups'=>$contrato->getSuministro()->getCups(),
  1617.                                 'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
  1618.                                 'iva'=>$factura->getIva(),
  1619.                                 'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
  1620.                                 'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
  1621.                                 'comercial'=>$contrato->getComercial()
  1622.                             ];
  1623.                             if($factura->getClassName()=='Factura'){
  1624.                                 $estadoCompra=$factura->getEstadoCompra();
  1625.                                 $item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
  1626.                                 $item['estadoCompra']=( $estadoCompra $estadoCompra->getNombre() : null );
  1627.                                 $item['importeCompra']=$factura->getTotalCompra();
  1628.                                 $item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
  1629.                                 $item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
  1630.                                 $item['generica']=false;
  1631.                             }else{
  1632.                                 $item['fechaLectura']='otros conceptos';
  1633.                                 $item['generica']=true;
  1634.                             }
  1635.                             $array[]=$item;
  1636.                         }catch (Exception $e){
  1637.                             $logger->warning($e->getMessage());
  1638.                             ob_start();
  1639.                             var_dump($factura);
  1640.                             $result ob_get_clean();
  1641.                             $logger->warning($result);
  1642.                         }
  1643.                     }
  1644.                     $result['data']=$array??[];
  1645.                     $response=$result;
  1646.                 }
  1647.                 elseif( $list ){
  1648.                     $logger->info('Detected list=true');
  1649.                     $devuelta=($_GET['devuelta']??null);
  1650.                     if ($devuelta=='false')
  1651.                         $devuelta=true;
  1652.                     elseif ($devuelta=='true')
  1653.                         $devuelta=false;
  1654.                     else
  1655.                         $devuelta=null;
  1656.                     $dateFrom=date_create_from_format('Y-m-d',($_GET['dateFrom']??null));
  1657.                     if (!$dateFrom)
  1658.                         $dateFrom=null;
  1659.                     $dateTo=date_create_from_format('Y-m-d',($_GET['dateTo']??null));
  1660.                     if (!$dateTo)
  1661.                         $dateTo=null;
  1662.                     $dateLecturaFrom=date_create_from_format('Y-m-d',($_GET['dateLecturaFrom']??null));
  1663.                     if (!$dateLecturaFrom)
  1664.                         $dateLecturaFrom=null;
  1665.                     $dateLecturaTo=date_create_from_format('Y-m-d',($_GET['dateLecturaTo']??null));
  1666.                     if (!$dateLecturaTo)
  1667.                         $dateLecturaTo=null;
  1668.                     $tipoFactura=($_GET['tipoFactura']??null);
  1669.                     $tipoTarifa=($_GET['tipoTarifa']??null);
  1670.                     $genericas=(($tipoFactura=='todas'||$tipoFactura=='otros') && $dateLecturaFrom==null && $dateLecturaTo==null);
  1671.                     $logger->debug('devuelta='.var_export($devuelta,1));
  1672.                     $logger->debug('dateFrom='.var_export($dateFrom,1));
  1673.                     $logger->debug('dateTo='.var_export($dateTo,1));
  1674.                     try{
  1675.                         if($tipoFactura=='todas'||$tipoFactura=='suministro'){
  1676.                             $facturas=$facturaRepository->findByFilter(
  1677.                                 $dateFrom,
  1678.                                 $dateTo,
  1679.                                 $dateLecturaFrom,
  1680.                                 $dateLecturaTo,
  1681.                                 null,
  1682.                                 null,
  1683.                                 $devuelta,
  1684.                                 null
  1685.                             );
  1686.                         }
  1687.                         if ($genericas){
  1688.                             $facturasGenericas=$facturaGenericaRepository->findByFilter(
  1689.                                 $dateFrom,
  1690.                                 $dateTo,
  1691.                                 $devuelta
  1692.                             );
  1693.                         }
  1694.                         $facturas=array_merge($facturas??[], $facturasGenericas??[]);
  1695.                         foreach ($facturas as $factura){
  1696.                             try {
  1697.                                 $contrato=$factura->getContrato();
  1698.                                 $cliente=$contrato->getCliente();
  1699.                                 $tarifa=$contrato->getProducto()->getTarifa();
  1700.                                 $class='';
  1701.                                 if( $factura->getDevuelta() ){
  1702.                                     $class='alert-warning';
  1703.                                 }
  1704.                                 $fechaDevolucion=$factura->getFechaDevolucion();
  1705.                                 if( !empty($fechaDevolucion) ){
  1706.                                     $fechaDevolucion=$fechaDevolucion->format('Y-m-d');
  1707.                                 }
  1708.                                 $item=[
  1709.                                     "DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
  1710.                                     "DT_RowClass"=>$class,
  1711.                                     'cliente'=>$factura->getNombreCliente(),
  1712.                                     'numero'=>$factura->getNumeroFactura(),
  1713.                                     'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
  1714.                                     'fechaDevolucion'=>$fechaDevolucion,
  1715.                                     'fechaCargo'=>date_modify($factura->getFechaEmision(),'+5 day')->format('Y-m-d'),
  1716.                                     'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
  1717.                                     'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
  1718.                                     'tarifa'=>$tarifa->getNombre(),
  1719.                                     'devuelta'=>$factura->getDevuelta(),
  1720.                                     'importe'=>$factura->getTotalFactura(),
  1721.                                     'nifCliente'=>$factura->getNifCliente(),
  1722.                                     'nombreContacto'=>( $cliente->getNombreRepresentante()??$cliente->__toString() ),
  1723.                                     'email'=>$cliente->getEmail(),
  1724.                                     'telefono'=>$cliente->getTelefono(),
  1725.                                     'referenciaContrato'=>$contrato->getReferenciaContrato(),
  1726.                                     'cups'=>$contrato->getSuministro()->getCups(),
  1727.                                     'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
  1728.                                     'iva'=>$factura->getIva(),
  1729.                                     'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
  1730.                                     'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
  1731.                                     'comercial'=>$contrato->getComercial(),
  1732.                                     'iban'=>$contrato->getNumeroCuenta(),
  1733.                                     'direccionCliente'=>$factura->getDireccionCliente(),
  1734.                                     'cpCliente'=>$factura->getCpCliente(),
  1735.                                     'poblacionCliente'=>$factura->getPoblacionCliente(),
  1736.                                     'provinciaCliente'=>$factura->getProvinciaCliente(),
  1737.                                     'proveedor'=>$contrato->getProveedor()->getNombre()??$contrato->getProductoProveedor()->getNombre(),
  1738.                                 ];
  1739.                                 if($factura->getClassName()=='Factura'){
  1740.                                     $estadoCompra=$factura->getEstadoCompra();
  1741.                                     $item['inicioPeriodo']=date_modify($factura->getFechaLecturaAnterior(),'+1 day')->format('Y-m-d');
  1742.                                     $item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
  1743.                                     $item['estadoCompra']=( $estadoCompra $estadoCompra->getNombre() : null );
  1744.                                     $item['importeCompra']=$factura->getTotalCompra();
  1745.                                     $item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
  1746.                                     $item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
  1747.                                     $item['generica']=false;
  1748.                                 }else{
  1749.                                     $item['fechaLectura']='otros conceptos';
  1750.                                     $item['generica']=true;
  1751.                                 }
  1752.                                 $array[]=$item;
  1753.                             }catch (Exception $e){
  1754.                                 $logger->warning($e->getMessage());
  1755.                                 ob_start();
  1756.                                 var_dump($factura);
  1757.                                 $result ob_get_clean();
  1758.                                 $logger->warning($result);
  1759.                             }
  1760.                         }
  1761.                         $response=$array??null;
  1762.                     }catch (Exception $e){
  1763.                         $logger->warning($e->getMessage());
  1764.                     }
  1765.                 }
  1766.                 elseif( $values!==null ){
  1767.                     if( array_search('average',$values)!==false ){
  1768.                         try{
  1769.                             $factura=$facturaRepository->find$_GET['id'] );
  1770.                             $facturas=array_slice$facturaRepository->findOlderThan($factura),0,12 );
  1771.                             if(count($facturas)!==0){
  1772.                                 foreach ($facturas as $actual){
  1773.                                     $fechaInicial=$actual->getFechaLecturaAnterior();
  1774.                                     $fechaFinal=$actual->getFechaLectura();
  1775.                                     break;
  1776.                                 }
  1777.                                 $importeEnergia=0;
  1778.                                 $importeConsumo=0;
  1779.                                 $importeReactiva=0;
  1780.                                 foreach ($facturas as $actual){
  1781.                                     $importeEnergia+=$actual->getImporteEnergia();
  1782.                                     $importeConsumo+=$actual->getImporteConsumo();
  1783.                                     $importeReactiva+=$actual->getImporteReactiva();
  1784.                                     if($actual->getFechaLectura()>$fechaFinal){
  1785.                                         $fechaFinal=clone $actual->getFechaLectura();
  1786.                                     }
  1787.                                     if($actual->getFechaLecturaAnterior()<$fechaInicial){
  1788.                                         $fechaInicial=clone $actual->getFechaLecturaAnterior();
  1789.                                     }
  1790.                                 }
  1791.                                 $periodo=date_diff($fechaInicial,$fechaFinal)->days;
  1792.                                 $importeEnergia/=$periodo;
  1793.                                 $importeConsumo/=$periodo;
  1794.                                 $importeReactiva/=$periodo;
  1795.                                 $response['success']=true;
  1796.                                 $response['values']['average']['importeEnergia']=$importeEnergia;
  1797.                                 $response['values']['average']['importeConsumo']=$importeConsumo;
  1798.                                 $response['values']['average']['importeReactiva']=$importeReactiva;
  1799.                                 $response['values']['fechaIncial']=date_format($fechaInicial,'Y-m-d');
  1800.                                 $response['values']['fechaFinal']=date_format($fechaFinal,'Y-m-d');
  1801.                                 $response['values']['periodo']=date_diff($fechaInicial,$fechaFinal)->days;
  1802.                             }else{
  1803.                                 $response['success']=true;
  1804.                                 $response['values']['average']=0;
  1805.                                 $response['values']['fechaIncial']=0;
  1806.                                 $response['values']['fechaFinal']=0;
  1807.                                 $response['values']['periodo']=0;
  1808.                             }
  1809.                         }catch (Exception $exception){
  1810.                             $logger->alert$exception->getMessage() );
  1811.                             $response['success']=false;
  1812.                         }
  1813.                     }
  1814.                     if( array_search('devuelta',$values)!==false ){
  1815.                         try{
  1816.                             $factura=$facturaRepository->find$_GET['id'] );
  1817.                             $response['devuelta']=$factura->getDevuelta();
  1818.                         }catch (Exception $exception){
  1819.                             $logger->alert$exception->getMessage() );
  1820.                             $response['success']=false;
  1821.                         }
  1822.                     }
  1823.                 }
  1824.             }
  1825.             elseif( $request->isMethod('post') ){
  1826.                 if($_POST['action']=='update'){
  1827.                     $values=($_POST['values']??null);
  1828.                     if( array_key_exists('devuelta',$values)!==false ){
  1829.                         try{
  1830.                             if(is_array($_POST['id'])){
  1831.                                 $status=[];
  1832.                                 foreach ($_POST['id'] as $rowId){
  1833.                                     $successful=false;
  1834.                                     if(str_starts_with($rowId'facturaGenerica')){
  1835.                                         $id=str_replace('facturaGenerica',''$rowId);
  1836.                                         $factura=$facturaGenericaRepository->find$id );
  1837.                                         $successful=true;
  1838.                                     }
  1839.                                     elseif(str_starts_with($rowId'factura')){
  1840.                                         $id=str_replace('factura',''$rowId);
  1841.                                         $factura=$facturaGenericaRepository->find$id );
  1842.                                         $successful=true;
  1843.                                     }
  1844.                                     if($successful){
  1845.                                         $env=$_SERVER['APP_ENV']??'finkaluz';
  1846.                                         $factura->setDevuelta(true);
  1847.                                         $factura->setFechaDevolucion(date_create());
  1848.                                         $factura->getContrato()->setFacturaDevuelta(true);
  1849.                                         //Notificación email
  1850.                                         try {
  1851.                                             switch ($env){
  1852.                                                 case 'finkaluz':case 'emfra':
  1853.                                                     $from 'finkaluz@finkaluz.com';
  1854.                                                     $body=$this->renderView('email/finkaluz.facturaDevuelta.html.twig',['factura'=>$factura]);
  1855.                                                     break;
  1856.                                                 case 'onda':
  1857.                                                     $from 'facturacion@ondaenergia.es';
  1858.                                                     $body=$this->renderView('email/onda.facturaDevuelta.html.twig',['factura'=>$factura]);
  1859.                                                     break;
  1860.                                                 case 'digitel':
  1861.                                                     $from 'facturacionluz@itdigitel.es';
  1862.                                                     $body=$this->renderView('email/digitel.facturaDevuelta.html.twig',['factura'=>$factura]);
  1863.                                                     break;
  1864.                                                 case 'apolo':
  1865.                                                     $from 'clientes@vibraenergies.es';
  1866.                                                     $body=$this->renderView('email/apolo.facturaDevuelta.html.twig',['factura'=>$factura]);
  1867.                                                     break;
  1868.                                                 case 'e3':
  1869.                                                     $from 'e3powerenergy@e3powerenergy.com';
  1870.                                                     $body=$this->renderView('email/e3/facturaDevuelta.html.twig',['factura'=>$factura]);
  1871.                                                     break;
  1872.                                                 default:
  1873.                                                     $from 'contacto@energaze.com';
  1874.                                                     $body=$this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]);
  1875.                                                     break;
  1876.                                             }
  1877.                                             $message = (new Email())
  1878.                                                 ->subject('FACTURA DEVUELTA')
  1879.                                                 ->from($from)
  1880.                                                 ->to($factura->getContrato()->getCliente()->getEmail())
  1881.                                                 ->html($body);
  1882.                                             $mailer->send($message);
  1883.                                             $status[]='success';
  1884.                                         }catch (\Exception $exception){
  1885.                                             $logger->info($exception->getMessage());
  1886.                                             $status[]='error';
  1887.                                         }
  1888.                                         $entityManager->flush();
  1889.                                     }
  1890.                                 }
  1891.                                 $response['success']=in_array('success'$status);
  1892.                             }else{
  1893.                                 $factura=$facturaRepository->find$_POST['id'] );
  1894.                                 $env=$_SERVER['APP_ENV']??'finkaluz';
  1895.                                 if( $values['devuelta']==='true' || $values['devuelta']===true ){
  1896.                                     $factura->setDevuelta(true);
  1897.                                     $factura->setFechaDevolucion(date_create());
  1898.                                     $factura->getContrato()->setFacturaDevuelta(true);
  1899.                                     //Notificación email
  1900.                                     try {
  1901.                                         switch ($env){
  1902.                                             case 'finkaluz':case 'emfra':
  1903.                                                 $from 'finkaluz@finkaluz.com';
  1904.                                                 $body=$this->renderView('email/finkaluz.facturaDevuelta.html.twig',['factura'=>$factura]);
  1905.                                                 break;
  1906.                                             case 'onda':
  1907.                                                 $from 'facturacion@ondaenergia.es';
  1908.                                                 $body=$this->renderView('email/onda.facturaDevuelta.html.twig',['factura'=>$factura]);
  1909.                                                 break;
  1910.                                             case 'digitel':
  1911.                                                 $from 'facturacionluz@itdigitel.es';
  1912.                                                 $body=$this->renderView('email/digitel.facturaDevuelta.html.twig',['factura'=>$factura]);
  1913.                                                 break;
  1914.                                             case 'apolo':
  1915.                                                 $from 'clientes@vibraenergies.es';
  1916.                                                 $body=$this->renderView('email/apolo.facturaDevuelta.html.twig',['factura'=>$factura]);
  1917.                                                 break;
  1918.                                             case 'e3':
  1919.                                                 $from 'e3powerenergy@e3powerenergy.com';
  1920.                                                 $body=$this->renderView('email/e3/facturaDevuelta.html.twig',['factura'=>$factura]);
  1921.                                                 break;
  1922.                                             default:
  1923.                                                 $from 'contacto@energaze.com';
  1924.                                                 $body=$this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]);
  1925.                                                 break;
  1926.                                         }
  1927.                                         $message = (new Email())
  1928.                                             ->subject('FACTURA DEVUELTA')
  1929.                                             ->from($from)
  1930.                                             ->to($factura->getContrato()->getCliente()->getEmail())
  1931.                                             ->html($body);
  1932.                                         $mailer->send($message);
  1933.                                     }catch (\Exception $exception){
  1934.                                         $logger->info($exception->getMessage());
  1935.                                     }
  1936.                                 }elseif ( $values['devuelta']=='false' || $values['devuelta']===false ){
  1937.                                     $factura->setDevuelta(false);
  1938.                                     //Notificación email
  1939.                                     try {
  1940.                                         switch ($env){
  1941.                                             case 'finkaluz':case 'emfra':
  1942.                                                 $from 'finkaluz@finkaluz.com';
  1943.                                                 $body=$this->renderView('email/finkaluz.facturaPagada.html.twig',['factura'=>$factura]);
  1944.                                                 break;
  1945.                                             case 'onda':
  1946.                                                 $from 'facturacion@ondaenergia.es';
  1947.                                                 $body=$this->renderView('email/onda.facturaPagada.html.twig',['factura'=>$factura]);
  1948.                                                 break;
  1949.                                             case 'digitel':
  1950.                                                 $from 'facturacionluz@itdigitel.es';
  1951.                                                 $body=$this->renderView('email/digitel.facturaPagada.html.twig',['factura'=>$factura]);
  1952.                                                 break;
  1953.                                             case 'apolo':
  1954.                                                 $from 'clientes@vibraenergies.es';
  1955.                                                 $body=$this->renderView('email/apolo.facturaPagada.html.twig',['factura'=>$factura]);
  1956.                                                 break;
  1957.                                             case 'e3':
  1958.                                                 $from 'e3powerenergy@e3powerenergy.com';
  1959.                                                 $body=$this->renderView('email/e3/facturaPagada.html.twig',['factura'=>$factura]);
  1960.                                                 break;
  1961.                                             default:
  1962.                                                 $from 'contacto@energaze.com';
  1963.                                                 $body=$this->renderView('email/facturaPagada.html.twig',['factura'=>$factura]);
  1964.                                                 break;
  1965.                                         }
  1966.                                         $message = (new Email())
  1967.                                             ->subject('FACTURA PAGADA')
  1968.                                             ->from($from)
  1969.                                             ->to($factura->getContrato()->getCliente()->getEmail())
  1970.                                             ->html($body);
  1971.                                         $mailer->send($message);
  1972.                                     }catch (\Exception $exception){
  1973.                                         $logger->info($exception->getMessage());
  1974.                                     }
  1975.                                 }else{
  1976.                                     throw new Exception('Invalid value given. Only values taken are boolean and "true" or "false" string.');
  1977.                                 }
  1978.                                 $entityManager->flush();
  1979.                                 $response['success']=true;
  1980.                             }
  1981.                         }catch (Exception $exception){
  1982.                             $logger->alert$exception->getMessage() );
  1983.                             $response['success']=false;
  1984.                         }
  1985.                     }
  1986.                     if( array_key_exists('compraPagada',$values)!==false ){
  1987.                         if(is_array($_POST['id'])){
  1988.                             $status=[];
  1989.                             foreach ($_POST['id'] as $rowId){
  1990.                                 $successful=false;
  1991.                                 if(!str_starts_with($rowId'facturaGenerica') && str_starts_with($rowId'factura')){
  1992.                                     $id=str_replace('factura',''$rowId);
  1993.                                     $factura=$facturaRepository->find$id );
  1994.                                     $successful=true;
  1995.                                 }
  1996.                                 if($successful){
  1997.                                     $factura->setEstadoCompra($estadoCompraFacturaRepository->findOneBy(['nombre'=>'Pagada']));
  1998.                                     $status[]='success';
  1999.                                     $entityManager->flush();
  2000.                                 }
  2001.                             }
  2002.                             $response['success']=in_array('success'$status);
  2003.                         }
  2004.                     }
  2005.                 }
  2006.                 elseif($_POST['action']=='send'){
  2007.                     if(is_array($_POST['id'])){
  2008.                         $logger = new Logger('factura_logger');
  2009.                         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/email.log'Logger::DEBUG));
  2010.                         $status=[];
  2011.                         foreach ($_POST['id'] as $rowId){
  2012.                             if(str_starts_with($rowId'facturaGenerica')){
  2013.                                 $logger->info($rowId);
  2014.                                 $id=str_replace('facturaGenerica',''$rowId);
  2015.                                 $factura=$facturaGenericaRepository->find$id );
  2016.                                 $entidad $bancoRepository->findByCuenta($factura->getCcc());
  2017.                                 $tarifa $factura->getTarifa();
  2018.                                 if ($tarifa->getTipoTarifa() == 'Electricidad') {
  2019.                                     $subject 'FACTURA ELECTRICIDAD';
  2020.                                     $tipo='electricidad';
  2021.                                 }
  2022.                                 else {
  2023.                                     $subject 'FACTURA GAS';
  2024.                                     $tipo='gas';
  2025.                                 }
  2026.                                 $importeTotal=0;
  2027.                                 foreach ($factura->getConceptos() as $concepto){
  2028.                                     $importeTotal+=$concepto->getImporte();
  2029.                                 }
  2030.                                 $importeIva=round($factura->getIva()*$importeTotal/100,2);
  2031.                                 $totalFactura=round($importeTotal+$importeIva,2);
  2032.                                 if( $totalFactura!==$factura->getTotalFactura() ) {
  2033.                                     $factura->setTotalFactura($totalFactura);
  2034.                                     $entityManager->flush();
  2035.                                 }
  2036.                                 $params=[
  2037.                                     'factura' => $factura,
  2038.                                     'entidad'=>$entidad,
  2039.                                     'importeTotal'=>$importeTotal,
  2040.                                     'importeIva'=>$importeIva,
  2041.                                     'totalFactura'=>$totalFactura,
  2042.                                 ];
  2043.                                 switch ($_SERVER['APP_ENV']??'finkaluz'){
  2044.                                     case 'finkaluz':
  2045.                                         $html=$this->renderView('factura_generica/finkaluz.factura.pdf.twig'$params);
  2046.                                         break;
  2047.                                     case 'emfra':
  2048.                                         $html=$this->renderView('factura_generica/emfra.factura.pdf.twig'$params);
  2049.                                         break;
  2050.                                     case 'onda':
  2051.                                         $html=$this->renderView('factura_generica/onda.factura.pdf.twig'$params);
  2052.                                         break;
  2053.                                     case 'digitel':
  2054.                                         $html=$this->renderView('factura_generica/digitel.factura.pdf.twig'$params);
  2055.                                         break;
  2056.                                     case 'apolo':
  2057.                                         $html=$this->renderView('factura_generica/apolo.factura.pdf.twig'$params);
  2058.                                         break;
  2059.                                     case 'e3':
  2060.                                         $html=$this->renderView('factura_generica/e3/factura.pdf.twig'$params);
  2061.                                         break;
  2062.                                     default:
  2063.                                         $html=$this->renderView('factura_generica/factura.pdf.twig'$params);
  2064.                                         break;
  2065.                                 }
  2066.                                 try {
  2067.                                     unlink(__DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
  2068.                                 } catch (\Exception $exception) {
  2069.                                 }
  2070.                                 $pdf->generateFromHtml(
  2071.                                     $html,
  2072.                                     __DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf'
  2073.                                 );
  2074.                                 try {
  2075.                                     switch ($_SERVER['APP_ENV']??'finkaluz'){
  2076.                                         case 'finkaluz':
  2077.                                             $body=$this->renderView('email/finkaluz.factura.html.twig',['tipo'=>$tipo]);
  2078.                                             $from='finkaluz@finkaluz.com';
  2079.                                             break;
  2080.                                         case 'emfra':
  2081.                                             $body=$this->renderView('email/emfra.factura.html.twig',['tipo'=>$tipo]);
  2082.                                             $from='finkaluz@finkaluz.com';
  2083.                                             break;
  2084.                                         case 'onda':
  2085.                                             $body=$this->renderView('email/onda.factura.html.twig',['tipo'=>$tipo]);
  2086.                                             $from='facturacion@ondaenergia.es';
  2087.                                             break;
  2088.                                         case 'digitel':
  2089.                                             $body=$this->renderView('email/digitel.factura.html.twig',['tipo'=>$tipo]);
  2090.                                             $from='facturacionluz@itdigitel.es';
  2091.                                             break;
  2092.                                         case 'apolo':
  2093.                                             $body=$this->renderView('email/apolo.factura.html.twig',['tipo'=>$tipo]);
  2094.                                             $from='clientes@vibraenergies.es';
  2095.                                             break;
  2096.                                         case 'e3':
  2097.                                             $body=$this->renderView('email/e3/factura.html.twig',['tipo'=>$tipo]);
  2098.                                             $from='e3powerenergy@e3powerenergy.com';
  2099.                                             break;
  2100.                                         default:
  2101.                                             $body=$this->renderView('email/factura.html.twig',['tipo'=>$tipo]);
  2102.                                             $from='contacto@energaze.com';
  2103.                                             break;
  2104.                                     }
  2105.                                     $message = (new Email())
  2106.                                         ->subject($subject)
  2107.                                         ->from($from)
  2108.                                         ->to($factura->getContrato()->getCliente()->getEmail())
  2109.                                         ->html($body)
  2110.                                         ->attachFromPath(__DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
  2111.                                     $mailer->send($message);
  2112.                                     $status[]='success';
  2113.                                 }catch (\Exception $exception){
  2114.                                     $status[]='error';
  2115.                                     $logger->info($exception->getMessage());
  2116.                                 }
  2117.                             }
  2118.                             elseif(str_starts_with($rowId'factura')){
  2119.                                 $logger->info($rowId);
  2120.                                 $id=str_replace('factura',''$rowId);
  2121.                                 $logger->info($id);
  2122.                                 $factura=$facturaRepository->find$id );
  2123.                                 $logger->info($factura->getNumeroFactura());
  2124.                                 $urlImagen $request->request->get("urlImagen");
  2125.                                 $facturas $facturaRepository->findBy(['contrato' => $factura->getContrato()], ['fechaLectura' => 'ASC']);
  2126.                                 $tarifa $factura->getTarifa();
  2127.                                 $entidad $bancoRepository->findByCuenta($factura->getCcc());
  2128.                                 $consumoAcumulado '0';
  2129.                                 $consumoMedio '0';
  2130.                                 if($tarifa->getTipoTarifa()=='Electricidad'){
  2131.                                     $subject 'FACTURA ELECTRICIDAD';
  2132.                                     $tipo='electricidad';
  2133.                                     if($tarifa=='3.0A' || $tarifa=='3.1A'){
  2134.                                         $periodoFacturacion=date_diff$factura->getFechaLecturaAnterior(), $factura->getFechaLectura() )->days;
  2135.                                         $consumoP1Facturado=$factura->getConsumoP1()+$factura->getConsumoP4();
  2136.                                         $consumoP2Facturado=$factura->getConsumoP2()+$factura->getConsumoP5();
  2137.                                         $consumoP3Facturado=$factura->getConsumoP3()+$factura->getConsumoP6();
  2138.                                         $potenciaP1Facturada=$factura->getPotenciaFacturada('P1');
  2139.                                         $potenciaP2Facturada=$factura->getPotenciaFacturada('P2');
  2140.                                         $potenciaP3Facturada=$factura->getPotenciaFacturada('P3');
  2141.                                         $totalPotenciaP1=round($potenciaP1Facturada*$factura->getPrecioPotenciaP1()*$periodoFacturacion,2);
  2142.                                         $totalPotenciaP2=round($potenciaP2Facturada*$factura->getPrecioPotenciaP2()*$periodoFacturacion,2);
  2143.                                         $totalPotenciaP3=round($potenciaP3Facturada*$factura->getPrecioPotenciaP3()*$periodoFacturacion,2);
  2144.                                         $totalPotencia=$totalPotenciaP1+$totalPotenciaP2+$totalPotenciaP3;
  2145.                                         $totalEnergiaP1=round($consumoP1Facturado*$factura->getPrecioEnergiaP1(),2);
  2146.                                         $totalEnergiaP2=round($consumoP2Facturado*$factura->getPrecioEnergiaP2(),2);
  2147.                                         $totalEnergiaP3=round($consumoP3Facturado*$factura->getPrecioEnergiaP3(),2);
  2148.                                         $totalEnergia=$totalEnergiaP1+$totalEnergiaP2+$totalEnergiaP3;
  2149.                                         $reactivaP1=$factura->getReactivaP1()+$factura->getReactivaP4();
  2150.                                         $reactivaP2=$factura->getReactivaP2()+$factura->getReactivaP5();
  2151.                                         $excesoReactivaP1=$reactivaP1-0.33*$consumoP1Facturado;
  2152.                                         $excesoReactivaP2=$reactivaP2-0.33*$consumoP2Facturado;
  2153.                                         if($excesoReactivaP1<0)
  2154.                                             $excesoReactivaP1=0;
  2155.                                         if($excesoReactivaP2<0)
  2156.                                             $excesoReactivaP2=0;
  2157.                                         $importeReactivaP1=round($excesoReactivaP1*$factura->getPrecioReactivaP1(),2);
  2158.                                         $importeReactivaP2=round($excesoReactivaP2*$factura->getPrecioReactivaP2(),2);
  2159.                                         $totalReactiva=$importeReactivaP1+$importeReactivaP2;
  2160.                                         $subtotal=round($totalEnergia+$totalPotencia+$totalReactiva,2);
  2161.                                         $importeImpuesto=round($factura->getImpuesto()*$subtotal/100,2);
  2162.                                         $importeAlquiler=round($periodoFacturacion*$factura->getAlquilerEquipos(),2);
  2163.                                         $otrosConceptos=0;
  2164.                                         foreach ($factura->getConceptos() as $concepto){
  2165.                                             $otrosConceptos+=round($concepto->getImporte(),2);
  2166.                                         }
  2167.                                         $importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
  2168.                                         $importeIva=round($factura->getIva()*$importeTotal/100,2);
  2169.                                         $totalFactura=round($importeTotal+$importeIva,2);
  2170.                                         if( $totalFactura!==$factura->getTotalFactura() ){
  2171.                                             $factura->setTotalFactura($totalFactura);
  2172.                                             $entityManager->flush();
  2173.                                         }
  2174.                                     }
  2175.                                     else{
  2176.                                         $periodoFacturacion=date_diff$factura->getFechaLecturaAnterior(), $factura->getFechaLectura() )->days;
  2177.                                         $consumoP1Facturado=$factura->getConsumoP1();
  2178.                                         $consumoP2Facturado=$factura->getConsumoP2();
  2179.                                         $consumoP3Facturado=$factura->getConsumoP3();
  2180.                                         $consumoP4Facturado=$factura->getConsumoP4();
  2181.                                         $consumoP5Facturado=$factura->getConsumoP5();
  2182.                                         $consumoP6Facturado=$factura->getConsumoP6();
  2183.                                         $potenciaP1Facturada=$factura->getPotenciaFacturada('P1');
  2184.                                         $potenciaP2Facturada=$factura->getPotenciaFacturada('P2');
  2185.                                         $potenciaP3Facturada=$factura->getPotenciaFacturada('P3');
  2186.                                         $potenciaP4Facturada=$factura->getPotenciaFacturada('P4');
  2187.                                         $potenciaP5Facturada=$factura->getPotenciaFacturada('P5');
  2188.                                         $potenciaP6Facturada=$factura->getPotenciaFacturada('P6');
  2189.                                         $totalPotenciaP1=round($potenciaP1Facturada*$factura->getPrecioPotenciaP1()*$periodoFacturacion,2);
  2190.                                         $totalPotenciaP2=round($potenciaP2Facturada*$factura->getPrecioPotenciaP2()*$periodoFacturacion,2);
  2191.                                         $totalPotenciaP3=round($potenciaP3Facturada*$factura->getPrecioPotenciaP3()*$periodoFacturacion,2);
  2192.                                         $totalPotenciaP4=round($potenciaP4Facturada*$factura->getPrecioPotenciaP4()*$periodoFacturacion,2);
  2193.                                         $totalPotenciaP5=round($potenciaP5Facturada*$factura->getPrecioPotenciaP5()*$periodoFacturacion,2);
  2194.                                         $totalPotenciaP6=round($potenciaP6Facturada*$factura->getPrecioPotenciaP6()*$periodoFacturacion,2);
  2195.                                         $totalPotencia=$totalPotenciaP1+$totalPotenciaP2+$totalPotenciaP3+$totalPotenciaP4+$totalPotenciaP5+$totalPotenciaP6;
  2196.                                         $totalEnergiaP1=round($consumoP1Facturado*$factura->getPrecioEnergiaP1(),2);
  2197.                                         $totalEnergiaP2=round($consumoP2Facturado*$factura->getPrecioEnergiaP2(),2);
  2198.                                         $totalEnergiaP3=round($consumoP3Facturado*$factura->getPrecioEnergiaP3(),2);
  2199.                                         $totalEnergiaP4=round($consumoP4Facturado*$factura->getPrecioEnergiaP4(),2);
  2200.                                         $totalEnergiaP5=round($consumoP5Facturado*$factura->getPrecioEnergiaP5(),2);
  2201.                                         $totalEnergiaP6=round($consumoP6Facturado*$factura->getPrecioEnergiaP6(),2);
  2202.                                         $totalEnergia=$totalEnergiaP1+$totalEnergiaP2+$totalEnergiaP3+$totalEnergiaP4+$totalEnergiaP5+$totalEnergiaP6;
  2203.                                         $reactivaP1=$factura->getReactivaP1();
  2204.                                         $reactivaP2=$factura->getReactivaP2();
  2205.                                         $reactivaP3=$factura->getReactivaP3();
  2206.                                         $reactivaP4=$factura->getReactivaP4();
  2207.                                         $reactivaP5=$factura->getReactivaP5();
  2208.                                         $reactivaP6=$factura->getReactivaP6();
  2209.                                         $excesoReactivaP1=$reactivaP1-0.33*$consumoP1Facturado;
  2210.                                         $excesoReactivaP2=$reactivaP2-0.33*$consumoP2Facturado;
  2211.                                         $excesoReactivaP3=$reactivaP3-0.33*$consumoP3Facturado;
  2212.                                         $excesoReactivaP4=$reactivaP4-0.33*$consumoP4Facturado;
  2213.                                         $excesoReactivaP5=$reactivaP5-0.33*$consumoP5Facturado;
  2214.                                         $excesoReactivaP6=$reactivaP6-0.33*$consumoP6Facturado;
  2215.                                         if($excesoReactivaP1<0)
  2216.                                             $excesoReactivaP1=0;
  2217.                                         if($excesoReactivaP2<0)
  2218.                                             $excesoReactivaP2=0;
  2219.                                         if($excesoReactivaP3<0)
  2220.                                             $excesoReactivaP3=0;
  2221.                                         if($excesoReactivaP4<0)
  2222.                                             $excesoReactivaP4=0;
  2223.                                         if($excesoReactivaP5<0)
  2224.                                             $excesoReactivaP5=0;
  2225.                                         if($excesoReactivaP6<0)
  2226.                                             $excesoReactivaP6=0;
  2227.                                         $importeReactivaP1=round($excesoReactivaP1*$factura->getPrecioReactivaP1(),2);
  2228.                                         $importeReactivaP2=round($excesoReactivaP2*$factura->getPrecioReactivaP2(),2);
  2229.                                         $importeReactivaP3=round($excesoReactivaP3*$factura->getPrecioReactivaP3(),2);
  2230.                                         $importeReactivaP4=round($excesoReactivaP4*$factura->getPrecioReactivaP4(),2);
  2231.                                         $importeReactivaP5=round($excesoReactivaP5*$factura->getPrecioReactivaP5(),2);
  2232.                                         $importeReactivaP6=round($excesoReactivaP6*$factura->getPrecioReactivaP6(),2);
  2233.                                         $totalReactiva=$importeReactivaP1+$importeReactivaP2+$importeReactivaP3+$importeReactivaP4+$importeReactivaP5+$importeReactivaP6;
  2234.                                         $subtotal=round($totalEnergia+$totalPotencia+$totalReactiva,2);
  2235.                                         $importeImpuesto=round($factura->getImpuesto()*$subtotal/100,2);
  2236.                                         $importeAlquiler=round($periodoFacturacion*$factura->getAlquilerEquipos(),2);
  2237.                                         $otrosConceptos=0;
  2238.                                         foreach ($factura->getConceptos() as $concepto){
  2239.                                             $otrosConceptos+=round($concepto->getImporte(),2);
  2240.                                         }
  2241.                                         $importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
  2242.                                         $importeIva=round($factura->getIva()*$importeTotal/100,2);
  2243.                                         $totalFactura=round($importeTotal+$importeIva,2);
  2244.                                         if( $totalFactura!==$factura->getTotalFactura() ){
  2245.                                             $factura->setTotalFactura($totalFactura);
  2246.                                             $entityManager->flush();
  2247.                                         }
  2248.                                         //throw $this->createNotFoundException('No se ha encontrado la factura');
  2249.                                     }
  2250.                                     //Grafica
  2251.                                     $indiceFactura=array_search($factura$facturas);
  2252.                                     $arrayP=[false,false,false,false,false,false];
  2253.                                     if($indiceFactura<12){
  2254.                                         for($i=0;$i<=$indiceFactura && $i<12;$i++){
  2255.                                             $consumoMedio+=$facturas[$i]->getTotalFactura();
  2256.                                             $consumoAcumulado+=$facturas[$i]->getConsumo();
  2257.                                             $tarifaI=$facturas[$i]->getTarifa();
  2258.                                             $arrayPI=[
  2259.                                                 $tarifaI->getEnergiaP1(),
  2260.                                                 $tarifaI->getEnergiaP2(),
  2261.                                                 $tarifaI->getEnergiaP3(),
  2262.                                                 $tarifaI->getEnergiaP4(),
  2263.                                                 $tarifaI->getEnergiaP5(),
  2264.                                                 $tarifaI->getEnergiaP6()
  2265.                                             ];
  2266.                                             if(!$arrayP[0])
  2267.                                                 $arrayP[0]=$arrayPI[0];
  2268.                                             if(!$arrayP[1])
  2269.                                                 $arrayP[1]=$arrayPI[1];
  2270.                                             if(!$arrayP[2])
  2271.                                                 $arrayP[2]=$arrayPI[2];
  2272.                                             if(!$arrayP[3])
  2273.                                                 $arrayP[3]=$arrayPI[3];
  2274.                                             if(!$arrayP[4])
  2275.                                                 $arrayP[4]=$arrayPI[4];
  2276.                                             if(!$arrayP[5])
  2277.                                                 $arrayP[5]=$arrayPI[5];
  2278.                                             /*if ( $tarifaI=='2.0A' || $tarifaI=='2.1A' ){
  2279.                                                 $datosGrafica[]=[
  2280.                                                     str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
  2281.                                                     $facturas[$i]->getConsumoP1(),
  2282.                                                     0,
  2283.                                                     0
  2284.                                                 ];
  2285.                                                 if ( 1>($numeroP??0) ){
  2286.                                                     $numeroP=1;
  2287.                                                 }
  2288.                                             }elseif ( $tarifaI=='2.0DHA' || $tarifaI=='2.1DHA' ){
  2289.                                                 $datosGrafica[]=[
  2290.                                                     str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
  2291.                                                     $facturas[$i]->getConsumoP1(),
  2292.                                                     0,
  2293.                                                     $facturas[$i]->getConsumoP3()
  2294.                                                 ];
  2295.                                                 if ( 2>($numeroP??0) ){
  2296.                                                     $numeroP=2;
  2297.                                                 }
  2298.                                             }else*/
  2299.                                             switch( $tarifaI->getNombre() ){
  2300.                                                 case '3.0A': case '3.1A':
  2301.                                                 $datosGrafica[]=[
  2302.                                                     str_replace('.','',strtolowerstrftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
  2303.                                                     $facturas[$i]->getConsumoP1()+$facturas[$i]->getConsumoP4(),
  2304.                                                     $facturas[$i]->getConsumoP2()+$facturas[$i]->getConsumoP5(),
  2305.                                                     $facturas[$i]->getConsumoP3()+$facturas[$i]->getConsumoP6(),
  2306.                                                     0,
  2307.                                                     0,
  2308.                                                     0
  2309.                                                 ];
  2310.                                                 break;
  2311.                                                 default:
  2312.                                                     $datosGrafica[]=[
  2313.                                                         str_replace('.','',strtolowerstrftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
  2314.                                                         $facturas[$i]->getConsumoP1()??0,
  2315.                                                         $facturas[$i]->getConsumoP2()??0,
  2316.                                                         $facturas[$i]->getConsumoP3()??0,
  2317.                                                         $facturas[$i]->getConsumoP4()??0,
  2318.                                                         $facturas[$i]->getConsumoP5()??0,
  2319.                                                         $facturas[$i]->getConsumoP6()??0,
  2320.                                                     ];
  2321.                                                     break;
  2322.                                             }
  2323.                                         }
  2324.                                         $consumoMedio=$consumoMedio/($indiceFactura+1);
  2325.                                         $numeroP=countarray_filter($arrayP) );
  2326.                                     }
  2327.                                     else{
  2328.                                         for($i=11;$i>=0;$i--){
  2329.                                             $n=$indiceFactura-$i;
  2330.                                             $consumoMedio+=$facturas[$n]->getTotalFactura();
  2331.                                             $consumoAcumulado+=$facturas[$n]->getConsumo();
  2332.                                             $tarifaI=$facturas[$n]->getTarifa();
  2333.                                             $arrayPI=[
  2334.                                                 $tarifaI->getEnergiaP1(),
  2335.                                                 $tarifaI->getEnergiaP2(),
  2336.                                                 $tarifaI->getEnergiaP3(),
  2337.                                                 $tarifaI->getEnergiaP4(),
  2338.                                                 $tarifaI->getEnergiaP5(),
  2339.                                                 $tarifaI->getEnergiaP6()
  2340.                                             ];
  2341.                                             if(!$arrayP[0])
  2342.                                                 $arrayP[0]=$arrayPI[0];
  2343.                                             if(!$arrayP[1])
  2344.                                                 $arrayP[1]=$arrayPI[1];
  2345.                                             if(!$arrayP[2])
  2346.                                                 $arrayP[2]=$arrayPI[2];
  2347.                                             if(!$arrayP[3])
  2348.                                                 $arrayP[3]=$arrayPI[3];
  2349.                                             if(!$arrayP[4])
  2350.                                                 $arrayP[4]=$arrayPI[4];
  2351.                                             if(!$arrayP[5])
  2352.                                                 $arrayP[5]=$arrayPI[5];
  2353.                                             /*if ( $tarifaI=='2.0A' || $tarifaI=='2.1A' ){
  2354.                                                 $datosGrafica[]=[
  2355.                                                     str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
  2356.                                                     $facturas[$n]->getConsumoP1(),
  2357.                                                     0,
  2358.                                                     0
  2359.                                                 ];
  2360.                                                 if ( 1>($numeroP??0) ){
  2361.                                                     $numeroP=1;
  2362.                                                 }
  2363.                                             }elseif ( $tarifaI=='2.0DHA' || $tarifaI=='2.1DHA' ){
  2364.                                                 $datosGrafica[]=[
  2365.                                                     str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
  2366.                                                     $facturas[$n]->getConsumoP1(),
  2367.                                                     0,
  2368.                                                     $facturas[$n]->getConsumoP3()
  2369.                                                 ];
  2370.                                                 if ( 2>($numeroP??0) ){
  2371.                                                     $numeroP=2;
  2372.                                                 }
  2373.                                             }elseif( $tarifaI=='3.0A' || $tarifaI=='3.1A' ){
  2374.                                                 $datosGrafica[]=[
  2375.                                                     str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
  2376.                                                     $facturas[$n]->getConsumoP1()+$facturas[$n]->getConsumoP4(),
  2377.                                                     $facturas[$n]->getConsumoP2()+$facturas[$n]->getConsumoP5(),
  2378.                                                     $facturas[$n]->getConsumoP3()+$facturas[$n]->getConsumoP6(),
  2379.                                                 ];
  2380.                                             }*/
  2381.                                         }
  2382.                                         $consumoMedio=$consumoMedio/12;;
  2383.                                         $numeroP=countarray_filter($arrayP) );
  2384.                                     }
  2385.                                     $params=[
  2386.                                         'factura' => $factura,
  2387.                                         'entidad'=>$entidad,
  2388.                                         'consumoMedio'=>$consumoMedio,
  2389.                                         'consumoAcumulado'=>$consumoAcumulado,
  2390.                                         'periodoFacturacion'=>$periodoFacturacion,
  2391.                                         'potenciaP1Facturada'=>$potenciaP1Facturada??null,
  2392.                                         'potenciaP2Facturada'=>$potenciaP2Facturada??null,
  2393.                                         'potenciaP3Facturada'=>$potenciaP3Facturada??null,
  2394.                                         'potenciaP4Facturada'=>$potenciaP4Facturada??null,
  2395.                                         'potenciaP5Facturada'=>$potenciaP5Facturada??null,
  2396.                                         'potenciaP6Facturada'=>$potenciaP6Facturada??null,
  2397.                                         'totalPotenciaP1'=>$totalPotenciaP1,
  2398.                                         'totalPotenciaP2'=>$totalPotenciaP2??null,
  2399.                                         'totalPotenciaP3'=>$totalPotenciaP3??null,
  2400.                                         'totalPotenciaP4'=>$totalPotenciaP4??null,
  2401.                                         'totalPotenciaP5'=>$totalPotenciaP5??null,
  2402.                                         'totalPotenciaP6'=>$totalPotenciaP6??null,
  2403.                                         'totalPotencia'=>$totalPotencia,
  2404.                                         'totalEnergiaP1'=>$totalEnergiaP1,
  2405.                                         'totalEnergiaP2'=>$totalEnergiaP2??null,
  2406.                                         'totalEnergiaP3'=>$totalEnergiaP3??null,
  2407.                                         'totalEnergiaP4'=>$totalEnergiaP4??null,
  2408.                                         'totalEnergiaP5'=>$totalEnergiaP5??null,
  2409.                                         'totalEnergiaP6'=>$totalEnergiaP6??null,
  2410.                                         'totalEnergia'=>$totalEnergia,
  2411.                                         'reactivaP1'=>$reactivaP1??null,
  2412.                                         'reactivaP2'=>$reactivaP2??null,
  2413.                                         'reactivaP3'=>$reactivaP3??null,
  2414.                                         'reactivaP4'=>$reactivaP4??null,
  2415.                                         'reactivaP5'=>$reactivaP5??null,
  2416.                                         'reactivaP6'=>$reactivaP6??null,
  2417.                                         'excesoReactivaP1'=>$excesoReactivaP1??null,
  2418.                                         'excesoReactivaP2'=>$excesoReactivaP2??null,
  2419.                                         'excesoReactivaP3'=>$excesoReactivaP3??null,
  2420.                                         'excesoReactivaP4'=>$excesoReactivaP4??null,
  2421.                                         'excesoReactivaP5'=>$excesoReactivaP5??null,
  2422.                                         'excesoReactivaP6'=>$excesoReactivaP6??null,
  2423.                                         'importeReactivaP1'=>$importeReactivaP1??null,
  2424.                                         'importeReactivaP2'=>$importeReactivaP2??null,
  2425.                                         'importeReactivaP3'=>$importeReactivaP3??null,
  2426.                                         'importeReactivaP4'=>$importeReactivaP4??null,
  2427.                                         'importeReactivaP5'=>$importeReactivaP5??null,
  2428.                                         'importeReactivaP6'=>$importeReactivaP6??null,
  2429.                                         'totalReactiva'=>$totalReactiva??null,
  2430.                                         'subtotal'=>$subtotal,
  2431.                                         'importeImpuesto'=>$importeImpuesto,
  2432.                                         'importeAlquiler'=>$importeAlquiler,
  2433.                                         'otrosConceptos'=>$otrosConceptos??0,
  2434.                                         'importeTotal'=>$importeTotal,
  2435.                                         'importeIva'=>$importeIva,
  2436.                                         'totalFactura'=>$totalFactura,
  2437.                                         'consumoP1Facturado'=>$consumoP1Facturado??null,
  2438.                                         'consumoP2Facturado'=>$consumoP2Facturado??null,
  2439.                                         'consumoP3Facturado'=>$consumoP3Facturado??null,
  2440.                                         'consumoP4Facturado'=>$consumoP4Facturado??null,
  2441.                                         'consumoP5Facturado'=>$consumoP5Facturado??null,
  2442.                                         'consumoP6Facturado'=>$consumoP6Facturado??null,
  2443.                                         'arrayP'=>$arrayP??[true,false,false,false,false,false],
  2444.                                         'numeroP'=>$numeroP??1,
  2445.                                         'urlImagen'=>$urlImagen
  2446.                                     ];
  2447.                                     switch ($_SERVER['APP_ENV']??'finkaluz'){
  2448.                                         case 'finkaluz':
  2449.                                             $html=$this->renderView('factura/finkaluz.factura.pdf.twig'$params);
  2450.                                             break;
  2451.                                         case 'emfra':
  2452.                                             $html=$this->renderView('factura/emfra.factura.pdf.twig'$params);
  2453.                                             break;
  2454.                                         case 'onda':
  2455.                                             $html=$this->renderView('factura/onda.factura.pdf.twig'$params);
  2456.                                             break;
  2457.                                         case 'digitel':
  2458.                                             $html=$this->renderView('factura/digitel.factura.pdf.twig'$params);
  2459.                                             break;
  2460.                                         case 'apolo':
  2461.                                             $html=$this->renderView('factura/apolo.factura.pdf.twig'$params);
  2462.                                             break;
  2463.                                         case 'e3':
  2464.                                             $html=$this->renderView('factura/e3/factura.pdf.twig'$params);
  2465.                                             break;
  2466.                                         default:
  2467.                                             $html=$this->renderView('factura/factura.pdf.twig'$params);
  2468.                                             break;
  2469.                                     }
  2470.                                 }
  2471.                                 else {
  2472.                                     $subject 'FACTURA GAS';
  2473.                                     $tipo='gas';
  2474.                                     $periodoFacturacion date_diff($factura->getFechaLecturaAnterior(), $factura->getFechaLectura())->days;
  2475.                                     $totalPotenciaP1 round($factura->getPrecioPotenciaP1() * $periodoFacturacion2);
  2476.                                     $totalPotencia $totalPotenciaP1;
  2477.                                     $totalEnergiaP1 round($factura->getConsumoConvertidoP1() * $factura->getPrecioEnergiaP1(), 2);
  2478.                                     $totalEnergia $totalEnergiaP1;
  2479.                                     $subtotal round($totalEnergia $totalPotencia2);
  2480.                                     $importeImpuesto round($factura->getImpuesto() * $factura->getConsumoConvertidoP1(), 2);
  2481.                                     $importeAlquiler round($periodoFacturacion $factura->getAlquilerEquipos(), 2);
  2482.                                     $otrosConceptos=0;
  2483.                                     foreach ($factura->getConceptos() as $concepto){
  2484.                                         $otrosConceptos+=round($concepto->getImporte(),2);
  2485.                                     }
  2486.                                     $importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
  2487.                                     $importeIva round($factura->getIva() * $importeTotal 1002);
  2488.                                     $totalFactura round($importeTotal $importeIva2);
  2489.                                     if ($totalFactura !== $factura->getTotalFactura()) {
  2490.                                         $factura->setTotalFactura($totalFactura);
  2491.                                         $entityManager->flush();
  2492.                                     }
  2493.                                     //Grafica
  2494.                                     if ($factura === $facturas[0]) {
  2495.                                         $consumoMedio $factura->getTotalFactura();
  2496.                                         $consumoAcumulado $factura->getConsumoConvertidoP1();
  2497.                                     } else {
  2498.                                         $indiceFactura array_search($factura$facturas);
  2499.                                         if ($indiceFactura 12) {
  2500.                                             for ($i 0$i <= $indiceFactura && $i 12$i++) {
  2501.                                                 $consumoMedio += $facturas[$i]->getTotalFactura();
  2502.                                                 $consumoAcumulado += $facturas[$i]->getConsumoConvertidoP1();
  2503.                                             }
  2504.                                             $consumoMedio $consumoMedio / ($indiceFactura 1);
  2505.                                         } else {
  2506.                                             for ($i 11$i >= 0$i--) {
  2507.                                                 $n $indiceFactura $i;
  2508.                                                 $consumoMedio += $facturas[$n]->getTotalFactura();
  2509.                                                 $consumoAcumulado += $factura->getConsumoConvertidoP1();
  2510.                                             }
  2511.                                             $consumoMedio $consumoMedio 12;
  2512.                                         }
  2513.                                     }
  2514.                                     $params=[
  2515.                                         'factura' => $factura,
  2516.                                         'entidad' => $entidad,
  2517.                                         'consumoMedio' => $consumoMedio,
  2518.                                         'consumoAcumulado' => $consumoAcumulado,
  2519.                                         'periodoFacturacion' => $periodoFacturacion,
  2520.                                         'totalPotenciaP1' => $totalPotenciaP1,
  2521.                                         'totalPotencia' => $totalPotencia,
  2522.                                         'totalEnergiaP1' => $totalEnergiaP1,
  2523.                                         'totalEnergia' => $totalEnergia,
  2524.                                         'subtotal' => $subtotal,
  2525.                                         'importeImpuesto' => $importeImpuesto,
  2526.                                         'importeAlquiler' => $importeAlquiler,
  2527.                                         'otrosConceptos'=>$otrosConceptos,
  2528.                                         'importeTotal' => $importeTotal,
  2529.                                         'importeIva' => $importeIva,
  2530.                                         'totalFactura' => $totalFactura,
  2531.                                         'urlImagen' => $urlImagen
  2532.                                     ];
  2533.                                     switch ($_SERVER['APP_ENV']??'finkaluz'){
  2534.                                         case 'finkaluz':
  2535.                                             $html=$this->renderView('factura/finkaluz.factura.pdf.twig'$params);
  2536.                                             break;
  2537.                                         case 'emfra':
  2538.                                             $html=$this->renderView('factura/emfra.factura.pdf.twig'$params);
  2539.                                             break;
  2540.                                         case 'onda':
  2541.                                             $html=$this->renderView('factura/onda.factura.pdf.twig'$params);
  2542.                                             break;
  2543.                                         case 'digitel':
  2544.                                             $html=$this->renderView('factura/digitel.factura.pdf.twig'$params);
  2545.                                             break;
  2546.                                         case 'apolo':
  2547.                                             $html=$this->renderView('factura/apolo.factura.pdf.twig'$params);
  2548.                                             break;
  2549.                                         case 'e3':
  2550.                                             $html=$this->renderView('factura/e3/factura.pdf.twig'$params);
  2551.                                             break;
  2552.                                         default:
  2553.                                             $html=$this->renderView('factura/factura.pdf.twig'$params);
  2554.                                             break;
  2555.                                     }
  2556.                                 }
  2557.                                 try {
  2558.                                     unlink(__DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
  2559.                                 } catch (\Exception $exception) {
  2560.                                 }
  2561.                                 $pdf->generateFromHtml(
  2562.                                     $html,
  2563.                                     __DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf'
  2564.                                 );
  2565.                                 try {
  2566.                                     switch ($_SERVER['APP_ENV']??'finkaluz'){
  2567.                                         case 'finkaluz':
  2568.                                             $body=$this->renderView('email/finkaluz.factura.html.twig',['tipo'=>$tipo]);
  2569.                                             $from='finkaluz@finkaluz.com';
  2570.                                             break;
  2571.                                         case 'emfra':
  2572.                                             $body=$this->renderView('email/emfra.factura.html.twig',['tipo'=>$tipo]);
  2573.                                             $from='finkaluz@finkaluz.com';
  2574.                                             break;
  2575.                                         case 'onda':
  2576.                                             $body=$this->renderView('email/onda.factura.html.twig',['tipo'=>$tipo]);
  2577.                                             $from='facturacion@ondaenergia.es';
  2578.                                             break;
  2579.                                         case 'digitel':
  2580.                                             $body=$this->renderView('email/digitel.factura.html.twig',['tipo'=>$tipo]);
  2581.                                             $from='facturacionluz@itdigitel.es';
  2582.                                             break;
  2583.                                         case 'apolo':
  2584.                                             $body=$this->renderView('email/apolo.factura.html.twig',['tipo'=>$tipo]);
  2585.                                             $from='clientes@vibraenergies.es';
  2586.                                             break;
  2587.                                         case 'e3':
  2588.                                             $body=$this->renderView('email/e3/factura.html.twig',['tipo'=>$tipo]);
  2589.                                             $from='e3powerenergy@e3powerenergy.com';
  2590.                                             break;
  2591.                                         default:
  2592.                                             $body=$this->renderView('email/factura.html.twig',['tipo'=>$tipo]);
  2593.                                             $from='contacto@energaze.com';
  2594.                                             break;
  2595.                                     }
  2596.                                     $message = (new Email())
  2597.                                         ->subject($subject)
  2598.                                         ->from($from)
  2599.                                         ->to($factura->getContrato()->getCliente()->getEmail())
  2600.                                         ->html($body)
  2601.                                         ->attachFromPath(__DIR__ '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
  2602.                                     $mailer->send($message);
  2603.                                     $status[]=('success');
  2604.                                     $logger->info('sent');
  2605.                                 } catch (\Exception $exception){
  2606.                                     $status[]='error';
  2607.                                     $logger->info('error');
  2608.                                     $logger->info($exception->getMessage());
  2609.                                 }
  2610.                             }
  2611.                         }
  2612.                         $response['success']=in_array('success'$status);
  2613.                     }
  2614.                 }
  2615.             }
  2616.             return $this->json($response??[]);
  2617.         }
  2618.         else{
  2619.             return $this->createNotFoundException();
  2620.         }
  2621.     }
  2622.     /**
  2623.      * @Route("/api/facturaGenerica", name="api_facturaGenerica")
  2624.      */
  2625.     public function facturaGenerica(Request $requestFacturaGenericaRepository $facturaRepository,
  2626.                                     MailerInterface $mailerEntityManagerInterface $entityManager)
  2627.     {
  2628.         $this->denyAccessUnlessGranted('ROLE_FACTURACION');
  2629.         $logger = new Logger('my_logger');
  2630.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  2631.         if( $request->isXmlHttpRequest() ){
  2632.             if( $request->isMethod('get') ){
  2633.                 $values=($_GET['values']??null);
  2634.                 $list=$request->get('list');
  2635.                 $response['success']=true;
  2636.                 if ( $list=='paged' ){
  2637.                     $logger->debug('entered factura paged list API');
  2638.                     $superadmin=$this->isGranted('ROLE_SUPERADMIN');
  2639.                     $qb=$facturaRepository->createQueryBuilder('f')
  2640.                         ->leftJoin('f.contrato','c')->leftJoin('c.cliente','cl')
  2641.                         ->leftJoin('c.suministro','s')->leftJoin('c.producto''p')
  2642.                         ->leftJoin('p.tarifa','t')->leftJoin('t.tipoTarifa','tt')
  2643.                         ->leftJoin('c.seller''cm');
  2644.                     $logger->debug('reached index');
  2645.                     $index=[
  2646.                         'index'=>null,
  2647.                         'cliente'=>'f.nombreCliente',
  2648.                         'nifCliente'=>'f.nifCliente',
  2649.                         'codigoCliente'=>'cl.codigoContable',
  2650.                         'referenciaContrato'=>'c.referenciaContrato',
  2651.                         'cups'=>'s.cups',
  2652.                         'codigoArticulo'=>'s.codigoContable',
  2653.                         'numero'=>'f.numeroFactura',
  2654.                         'fechaEmision'=>'f.fechaEmision',
  2655.                         //'fechaDevolucion'=>'f.fechaDevolucion',
  2656.                         'suministro'=>'s.direccionCompleta',
  2657.                         'comercial'=>'c.comercial',
  2658.                         'tipo'=>'tt.nombre',
  2659.                         'tarifa'=>"t.nombre",
  2660.                         'baseImponible'=>'f.totalFactura/(1+(f.iva/100))',
  2661.                         'iva'=>'f.iva',
  2662.                         'importe'=>'f.totalFactura',
  2663.                         'devuelta'=>'f.devuelta'
  2664.                     ];
  2665.                     $indexN=array_values($index);
  2666.                     $qbCount = clone $qb;
  2667.                     try {
  2668.                         $totalFacturas $qbCount->select('COUNT(t.id)')
  2669.                             ->getQuery()
  2670.                             ->getSingleScalarResult();
  2671.                     } catch (NoResultException|NonUniqueResultException $e) {
  2672.                         $totalFacturas=0;
  2673.                     }
  2674.                     $emisionFrom=($_GET['emisionFrom']??null);
  2675.                     $emisionTo=($_GET['emisionTo']??null);
  2676.                     $search=trim($_GET['search']['value']??null);
  2677.                     $searchArray=array_merge(explode(' ',$search));
  2678.                     $order=($_GET['order']??[=>['column' => '7''dir' => 'asc',], =>['column' => '9''dir' => 'asc',],]);
  2679.                     $logger->debug('Request: '.var_export($_GET,1));
  2680.                     $pageSize=($_GET['length']??100);
  2681.                     $offset=$_GET['start']??0;
  2682.                     if($emisionFrom!==null){
  2683.                         $qb->andWhere('f.fechaEmision>= :emisionFrom')
  2684.                             ->setParameter('emisionFrom',$emisionFrom);
  2685.                     }
  2686.                     if($emisionTo!==null){
  2687.                         $qb->andWhere('f.fechaEmision<= :emisionTo')
  2688.                             ->setParameter('emisionTo',$emisionTo);
  2689.                     }
  2690.                     if ($search != null) {
  2691.                         $expressionA=$qb->expr()->orX(
  2692.                             $qb->expr()->like('UPPER('.$index['cliente'].')''?0'),
  2693.                             $qb->expr()->like($index['nifCliente'], '?0'),
  2694.                             $qb->expr()->like($index['codigoCliente'], '?0'),
  2695.                             $qb->expr()->like($index['referenciaContrato'], '?0'),
  2696.                             $qb->expr()->like($index['cups'], '?0'),
  2697.                             $qb->expr()->like($index['codigoArticulo'], '?0'),
  2698.                             $qb->expr()->like($index['numero'], '?0'),
  2699.                             $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?0'),
  2700.                             $qb->expr()->like('UPPER('.$index['suministro'].')''?0'),
  2701.                             $qb->expr()->like('UPPER('.$index['comercial'].')''?0'),
  2702.                             $qb->expr()->like('UPPER('.$index['tipo'].')''?0'),
  2703.                             $qb->expr()->like('UPPER('.$index['tarifa'].')''?0'),
  2704.                             $qb->expr()->like('UPPER('.$index['iva'].')''?0'),
  2705.                             $qb->expr()->like('UPPER('.$index['importe'].')''?0')
  2706.                         );
  2707.                         if( count($searchArray)>){
  2708.                             $i=0;
  2709.                             $expressions=[];
  2710.                             foreach ($searchArray as $s){
  2711.                                 $i++;
  2712.                                 $expressions[]=$qb->expr()->orX(
  2713.                                     $qb->expr()->like('UPPER('.$index['cliente'].')''?'.$i),
  2714.                                     $qb->expr()->like($index['nifCliente'], '?'.$i),
  2715.                                     $qb->expr()->like($index['codigoCliente'], '?'.$i),
  2716.                                     $qb->expr()->like($index['referenciaContrato'], '?'.$i),
  2717.                                     $qb->expr()->like($index['cups'], '?'.$i),
  2718.                                     $qb->expr()->like($index['codigoArticulo'], '?'.$i),
  2719.                                     $qb->expr()->like($index['numero'], '?'.$i),
  2720.                                     $qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')"'?'.$i),
  2721.                                     $qb->expr()->like('UPPER('.$index['suministro'].')''?'.$i),
  2722.                                     $qb->expr()->like('UPPER('.$index['comercial'].')''?'.$i),
  2723.                                     $qb->expr()->like('UPPER('.$index['tipo'].')''?'.$i),
  2724.                                     $qb->expr()->like('UPPER('.$index['tarifa'].')''?'.$i),
  2725.                                     $qb->expr()->like('UPPER('.$index['iva'].')''?'.$i),
  2726.                                     $qb->expr()->like('UPPER('.$index['importe'].')''?'.$i)
  2727.                                 );
  2728.                             }
  2729.                             $qb->andWhere($qb->expr()->orX(
  2730.                                 $expressionA,
  2731.                                 $qb->expr()->andX(...$expressions)
  2732.                             ));
  2733.                             $i=0;
  2734.                             foreach ($searchArray as $s){
  2735.                                 $i++;
  2736.                                 $qb->setParameter($i"%".strtoupper($s)."%");
  2737.                             }
  2738.                             $qb->setParameter('0'"%".strtoupper($search)."%");
  2739.                         }else{
  2740.                             $qb->andWhere($expressionA)->setParameter('0'"%".strtoupper($search)."%");
  2741.                         }
  2742.                         $qbCount = clone $qb;
  2743.                         $result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
  2744.                             ->getQuery()
  2745.                             ->getSingleScalarResult();
  2746.                     }else{
  2747.                         $result['recordsFiltered']=$totalFacturas;
  2748.                     }
  2749.                     $qb->setMaxResults($pageSize)->setFirstResult($offset);
  2750.                     foreach ($order as $param){
  2751.                         $qb->addOrderBy$indexN[$param['column']],strtoupper($param['dir']) );
  2752.                     }
  2753.                     $facturas=$qb->getQuery()->getResult();
  2754.                     $result['recordsTotal']=$totalFacturas;
  2755.                     $result['draw']=intval($_GET['draw']);
  2756.                     foreach ($facturas as $factura){
  2757.                         try {
  2758.                             $contrato=$factura->getContrato();
  2759.                             $tarifa=$contrato->getProducto()->getTarifa();
  2760.                             $class='';
  2761.                             if( $factura->getDevuelta() ){
  2762.                                 $class='alert-warning';
  2763.                             }
  2764.                             $fechaDevolucion=$factura->getFechaDevolucion();
  2765.                             if( !empty($fechaDevolucion) ){
  2766.                                 $fechaDevolucion=$fechaDevolucion->format('Y-m-d');
  2767.                             }
  2768.                             $item=[
  2769.                                 "DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
  2770.                                 "DT_RowClass"=>$class,
  2771.                                 'cliente'=>$factura->getNombreCliente(),
  2772.                                 'numero'=>$factura->getNumeroFactura(),
  2773.                                 'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
  2774.                                 'fechaDevolucion'=>$fechaDevolucion,
  2775.                                 'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
  2776.                                 'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
  2777.                                 'tarifa'=>$tarifa->getNombre(),
  2778.                                 'devuelta'=>$factura->getDevuelta(),
  2779.                                 'importe'=>$factura->getTotalFactura(),
  2780.                                 'nifCliente'=>$factura->getNifCliente(),
  2781.                                 'referenciaContrato'=>$contrato->getReferenciaContrato(),
  2782.                                 'cups'=>$contrato->getSuministro()->getCups(),
  2783.                                 'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
  2784.                                 'iva'=>$factura->getIva(),
  2785.                                 'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
  2786.                                 'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
  2787.                                 'comercial'=>$contrato->getComercial()
  2788.                             ];
  2789.                             if($factura->getClassName()=='Factura'){
  2790.                                 $estadoCompra=$factura->getEstadoCompra();
  2791.                                 $item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
  2792.                                 $item['estadoCompra']=( $estadoCompra $estadoCompra->getNombre() : null );
  2793.                                 $item['importeCompra']=$factura->getTotalCompra();
  2794.                                 $item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
  2795.                                 $item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
  2796.                                 $item['generica']=false;
  2797.                             }else{
  2798.                                 $item['fechaLectura']='otros conceptos';
  2799.                                 $item['generica']=true;
  2800.                             }
  2801.                             $array[]=$item;
  2802.                         }catch (Exception $e){
  2803.                             $logger->warning($e->getMessage());
  2804.                             ob_start();
  2805.                             var_dump($factura);
  2806.                             $result ob_get_clean();
  2807.                             $logger->warning($result);
  2808.                         }
  2809.                     }
  2810.                     $result['data']=$array??[];
  2811.                     $response=$result;
  2812.                 }
  2813.                 if(in_array('devuelta'$values??[])){
  2814.                     try{
  2815.                         $factura=$facturaRepository->find$_GET['id'] );
  2816.                         $response['devuelta']=$factura->getDevuelta();
  2817.                     }catch (Exception $exception){
  2818.                         $logger->alert$exception->getMessage() );
  2819.                         $response['success']=false;
  2820.                     }
  2821.                 }
  2822.             }
  2823.             elseif( $request->isMethod('post') ){
  2824.                 if($_POST['action']=='update'){
  2825.                     $values=($_POST['values']??null);
  2826.                     if( array_key_exists('devuelta',$values)!==false ){
  2827.                         try{
  2828.                             $factura=$facturaRepository->find$_POST['id'] );
  2829.                             if( $values['devuelta']==='true' || $values['devuelta']===true ){
  2830.                                 $factura->setDevuelta(true);
  2831.                                 $factura->setFechaDevolucion(date_create());
  2832.                                 $factura->getContrato()->setFacturaDevuelta(true);
  2833.                                 //Notificación email
  2834.                                 try {
  2835.                                     $message = (new Email())
  2836.                                         ->subject('FACTURA DEVUELTA')
  2837.                                         ->from('contacto@energaze.com')
  2838.                                         ->to($factura->getContrato()->getCliente()->getEmail())
  2839.                                         ->html($this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]));
  2840.                                     $mailer->send($message);
  2841.                                 }catch (\Exception $exception){
  2842.                                     $logger->info($exception->getMessage());
  2843.                                 }
  2844.                             }elseif ( $values['devuelta']=='false' || $values['devuelta']===false ){
  2845.                                 $factura->setDevuelta(false);
  2846.                                 //Notificación email
  2847.                                 try {
  2848.                                     $message = (new Email())
  2849.                                         ->subject('FACTURA PAGADA')
  2850.                                         ->from('contacto@energaze.com')
  2851.                                         ->to($factura->getContrato()->getCliente()->getEmail())
  2852.                                         ->html($this->renderView('email/facturaPagada.html.twig',['factura'=>$factura]));
  2853.                                     $mailer->send($message);
  2854.                                 }catch (\Exception $exception){
  2855.                                     $logger->info($exception->getMessage());
  2856.                                 }
  2857.                             }else{
  2858.                                 throw new Exception('Invalid value given. Only values taken are boolean and "true" or "false" string.');
  2859.                             }
  2860.                             $entityManager->flush();
  2861.                             $response['success']=true;
  2862.                         }catch (Exception $exception){
  2863.                             $logger->alert$exception->getMessage() );
  2864.                             $response['success']=false;
  2865.                         }
  2866.                     }
  2867.                 }
  2868.             }
  2869.             return $this->json($response??[]);
  2870.         }
  2871.         else{
  2872.             return $this->createNotFoundException();
  2873.         }
  2874.     }
  2875.     /**
  2876.      * @Route("/api/impuesto", name="api_impuesto")
  2877.      */
  2878.     public function impuesto(Request $requestTipoImpuestoRepository $tipoImpuestoRepository,
  2879.                              ImpuestoRepository $impuestoRepository)
  2880.     {
  2881.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  2882.         $logger = new Logger('my_logger');
  2883.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  2884.         if( $request->isXmlHttpRequest() ){
  2885.             if( $request->isMethod('post') ){
  2886.                 try {
  2887.                     $impuestos=$tipoImpuestoRepository->findAll();
  2888.                     foreach ($impuestos as $impuesto){
  2889.                         if( $impuesto->getNombre()=='Sí' ){
  2890.                             $importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidad' ])->getImporte();
  2891.                         }
  2892.                         elseif ($impuesto->getNombre()=='Reducido'){
  2893.                             $importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidadReducido' ])->getImporte();
  2894.                         }else{
  2895.                             $importe=0;
  2896.                         }
  2897.                         $array[]=[
  2898.                             'id'=>$impuesto->getId(),
  2899.                             'nombre'=>$impuesto->getNombre(),
  2900.                             'importe'=>$importe
  2901.                         ];
  2902.                     }
  2903.                 }catch (Exception $e){}
  2904.             }
  2905.             elseif( $request->isMethod('post') ){}
  2906.             return $this->json($array??[]);
  2907.         }
  2908.         else{
  2909.             return $this->createNotFoundException();
  2910.         }
  2911.     }
  2912.     /**
  2913.      * @Route("/api/notificacion", name="api_notificacion")
  2914.      */
  2915.     public function notificacion(Request $requestNotificacionRepository $notificacionRepository,
  2916.                                  EntityManagerInterface $entityManager)
  2917.     {
  2918.         $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  2919.         $logger = new Logger('my_logger');
  2920.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  2921.         if( $request->isXmlHttpRequest() ){
  2922.             if( $request->isMethod('post') ){
  2923.                 try {
  2924.                     $notificacion=$notificacionRepository->find($_POST['id']);
  2925.                     if( $notificacion->getUser()->getUsername()??false == $this->getUser()->getUsername() ){
  2926.                         $notificacion->setVista(true);
  2927.                         $entityManager->flush();
  2928.                     }
  2929.                 }catch (Exception $e){}
  2930.             }
  2931.             return $this->json($notificacion->getVista()??false);
  2932.         }
  2933.         else{
  2934.             return $this->createNotFoundException();
  2935.         }
  2936.     }
  2937.     /**
  2938.      * @Route("/api/productos", name="api_productos")
  2939.      */
  2940.     public function productos(Request $requestProductoRepository $productoRepository)
  2941.     {
  2942.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  2943.         $logger = new Logger('my_logger');
  2944.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  2945.         if( $request->isXmlHttpRequest() ){
  2946.             if( $request->isMethod('post') ){
  2947.                 try {
  2948.                     $array=$productoRepository->findBy( [ 'tarifa'=>$_POST['tarifa'], 'personalizado'=>false ], ['nombre'=>'ASC'] );
  2949.                     foreach($array as &$item){
  2950.                         $item=[
  2951.                             'id'=>$item->getId(),
  2952.                             'nombre'=>$item->getNombre()
  2953.                         ];
  2954.                     }
  2955.                 }catch (Exception $e){}
  2956.             }
  2957.             else{
  2958.                 $array=$productoRepository->findAll();
  2959.                 foreach($array as &$item){
  2960.                     $item=[
  2961.                         'id'=>$item->getId(),
  2962.                         'nombre'=>$item->getNombre()
  2963.                     ];
  2964.                 }
  2965.             }
  2966.             return $this->json($array??[]);
  2967.         }
  2968.         else{
  2969.             return $this->createNotFoundException();
  2970.         }
  2971.     }
  2972.     /**
  2973.      * @Route("/api/productoProveedor", name="api_productoProveedor")
  2974.      */
  2975.     public function productoProveedor(Request $requestProductoProveedorRepository $productoRepository)
  2976.     {
  2977.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  2978.         $logger = new Logger('my_logger');
  2979.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  2980.         if( $request->isXmlHttpRequest() ){
  2981.             if( $request->isMethod('get') ){
  2982.                 try {
  2983.                     $array=$productoRepository->findBy( [ 'tarifa'=>$_GET['tarifa'], 'proveedor'=>$_GET['proveedor'], 'personalizado'=>false ], ['nombre'=>'ASC'] );
  2984.                     foreach($array as &$item){
  2985.                         $item=[
  2986.                             'id'=>$item->getId(),
  2987.                             'nombre'=>$item->getNombre()
  2988.                         ];
  2989.                     }
  2990.                 }catch (Exception $e){}
  2991.             }
  2992.             else{
  2993.                 $array=$productoRepository->findAll();
  2994.                 foreach($array as &$item){
  2995.                     $item=[
  2996.                         'id'=>$item->getId(),
  2997.                         'nombre'=>$item->getNombre()
  2998.                     ];
  2999.                 }
  3000.             }
  3001.             return $this->json($array??[]);
  3002.         }
  3003.         else{
  3004.             return $this->createNotFoundException();
  3005.         }
  3006.     }
  3007.     /**
  3008.      * @Route("/api/proveedor", name="api_proveedor")
  3009.      */
  3010.     public function proveedor(Request $requestProveedorRepository $proveedorRepository)
  3011.     {
  3012.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  3013.         if($request->isXmlHttpRequest()){
  3014.             if( $request->isMethod('get') ){
  3015.                 try {
  3016.                     $array=$proveedorRepository->findAll();
  3017.                     foreach($array as &$item){
  3018.                         $item=[
  3019.                             'id'=>$item->getId(),
  3020.                             'nombre'=>$item->getNombre()
  3021.                         ];
  3022.                     }
  3023.                 }catch (Exception $e){}
  3024.             }
  3025.             else{
  3026.                 $array=$proveedorRepository->findAll();
  3027.             }
  3028.             return $this->json($array??[]);
  3029.         }
  3030.         else{
  3031.             return $this->createNotFoundException();
  3032.         }
  3033.     }
  3034.     /**
  3035.      * @Route("/api/puntuacion", name="api_tarifas")
  3036.      */
  3037.     public function puntuacion(Request $requestPuntuacionRepository $puntuacionRepository)
  3038.     {
  3039.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  3040.         if($request->isXmlHttpRequest()){
  3041.             if( $request->isMethod('post') ){
  3042.                 try {
  3043.                     if( ($_POST['action']??null)=='reset' ){
  3044.                         if( ($_POST['target']??null)=='all' ){
  3045.                         }
  3046.                     }
  3047.                 }catch (Exception $e){}
  3048.             }
  3049.             else{
  3050.                 $array=null;
  3051.             }
  3052.             return $this->json($array??[]);
  3053.         }
  3054.         else{
  3055.             return $this->createNotFoundException();
  3056.         }
  3057.     }
  3058.     /**
  3059.      * @Route("/api/tarifas", name="api_tarifas")
  3060.      */
  3061.     public function tarifas(Request $requestTarifaRepository $tarifaRepository )
  3062.     {
  3063.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  3064.         $logger = new Logger('my_logger');
  3065.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  3066.         if($request->isXmlHttpRequest()){
  3067.             if( $request->isMethod('POST') ){
  3068.                 if( ($_POST['tipo']??null)!=null ){
  3069.                     try {
  3070.                         $logger->info(($_POST['hidden']??null));
  3071.                         if( ($_POST['hidden']??null)==true ){
  3072.                             $array=$tarifaRepository->findBy( [ 'tipoTarifa'=>$_POST['tipo'] ], ['nombre'=>'ASC'] );
  3073.                         } else{
  3074.                             $array=$tarifaRepository->findBy( [ 'tipoTarifa'=>$_POST['tipo'], 'oculto'=>false ], ['nombre'=>'ASC'] );
  3075.                         }
  3076.                     foreach($array as &$item){
  3077.                         $item=[
  3078.                             'id'=>$item->getId(),
  3079.                             'nombre'=>$item->getNombre(),
  3080.                             'periodo'=>[
  3081.                                 'potenciaP1'=>$item->getPotenciaP1(),
  3082.                                 'potenciaP2'=>$item->getPotenciaP2(),
  3083.                                 'potenciaP3'=>$item->getPotenciaP3(),
  3084.                                 'potenciaP4'=>$item->getPotenciaP4(),
  3085.                                 'potenciaP5'=>$item->getPotenciaP5(),
  3086.                                 'potenciaP6'=>$item->getPotenciaP6(),
  3087.                                 'energiaP1'=>$item->getEnergiaP1(),
  3088.                                 'energiaP2'=>$item->getEnergiaP2(),
  3089.                                 'energiaP3'=>$item->getEnergiaP3(),
  3090.                                 'energiaP4'=>$item->getEnergiaP4(),
  3091.                                 'energiaP5'=>$item->getEnergiaP5(),
  3092.                                 'energiaP6'=>$item->getEnergiaP6(),
  3093.                                 'reactivaP1'=>$item->getReactivaP1(),
  3094.                                 'reactivaP2'=>$item->getReactivaP2(),
  3095.                                 'reactivaP3'=>$item->getReactivaP3(),
  3096.                                 'reactivaP4'=>$item->getReactivaP4(),
  3097.                                 'reactivaP5'=>$item->getReactivaP5(),
  3098.                                 'reactivaP6'=>$item->getReactivaP6(),
  3099.                             ],
  3100.                         ];
  3101.                     }
  3102.                 }catch (Exception $e){}
  3103.                 }
  3104.                 elseif( ($_POST['id']??null)!=null ){
  3105.                     try {
  3106.                         $tarifa=$tarifaRepository->find$_POST['id'] );
  3107.                         $array=[
  3108.                             'id'=>$tarifa->getId(),
  3109.                             'nombre'=>$tarifa->getNombre(),
  3110.                             'periodo'=>[
  3111.                                 'potenciaP1'=>$tarifa->getPotenciaP1(),
  3112.                                 'potenciaP2'=>$tarifa->getPotenciaP2(),
  3113.                                 'potenciaP3'=>$tarifa->getPotenciaP3(),
  3114.                                 'potenciaP4'=>$tarifa->getPotenciaP4(),
  3115.                                 'potenciaP5'=>$tarifa->getPotenciaP5(),
  3116.                                 'potenciaP6'=>$tarifa->getPotenciaP6(),
  3117.                                 'energiaP1'=>$tarifa->getEnergiaP1(),
  3118.                                 'energiaP2'=>$tarifa->getEnergiaP2(),
  3119.                                 'energiaP3'=>$tarifa->getEnergiaP3(),
  3120.                                 'energiaP4'=>$tarifa->getEnergiaP4(),
  3121.                                 'energiaP5'=>$tarifa->getEnergiaP5(),
  3122.                                 'energiaP6'=>$tarifa->getEnergiaP6(),
  3123.                                 'reactivaP1'=>$tarifa->getReactivaP1(),
  3124.                                 'reactivaP2'=>$tarifa->getReactivaP2(),
  3125.                                 'reactivaP3'=>$tarifa->getReactivaP3(),
  3126.                                 'reactivaP4'=>$tarifa->getReactivaP4(),
  3127.                                 'reactivaP5'=>$tarifa->getReactivaP5(),
  3128.                                 'reactivaP6'=>$tarifa->getReactivaP6(),
  3129.                             ]
  3130.                         ];
  3131.                     }catch (Exception $e){}
  3132.                 }
  3133.                 elseif( ($_POST['update']??null)!=null ){
  3134.                     try {
  3135.                         $tarifaOld=$tarifaRepository->find$_POST['update'] );
  3136.                         switch ( $tarifaOld->getNombre() ){
  3137.                             case '2.0A':case '2.1A':case '2.0DHA':case '2.1DHA':case '2.0DHS':case '2.1DHS':
  3138.                               $tarifa=$tarifaRepository->findOneBy( ['nombre'=>'2.0TD'] );
  3139.                               break;
  3140.                         }
  3141.                         $array=[
  3142.                             'id'=>$tarifa->getId(),
  3143.                             'nombre'=>$tarifa->getNombre(),
  3144.                             'periodo'=>[
  3145.                                 'potenciaP1'=>$tarifa->getPotenciaP1(),
  3146.                                 'potenciaP2'=>$tarifa->getPotenciaP2(),
  3147.                                 'potenciaP3'=>$tarifa->getPotenciaP3(),
  3148.                                 'potenciaP4'=>$tarifa->getPotenciaP4(),
  3149.                                 'potenciaP5'=>$tarifa->getPotenciaP5(),
  3150.                                 'potenciaP6'=>$tarifa->getPotenciaP6(),
  3151.                                 'energiaP1'=>$tarifa->getEnergiaP1(),
  3152.                                 'energiaP2'=>$tarifa->getEnergiaP2(),
  3153.                                 'energiaP3'=>$tarifa->getEnergiaP3(),
  3154.                                 'energiaP4'=>$tarifa->getEnergiaP4(),
  3155.                                 'energiaP5'=>$tarifa->getEnergiaP5(),
  3156.                                 'energiaP6'=>$tarifa->getEnergiaP6(),
  3157.                                 'reactivaP1'=>$tarifa->getReactivaP1(),
  3158.                                 'reactivaP2'=>$tarifa->getReactivaP2(),
  3159.                                 'reactivaP3'=>$tarifa->getReactivaP3(),
  3160.                                 'reactivaP4'=>$tarifa->getReactivaP4(),
  3161.                                 'reactivaP5'=>$tarifa->getReactivaP5(),
  3162.                                 'reactivaP6'=>$tarifa->getReactivaP6(),
  3163.                             ]
  3164.                         ];
  3165.                     }catch (Exception $e){}
  3166.                 }
  3167.             }
  3168.             else{
  3169.                 $array=$tarifaRepository->findAll();
  3170.                 foreach($array as &$item) {
  3171.                     $item = [
  3172.                         'id' => $item->getId(),
  3173.                         'nombre' => $item->getNombre(),
  3174.                         'preiodo'=>json_encode([
  3175.                             'potenciaP1'=>$item->getPotenciaP1(),
  3176.                             'potenciaP2'=>$item->getPotenciaP2(),
  3177.                             'potenciaP3'=>$item->getPotenciaP3(),
  3178.                             'potenciaP4'=>$item->getPotenciaP4(),
  3179.                             'potenciaP5'=>$item->getPotenciaP5(),
  3180.                             'potenciaP6'=>$item->getPotenciaP6(),
  3181.                             'energiaP1'=>$item->getEnergiaP1(),
  3182.                             'energiaP2'=>$item->getEnergiaP2(),
  3183.                             'energiaP3'=>$item->getEnergiaP3(),
  3184.                             'energiaP4'=>$item->getEnergiaP4(),
  3185.                             'energiaP5'=>$item->getEnergiaP5(),
  3186.                             'energiaP6'=>$item->getEnergiaP6(),
  3187.                             'reactivaP1'=>$item->getReactivaP1(),
  3188.                             'reactivaP2'=>$item->getReactivaP2(),
  3189.                             'reactivaP3'=>$item->getReactivaP3(),
  3190.                             'reactivaP4'=>$item->getReactivaP4(),
  3191.                             'reactivaP5'=>$item->getReactivaP5(),
  3192.                             'reactivaP6'=>$item->getReactivaP6(),
  3193.                         ]),
  3194.                     ];
  3195.                 }
  3196.             }
  3197.             return $this->json($array??[]);
  3198.         }
  3199.         else{
  3200.             return $this->createNotFoundException();
  3201.         }
  3202.     }
  3203.     /**
  3204.      * @Route("/api/impuesto", name="api_impuesto")
  3205.      */
  3206.     public function tipoImpuesto(Request $requestTipoImpuestoRepository $tipoImpuestoRepository,
  3207.                                  TipoTarifaRepository $tipoTarifaRepository)
  3208.     {
  3209.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  3210.         $logger = new Logger('my_logger');
  3211.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  3212.         if( $request->isXmlHttpRequest() ){
  3213.             if( $request->isMethod('get') ){
  3214.                 if( !empty($_GET['tipoTarifa']) ){
  3215.                     try {
  3216.                         $tipoTarifa=$tipoTarifaRepository->find($_GET['tipoTarifa']);
  3217.                         $tiposImpuesto=array_merge($tipoImpuestoRepository->findBy(['tipoTarifa'=>$tipoTarifa]), $tipoImpuestoRepository->findBy(['tipoTarifa'=>null]));
  3218.                         foreach ($tiposImpuesto as $tipoImpuesto){
  3219.                             $array[]=[
  3220.                                 'id'=>$tipoImpuesto->getId(),
  3221.                                 'nombre'=>$tipoImpuesto->getNombre()
  3222.                             ];
  3223.                         }
  3224.                     }catch (Exception $e){}
  3225.                 }else{
  3226.                     try {
  3227.                         $tiposImpuesto=$tipoImpuestoRepository->findAll();
  3228.                         foreach ($tiposImpuesto as $tipoImpuesto){
  3229.                             $array[]=[
  3230.                                 'id'=>$tipoImpuesto->getId(),
  3231.                                 'nombre'=>$tipoImpuesto->getNombre()
  3232.                             ];
  3233.                         }
  3234.                     }catch (Exception $e){}
  3235.                 }
  3236.             }
  3237.             return $this->json($array??[]);
  3238.         }
  3239.         else{
  3240.             return $this->createNotFoundException();
  3241.         }
  3242.     }
  3243.     /**
  3244.      * @Route("/api/iva", name="api_iva")
  3245.      */
  3246.     public function tipoIva(Request $requestTipoIvaRepository $tipoIvaRepository,
  3247.                             TipoTarifaRepository $tipoTarifaRepository)
  3248.     {
  3249.         $this->denyAccessUnlessGranted('ROLE_COMERCIAL');
  3250.         $logger = new Logger('my_logger');
  3251.         $logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log'Logger::DEBUG));
  3252.         if( $request->isXmlHttpRequest() ){
  3253.             if( $request->isMethod('get') ){
  3254.                 if( !empty($_GET['tipoTarifa']) ){
  3255.                     try {
  3256.                         $tipoTarifa=$tipoTarifaRepository->find($_GET['tipoTarifa']);
  3257.                         $tiposImpuesto=array_merge($tipoIvaRepository->findBy(['tipoTarifa'=>$tipoTarifa]), $tipoIvaRepository->findBy(['tipoTarifa'=>null]));
  3258.                         foreach ($tiposImpuesto as $tipoImpuesto){
  3259.                             $array[]=[
  3260.                                 'id'=>$tipoImpuesto->getId(),
  3261.                                 'nombre'=>$tipoImpuesto->getNombre()
  3262.                             ];
  3263.                         }
  3264.                     }catch (Exception $e){}
  3265.                 }else{
  3266.                     try {
  3267.                         $tiposImpuesto=$tipoIvaRepository->findAll();
  3268.                         foreach ($tiposImpuesto as $tipoImpuesto){
  3269.                             $array[]=[
  3270.                                 'id'=>$tipoImpuesto->getId(),
  3271.                                 'nombre'=>$tipoImpuesto->getNombre()
  3272.                             ];
  3273.                         }
  3274.                     }catch (Exception $e){}
  3275.                 }
  3276.             }
  3277.             return $this->json($array??[]);
  3278.         }
  3279.         else{
  3280.             return $this->createNotFoundException();
  3281.         }
  3282.     }
  3283. }