src/Controller/ModComercio/Compras/ComprobantesCompraController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ModComercio\Compras;
  3. use App\Entity\Catalogos\{MedioPagoPorcentajeIvaSubtipoGastoTipoComprobanteCompra};
  4. use App\Entity\Contabilidad\{ComprasInsumosComprobantesCompraPagoCredito};
  5. use App\Entity\Documentos\{DocumentosComprobantesCompra};
  6. use App\Entity\Producto\{Proveedores};
  7. use App\Service\{CacheServiceDocumentsService};
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\{RequestResponseHeaderBag};
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Exception;
  13. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  14. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  15. use Symfony\Component\Security\Core\User\UserInterface;
  16. class ComprobantesCompraController extends AbstractController {
  17.   private $em;
  18.   private $cache;
  19.   private $msgCreate;
  20.   private $msgUpdate;
  21.   private $msgDelete;
  22.   public function __construct(EntityManagerInterface $emCacheService $cache) {
  23.     date_default_timezone_set('America/Guayaquil');
  24.     $this->em $em;
  25.     $this->cache $cache;
  26.     $this->msgCreate "Registro creado exitosamente.";
  27.     $this->msgUpdate "Registro actualizado exitosamente.";
  28.     $this->msgDelete "Registro eliminado exitosamente.";
  29.   }
  30.   // * READ FUNCTIONS *
  31.     /**
  32.      * @Route("/getInitialComprobantes", name="getInitialComprobantes")
  33.      */
  34.     public function getInitialComprobantes(Request $request) {
  35.       $this->cache->delete('excelListComprobantesCompras');
  36.       $list = [];
  37.       $filter $request->request->get('filter');
  38.       $comprobantesCompra $this->em->getRepository(ComprobantesCompra::class)->findBy(['registrado' => $filter == "registrado" true false], ['fecha' => 'DESC']);
  39.       foreach ($comprobantesCompra as $item) {
  40.         $list $this->setArrayComprobanteCompra($list$item);
  41.       }
  42.       $this->cache->add('excelListComprobantesCompras'$list);
  43.       return $this->json(['data' => $list], 200);
  44.     }
  45.     /**
  46.      * @Route("/getSubtipoGasto", name="getSubtipoGasto")
  47.      */
  48.     public function getSubtipoGasto(Request $request) {
  49.       $list = [];
  50.       $id $request->request->get('id');
  51.       $suptipoGasto $this->em->getRepository(SubtipoGasto::class)->findBy(['idTipoGasto' => $id], ['nombre' => 'ASC']);
  52.       foreach ($suptipoGasto as $item) {
  53.         $list[] = [
  54.           'id' => $item->getId(),
  55.           'nombre' => $item->getNombre()
  56.         ];
  57.       }
  58.       return $this->json($list200);
  59.     }
  60.     /**
  61.      * @Route("/getPagosCredito", name="getPagosCredito")
  62.      */
  63.     public function getPagosCredito(Request $request) {
  64.       $list = [];
  65.       $id $request->request->get('idCromprobantesCompra');
  66.       $pagoCredito $this->em->getRepository(PagoCredito::class)->findBy(['idComprobantesCompra' => $id], ['fechaPago' => 'ASC']);
  67.       foreach ($pagoCredito as $indice => $item) {
  68.         $list[] = [
  69.           'indice' => $indice 1,
  70.           'id' => $item->getId(),
  71.           'fechaPago' => $item->getFechaPagoString(),
  72.           'valor' => $item->getValor(),
  73.           'pagado' => $item->getPagado()
  74.         ];
  75.       }
  76.       return $this->json(['data' => $list], 200);
  77.     }
  78.     /**
  79.      * @Route("/getFilterComprobantes", name="getFilterComprobantes")
  80.      */
  81.     public function getFilterComprobantes(Request $request) {
  82.       $list = [];
  83.       $idSolicitud $request->request->get('idSolicitud');
  84.       $qb $this->em->createQueryBuilder();
  85.     $qb->select('DISTINCT cc, ci'// Se incluye también 'ci' para evitar el error
  86.         ->from(ComprasInsumos::class, 'ci'// Se define el alias raíz correctamente
  87.         ->join('ci.idComprobantesCompra''cc'// cc = ComprobantesCompra
  88.         ->where('ci.idSolicitudCompra = :solicitudId')
  89.         ->setParameter('solicitudId'$idSolicitud);
  90.       $result $qb->getQuery()->getResult();
  91.       foreach ($result as $item) {
  92.         $list $this->setArrayComprobanteCompra($list$item->getIdComprobantesCompra());
  93.       }
  94.       $list $this->eliminarDuplicadosPorPropiedad($list'id');
  95.       return $this->json(['data' => $list], 200);
  96.     }
  97.     function eliminarDuplicadosPorPropiedad($array$propiedad) {
  98.     $unicos = [];
  99.     $vistos = [];
  100.     foreach ($array as $objeto) {
  101.         $valor $objeto[$propiedad];
  102.         if (!in_array($valor$vistos)) {
  103.             $vistos[] = $valor;
  104.             $unicos[] = $objeto;
  105.         }
  106.     }
  107.     return $unicos;
  108. }
  109.     /**
  110.      * @Route("/getComprobantesListEnCompras", name="getComprobantesListEnCompras")
  111.      */
  112.     public function getComprobantesListEnCompras() {
  113.       $list = [];
  114.       $comprobantesCompra $this->em->getRepository(ComprobantesCompra::class)->findBy(['registrado' => false], ['id' => 'DESC']);
  115.       foreach ($comprobantesCompra as $item) {
  116.         $list $this->setArrayComprobanteCompra($list$item);
  117.       }
  118.       return $this->json($list200);
  119.     }
  120.     private function setArrayComprobanteCompra($list$item) {
  121.       $tipoComprobanteCompra $item->getIdTipoComprobanteCompra();
  122.       $proveedor $item->getIdProveedores();
  123.       $medioPago $item->getIdMedioPago();
  124.       $total floatval($item->getValorSinIva());
  125.       $idPorcentajeIva $this->em->getRepository(PorcentajeIva::class)->findOneBy(['porcentaje' => $item->getPorcentajeIva()]);
  126.       if ($item->getIva() == 0) {
  127.         $total $total floatval($item->getValorIvaCero());
  128.       } else {
  129.         $total floatval($total $item->getIva() + $item->getValorIvaCero());
  130.       }
  131.       array_push($list, [
  132.         'id' => $item->getId(),
  133.         'observacion' => $item->getObservacion(),
  134.         'idTipoComprobanteCompra' => [
  135.           'id' => $tipoComprobanteCompra->getId(),
  136.           'nombre' => $tipoComprobanteCompra->getNombre()
  137.         ],
  138.         'idSubtipoGasto' => $item->getIdSubtipoGasto(),
  139.         'idMedioPago' => [
  140.           'id' => $medioPago->getId(),
  141.           'nombre' => $medioPago->getNombre()
  142.         ],
  143.         'idProveedores' => [
  144.           'id' => $proveedor->getId(),
  145.           'nombre' => $proveedor->getNombre(),
  146.           'ruc' => $proveedor->getRuc()
  147.         ],
  148.         'numero' => $item->getNumero(),
  149.         'porcentajeIva' => $item->getPorcentajeIva(),
  150.         'fecha' => $item->getFecha()->format('Y-m-d'),
  151.         'valor' => $item->getValorSinIva() == $item->getValorIvaCero() : $item->getValorSinIva(),
  152.         'tarifa0' => $item->getValorIvaCero(),
  153.         'tarifaIVA' => $item->getValorSinIva(),
  154.         'valorIva' => $item->getIva(),
  155.         'iva' => $idPorcentajeIva,
  156.         'registrado' => $item->getRegistrado(),
  157.         'total' => $total,
  158.         'numeroPagosCredito' => $item->getNumeroPagosCredito(),
  159.         'credito' => $item->getCredito() ? 'Si' 'No',
  160.         'estado' => $item->getPagada() ? 'PAGADO' 'PENDIENTE',
  161.         'proveedor' => $proveedor
  162.       ]);
  163.       return $list;
  164.     }
  165.     /**
  166.      * @Route("/getInitialProveedores", name="getInitialProveedores")
  167.      */
  168.     public function getInitialProveedores() {
  169.       $list = [];
  170.       $proveedores $this->em->getRepository(Proveedores::class)->findBy([], ['nombre' => 'ASC']);
  171.       foreach ($proveedores as $proveedor) {
  172.         array_push($list, [
  173.           'id' => $proveedor->getId(),
  174.           'ruc' => $proveedor->getRuc(),
  175.           'nombre' => $proveedor->getNombre(),
  176.           'direccion' => $proveedor->getDireccion()
  177.         ]);
  178.       }
  179.       return $this->json($list200);
  180.     }
  181.     /**
  182.      * @Route("/getInitialPorcentajeIva", name="getInitialPorcentajeIva")
  183.      */
  184.     public function getInitialPorcentajeIva() {
  185.       $porcentajeIva $this->em->getRepository(PorcentajeIva::class)->findAll();
  186.       return $this->json($porcentajeIva200);
  187.     }
  188.     /**
  189.      * @Route("/getInitialDetalleComprobante", name="getInitialDetalleComprobante")
  190.      */
  191.     public function getInitialDetalleComprobante(Request $request) {
  192.       $list = [];
  193.       $id $request->request->get('id');
  194.       $comprasInsumos $this->em->getRepository(ComprasInsumos::class)->findBy(['idComprobantesCompra' => $id], ['id' => 'DESC']);
  195.       foreach ($comprasInsumos as $compraInsumo) {
  196.         $list $this->setArrayCompras($list$compraInsumo);
  197.       }
  198.       return $this->json($list200);
  199.     }
  200.     private function setArrayCompras($list$compraInsumo) {
  201.       $comprobante $compraInsumo->getIdComprobantesCompra();
  202.       $solicitudCompra $compraInsumo->getIdSolicitudCompra();
  203.       $marcaInsumo $compraInsumo->getIdMarcaInsumo();
  204.       $presentacionInsumo $compraInsumo->getIdPresentacionInsumos();
  205.       $porcentajeIva $compraInsumo->getIdComprobantesCompra() ? $comprobante->getPorcentajeIva() : 0;
  206.       if ($compraInsumo->getTarifa0()) :
  207.         $iva 0;
  208.         $total doubleval($compraInsumo->getValorCompra());
  209.       else:
  210.         $iva doubleval($compraInsumo->getValorCompra() * doubleval($porcentajeIva 100));
  211.         $total doubleval($compraInsumo->getValorCompra()) + doubleval($iva);
  212.       endif;
  213.       array_push($list, [
  214.         'id' => $compraInsumo->getId(),
  215.         'idInsumos' => [
  216.           'id' => $compraInsumo->getIdInsumos()->getId(),
  217.           'nombre' => $compraInsumo->getIdInsumos()->getNombre(),
  218.           'idUnidadesInsumos' => [
  219.             'nombre' => $compraInsumo->getIdInsumos()->getIdUnidadesInsumos()->getNombre()
  220.           ],
  221.         ],
  222.         'cantidadSolicitada' => $compraInsumo->getCantidadSolicitada() ?? 0,
  223.         'cantidadPresentacion' => $compraInsumo->getCantidadPresentacion(),
  224.         'unidadesPresentacion' => $compraInsumo->getUnidadesPresentacion() ?? 0,
  225.         'cantidadCompra' => $compraInsumo->getCantidadCompra(),
  226.         'valorUnitario' => $compraInsumo->getValorUnitario(),
  227.         'tarifa0' => $compraInsumo->getTarifa0(),
  228.         'idSolicitudCompra' => [
  229.           'codigoSolicitud' => $solicitudCompra->getCodigoSolicitud(),
  230.         ],
  231.         'idComprobantesCompra' => $comprobante ? [
  232.           'porcentaje' => $comprobante->getPorcentajeIva() ?? 0,
  233.           'numero' => $comprobante->getNumero(),
  234.           'fecha' => $comprobante->getFecha()->format('Y-m-d'),
  235.           'idTipoComprobanteCompra' => [
  236.             'nombre' => $comprobante->getIdTipoComprobanteCompra()->getNombre(),
  237.           ],
  238.           'idProveedores' => $comprobante->getIdProveedores() ? [
  239.             'nombre' => $comprobante->getIdProveedores()->getNombre(),
  240.           ] : null,
  241.         ] : null,
  242.         'idMarcaInsumo' => $marcaInsumo ? [
  243.           'nombre' => $marcaInsumo->getNombre(),
  244.         ] : null,
  245.         'idPresentacionInsumo' => $presentacionInsumo ? [
  246.           'nombre' => $presentacionInsumo->getNombre(),
  247.         ] : null,
  248.         'subtotal' => $compraInsumo->getValorUnitario(),
  249.         'iva' => $iva,
  250.         'total' => $total
  251.       ]);
  252.       return $list;
  253.     }
  254.   // * CREATE OR UPDATE FUNCTIONS *
  255.     /**
  256.      * @Route("/addComprobantesCompra", name="addComprobantesCompra")
  257.      */
  258.     public function addComprobantesCompra(Request $requestUserInterface $userDocumentsService $documentsService) {
  259.       try {
  260.         $data $request->request->get('comprobante_compras');
  261.         //return $this->json($data, 200);
  262.         $id $data['id'];
  263.         if ($id != null) :
  264.           $pagoCredito $this->em->getRepository(PagoCredito::class)->findOneBy(['idComprobantesCompra' => $id]);
  265.           if ($pagoCredito) :
  266.             return $this->json(['response' => false'message' => "Lo sentimos, el comprobante ya tiene registros de pagos de un credito."]);
  267.           endif;
  268.         endif;
  269.         $comprobanteCompra = ($id != null) ? $this->em->getRepository(ComprobantesCompra::class)->find($data['id']) : new ComprobantesCompra;
  270.         $comprobanteCompra $this->setDataComprobante($data$comprobanteCompra$user);
  271.         $message = ($id != null) ? $this->msgUpdate $this->msgCreate;
  272.         $this->em->persist($comprobanteCompra);
  273.         if ($data['idTipoComprobanteCompra'] != 4) :
  274.           if ($_FILES['comprobante_compras']['error']['comprobante'][0] != 4) :
  275.             $this->setComprobantesCompra($comprobanteCompra$user$documentsService);
  276.           endif;
  277.         endif;
  278.         if ($data['id'] == "") :
  279.           if (isset($data['numeroPagosCredito'])) {
  280.             for ($i 0$i $data['numeroPagosCredito'] ; $i++) { 
  281.               $pagoCredito = new PagoCredito;
  282.               $pagoCredito->setIdComprobantesCompra($comprobanteCompra)->setPagado(false);
  283.               $pagoCredito $this->setGenericData($user$pagoCredito);
  284.               $this->em->persist($pagoCredito);
  285.             }
  286.           }
  287.         endif;
  288.         $this->em->flush();
  289.         return $this->json(['response' => true'message' => $message]);
  290.       } catch (Exception $e) {
  291.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>addComprobantesCompra</i>"]);
  292.       }
  293.     }
  294.     private function setDataComprobante($dataComprobantesCompra $comprobante$user) {
  295.       $idTipoComprobanteCompra $this->em->getRepository(TipoComprobanteCompra::class)->find($data['idTipoComprobanteCompra']);
  296.       $idPorcentajeIva $this->em->getRepository(PorcentajeIva::class)->find(isset($data['idPorcentajeIva']) ? $data['idPorcentajeIva'] : 0);
  297.       $iva 0$porcentajeIVA 0;
  298.       if (isset($data['idPorcentajeIva'])) :
  299.         $porcentajeIVA intval($idPorcentajeIva->getPorcentaje());
  300.         $iva $data['iva'];
  301.       endif;
  302.       $date = \DateTime::createFromFormat('Y-m-d'$data['fecha']);
  303.       if (strtoupper($idTipoComprobanteCompra->getNombre()) == 'SIN DOCUMENTO') { //Secuencial
  304.         if ($data['id'] == '') {
  305.           $numero $this->setSecuencial($user);
  306.           $comprobante->setNumero($numero);
  307.         }
  308.       } else {
  309.         $comprobante->setNumero($data['numero']);
  310.       }
  311.       $comprobante
  312.         ->setFecha($date)
  313.         ->setPorcentajeIva($porcentajeIVA)
  314.         ->setValorIvaCero($data['valorIvaCero'])
  315.         ->setValorDescuento(0)
  316.         ->setIva($iva)
  317.         ->setIdProveedores($this->em->getRepository(Proveedores::class)->find($data['idProveedor']))
  318.         ->setIdMedioPago($this->em->getRepository(MedioPago::class)->find($data['idMedioPago']))
  319.         ->setObservacion($data['observacion'])
  320.         ->setIdTipoComprobanteCompra($idTipoComprobanteCompra)
  321.         ->setIdSubtipoGasto($this->em->getRepository(SubtipoGasto::class)->find($data['idSubtipoGasto']))
  322.         ->setCredito(false)
  323.         ->setRegistrado(false)
  324.         ->setCompraBien(isset($data['compraBien']) ? true false)
  325.         ->setNumeroPagosCredito(0);
  326.       if (isset($data['valorSinIva'])) {
  327.         $comprobante->setValorSinIva($data['valorSinIva']);
  328.       } else { $comprobante->setValorSinIva(0); }
  329.       if (isset($data['estado'])) {
  330.         $comprobante->setPagada($data['estado'] == 'PAGADO' true false);
  331.       }
  332.       if (isset($data['numeroPagosCredito'])) {
  333.         $comprobante
  334.         ->setCredito(true)
  335.         ->setNumeroPagosCredito($data['numeroPagosCredito']);
  336.       } else {
  337.         $comprobante
  338.         ->setCredito(false);
  339.       }
  340.       $comprobante $this->setGenericData($user$comprobante);
  341.       return $comprobante;
  342.     }
  343.     private function setSecuencial($user) {
  344.       $comprobantes $this->em->getRepository(ComprobantesCompra::class)->findAll();
  345.       $count 0;
  346.       if ($comprobantes) {
  347.         foreach ($comprobantes as $comp) {
  348.           $numero $comp->getNumero();
  349.           if (stristr($numero'_')) {
  350.             $numero explode('_'$numero);
  351.             if ($numero[0] == $user->getIdPersona()->getNumeroIdentificacion()) {
  352.               $count++;
  353.             }
  354.           }
  355.         }
  356.       }
  357.       $count++;
  358.       $numero "{$user->getIdPersona()->getNumeroIdentificacion()}_{$count}";
  359.       return $numero;
  360.     }
  361.     private function setComprobantesCompra($comprobanteCompra$user$documentsService) {
  362.       $type $_FILES['comprobante_compras']['type'];
  363.       $size $_FILES['comprobante_compras']['size'];
  364.       $tmp_name $_FILES['comprobante_compras']['tmp_name'];
  365.       $name $_FILES['comprobante_compras']['name'];
  366.       $countComprobantes count($_FILES['comprobante_compras']['name']['comprobante']);
  367.       if ($countComprobantes 0) :
  368.         for ($i 0$i $countComprobantes$i++) {
  369.           $comprobante $documentsService->getEstructureDocument($name['comprobante'][$i], $size['comprobante'][$i], $tmp_name['comprobante'][$i], $type['comprobante'][$i]);
  370.           $documentName $documentsService->flushDocument($comprobante"COMP_COMRP"'docs_directory');
  371.           $addDocument $documentsService->addDocument($comprobante$documentName"images/documents/$documentName"true$usernull);
  372.           $documentosComprobantesCompra = new DocumentosComprobantesCompra;
  373.           $documentosComprobantesCompra
  374.             ->setIdCargaDocumento($addDocument)
  375.             ->setIdComprobantesCompra($comprobanteCompra)
  376.           ;
  377.           $documentosComprobantesCompra $this->setGenericData($user$documentosComprobantesCompra);
  378.           $this->em->persist($documentosComprobantesCompra);
  379.         }
  380.       endif;
  381.     }
  382.     /**
  383.      * @Route("/setCheckRegistrado", name="setCheckRegistrado")
  384.      */
  385.     public function setCheckRegistrado(Request $request) {
  386.       try {
  387.         $id $request->request->get('id');
  388.         $val $request->request->get('val');
  389.         $comprobantesCompra $this->em->getRepository(ComprobantesCompra::class)->find($id);
  390.         if ($val === 'true') :
  391.           $comprobantesCompra->setRegistrado(true);
  392.         else:
  393.           $comprobantesCompra->setRegistrado(false);
  394.         endif;
  395.         $this->em->persist($comprobantesCompra);
  396.         $this->em->flush();
  397.         return $this->json(['response' => true'message' => $this->msgUpdate]);
  398.       } catch (Exception $e) {
  399.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>setCheckRegistrado</i>"]);
  400.       }
  401.     }
  402.     /**
  403.      * @Route("/setCheckPagadoCredito", name="setCheckPagadoCredito")
  404.      */
  405.     public function setCheckPagadoCredito(Request $request) {
  406.       try {
  407.         $id $request->request->get('id');
  408.         $val $request->request->get('val');
  409.         $pagoCredito $this->em->getRepository(PagoCredito::class)->find($id);
  410.         if ($val === 'true') :
  411.           $pagoCredito->setPagado(true);
  412.         else:
  413.           $pagoCredito->setPagado(false);
  414.         endif;
  415.         $this->em->persist($pagoCredito);
  416.         $this->em->flush();
  417.         return $this->json(['response' => true'message' => $this->msgUpdate]);
  418.       } catch (Exception $e) {
  419.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>setCheckPagadoCredito</i>"]);
  420.       }
  421.     }
  422.     /**
  423.      * @Route("/setFechaPagoCredito", name="setFechaPagoCredito")
  424.      */
  425.     public function setFechaPagoCredito(Request $requestUserInterface $user) {
  426.       try {
  427.         $id $request->request->get('id');
  428.         $fecha = \DateTime::createFromFormat('Y-m-d'$request->request->get('fecha'));
  429.         $pagoCredito $this->em->getRepository(PagoCredito::class)->find($id);
  430.         $pagoCredito->setFechaPago($fecha);
  431.         $pagoCredito $this->setGenericData($user$pagoCredito);
  432.         $this->em->persist($pagoCredito);
  433.         $this->em->flush();
  434.         return $this->json(['response' => true'message' => $this->msgUpdate]);
  435.       } catch (Exception $e) {
  436.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>setFechaPagoCredito</i>"]);
  437.       }
  438.     }
  439.     /**
  440.      * @Route("/setValorPagoCredito", name="setValorPagoCredito")
  441.      */
  442.     public function setValorPagoCredito(Request $requestUserInterface $user) {
  443.       try {
  444.         $id $request->request->get('id');
  445.         $valor $request->request->get('valor');
  446.         $pagoCredito $this->em->getRepository(PagoCredito::class)->find($id);
  447.         $pagoCredito->setValor($valor);
  448.         $pagoCredito $this->setGenericData($user$pagoCredito);
  449.         $this->em->persist($pagoCredito);
  450.         $this->em->flush();
  451.         return $this->json(['response' => true'message' => $this->msgUpdate]);
  452.       } catch (Exception $e) {
  453.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>setValorPagoCredito</i>"]);
  454.       }
  455.     }
  456.     private function setGenericData($user null$entity) {
  457.       $entity->setIdUsuarioModificacion($user != null $user->getId() : '1')
  458.       ->setFechaModificacion(new \DateTime())
  459.         ->setIpModificacion($_SERVER['REMOTE_ADDR']);
  460.       return $entity;
  461.     }
  462.   // * DELETE FUNCTIONS *
  463.     /**
  464.      * @Route("/deleteComprobantesCompras", name="deleteComprobantesCompras")
  465.      */
  466.     public function deleteComprobantesCompras(Request $request) {
  467.       try {
  468.         $id $request->request->get('id');
  469.         $comprobantesCompra $this->em->getRepository(ComprobantesCompra::class)->find($id);
  470.         $comprasInsumos $this->em->getRepository(ComprasInsumos::class)->findOneBy(['idComprobantesCompra' => $id]);
  471.         if ($comprasInsumos) :
  472.           return $this->json(['response' => false'exception' => false], 200);
  473.         endif;
  474.         $this->em->remove($comprobantesCompra);
  475.         $this->em->flush();
  476.         return $this->json(['response' => true'message' => $this->msgDelete'exception' => false], 200);
  477.       } catch (Exception $e) {
  478.         return $this->json(['response' => false'message' => "<b>{$e->getMessage()}</b> error al realizar el registro dentro de la petición <i>deleteComprobantesCompras</i>"'exception' => true]);
  479.       }
  480.     }
  481.   // * EXPORTS *
  482.     /**
  483.      * @Route("/getExcelComprobantesCompra", name="getExcelComprobantesCompra")
  484.      */
  485.     public function getExcelComprobantesCompra() {
  486.       $spreadsheet = new Spreadsheet();
  487.       $sheet $spreadsheet->getActiveSheet();
  488.       $sheet->setTitle("Comprobantes");
  489.       $headers = ['id''documento''ruc''nombre''valor''nro. documento''fecha compra''iva''total''credito''registrado''estado'];
  490.       $sheet->fromArray$headersNULL'A1' );
  491.       $lista $this->cache->get('excelListComprobantesCompras');
  492.       $lista = !$lista ? [] : $lista;
  493.       if(count($lista) != 0):
  494.         $data array_map(function ($menu) {
  495.           return [
  496.             $menu['id'],
  497.             $menu['idTipoComprobanteCompra']['nombre'],
  498.             $menu['idProveedores']['ruc'],
  499.             $menu['idProveedores']['nombre'],
  500.             round($menu['valor'], 2),
  501.             $menu['numero'],
  502.             $menu['fecha'],
  503.             $menu['iva'],
  504.             round($menu['total'], 2),
  505.             $menu['credito'] ? 'Sí' 'No',
  506.             $menu['estado'],
  507.             $menu['registrado'] ? 'Sí' 'No'
  508.           ];
  509.         }, $lista);
  510.       endif;
  511.       $sheet->fromArray($datanull'A2');
  512.       $writer = new Xlsx($spreadsheet);
  513.       $fileName 'comprobantes.xlsx';
  514.       $temp_file tempnam(sys_get_temp_dir(), $fileName);
  515.       $writer->save($temp_file);
  516.       return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  517.     }
  518. }