src/Controller/RecetaController.php line 1055

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Receta;
  4. use App\Entity\Clientes;
  5. use App\Entity\OrdenVenta;
  6. use App\Entity\Agenda;
  7. use App\Entity\DiagnosticosHistoriaClinica;
  8. use App\Form\RecetaObsType;
  9. use App\Form\RecetaType;
  10. use App\Form\RecetaDetalleType;
  11. use App\Form\DiagnosticosHistoriaClinicaType;
  12. use App\Repository\RecetaRepository;
  13. use App\Repository\ItemsCargosRepository;
  14. use App\Repository\EmpresaRepository;
  15. use App\Repository\HistoriaClinicaRepository;
  16. use App\Repository\AgendaRepository;
  17. use App\Repository\OrdenVentaRepository;
  18. use App\Repository\ClientesRepository;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Knp\Component\Pager\PaginatorInterface;
  24. use Symfony\Component\Security\Core\Security;
  25. use App\Entity\RecetaDetalle;
  26. use Dompdf\Dompdf;
  27. use Dompdf\Options;
  28. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  29. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  30. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  31. use PhpOffice\PhpSpreadsheet\Writer\Xls;
  32. use PhpOffice\PhpSpreadsheet\Style\Border;
  33. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  34. use CodeItNow\BarcodeBundle\Utils\QrCode;
  35. use CodeItNow\BarcodeBundle\Utils\BarcodeGenerator;
  36. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  37. /**
  38.  * @Route("/receta")
  39.  */
  40. class RecetaController extends AbstractController
  41. {
  42.     /**
  43.      * @var Security
  44.      */
  45.     private $security;
  46.     public function __construct(Security $security)
  47.     {
  48.        date_default_timezone_set("America/Guayaquil");
  49.        $this->security $security;
  50.     }
  51.     /**
  52.      * @Route("/{id_historia}", name="receta_index", methods={"GET"})
  53.      */
  54.     public function index(RecetaRepository $recetaRepository,Request $request$id_historiaHistoriaClinicaRepository $historiaClinicaRepositoryPaginatorInterface $paginatorOrdenVentaRepository $ordenVentaRepositoryClientesRepository $clientesRepository): Response
  55.     {
  56.         $ip     $request->getClientIp();
  57.         $user   $this->security->getUser();
  58.         $historia   $historiaClinicaRepository->find($id_historia);
  59.         $fecha_hc   date_format($historia->getCreatedAt(),'Y-m-d');
  60.         /***************************************************/
  61.         $orden  $ordenVentaRepository->findOneBy(['id_agenda' => $historia->getAgenda()->getId(), 'tipo' => 'FAR_IESS']);
  62.         
  63.             
  64.             $cliente $clientesRepository->findOneBy(['cedula_ruc' => $historia->getPaciente()->getCedula()]);
  65.             if(is_null($cliente)){
  66.                 $cliente =  new Clientes();
  67.                 $cliente->setIpModifica($ip);
  68.                 $cliente->setUserModifica($user->getId()); 
  69.                 $cliente->setIpCrea($ip);
  70.                 $cliente->setUserCrea($user->getId()); 
  71.             }
  72.             $fecha = new \DateTime("now");
  73.             $orden = new OrdenVenta();
  74.             $orden->setCedulaRuc($historia->getPaciente()->getCedula());
  75.             $cliente->setCedulaRuc($historia->getPaciente()->getCedula());
  76.             $orden->setPaciente($historia->getPaciente());
  77.             $orden->setIdAgenda($historia->getAgenda()->getId());
  78.             $orden->setRazonSocial($historia->getPaciente()->getApellido1().' '.$historia->getPaciente()->getApellido2().' '.$historia->getPaciente()->getNombre1().' '.$historia->getPaciente()->getNombre2());
  79.             $cliente->setRazonSocial($historia->getPaciente()->getApellido1().' '.$historia->getPaciente()->getApellido2().' '.$historia->getPaciente()->getNombre1().' '.$historia->getPaciente()->getNombre2());
  80.             $ciudad $historia->getPaciente()->getCiudad();
  81.             
  82.             if($ciudad == null){
  83.                 $ciudad ' ';
  84.             }
  85.             $orden->setCiudad($ciudad);
  86.             $cliente->setCiudad($ciudad);
  87.             $direccion $historia->getPaciente()->getDireccion();
  88.            
  89.             if($direccion!=null){
  90.                 $orden->setDireccion($direccion);
  91.             }
  92.             
  93.             $cliente->setDireccion($direccion);
  94.             $telefono $historia->getPaciente()->getTelefono();
  95.             
  96.             if($telefono!=null){
  97.                 $orden->setTelefono($telefono);
  98.             }
  99.             
  100.             $cliente->setTelefono($telefono);
  101.             $email $historia->getPaciente()->getEmail();
  102.             if($email!=null){
  103.                 $orden->setEmail($email);
  104.                 $cliente->setEmail($email);
  105.             }
  106.             
  107.             $orden->setTotal(0);
  108.             $orden->setIva(0);
  109.             $orden->setSubtotal(0);
  110.             $orden->setOda(0);
  111.             $orden->setDescuento(0);
  112.             $orden->setTipo('FAR_IESS');
  113.             $orden->setEstado(1);
  114.             $cliente->setEstado(1);
  115.             $orden->setFecha($fecha);
  116.             $orden->setIpCrea($ip);
  117.             $orden->setIpModifica($ip);
  118.             $orden->setUserCrea($user->getId());
  119.             $orden->setUserModifica($user->getId());
  120.             
  121.             $entityManager $this->getDoctrine()->getManager();
  122.             $entityManager->persist($orden);
  123.             $entityManager->persist($cliente);
  124.             $entityManager->flush(); 
  125.         
  126.         /****************************************************/
  127.         //$receta_hoy = $recetaRepository->findAllByPaciente2($historia->getPaciente()->getId(),$fecha_hc);
  128.         
  129.         $doctor $historia->getAgenda()->getDoctor();
  130.         if(is_null($doctor)){
  131.             $doctor $this->security->getUser();        
  132.         }
  133.         $fecha = new \DateTime("now");
  134.         $recetum = new Receta();
  135.         $recetum->setDoctor($doctor);
  136.         $recetum->setEstado(1);
  137.         $recetum->setCerrada(0);
  138.         $recetum->setPaciente($historia->getPaciente());
  139.         $recetum->setHistoria($historia);
  140.         $recetum->setFecha($fecha);
  141.         $recetum->setIpCrea($ip);
  142.         $recetum->setIpModifica($ip);
  143.         $recetum->setUserCrea($user->getId());
  144.         $recetum->setUserModifica($user->getId()); 
  145.         $entityManager $this->getDoctrine()->getManager();
  146.         $entityManager->persist($recetum);
  147.         $entityManager->flush();  
  148.         return $this->redirectToRoute('receta_edit',[
  149.             'id'         => $recetum->getId(),
  150.         ]); 
  151.         
  152.     }
  153.     /**
  154.      * @Route("/new", name="receta_new", methods={"GET","POST"})
  155.      */
  156.     public function new(Request $request): Response
  157.     {
  158.         $recetum = new Receta();
  159.         $form $this->createForm(RecetaType::class, $recetum);
  160.         $form->handleRequest($request);
  161.         if ($form->isSubmitted() && $form->isValid()) {
  162.             $entityManager $this->getDoctrine()->getManager();
  163.             $entityManager->persist($recetum);
  164.             $entityManager->flush();
  165.             return $this->redirectToRoute('receta_index');
  166.         }
  167.         return $this->render('receta/new.html.twig', [
  168.             'recetum' => $recetum,
  169.             'form' => $form->createView(),
  170.         ]);
  171.     }
  172.     /**
  173.      * @Route("/{id}", name="receta_show", methods={"GET"})
  174.      */
  175.     public function show(Receta $recetum): Response
  176.     {
  177.         return $this->render('receta/show.html.twig', [
  178.             'recetum' => $recetum,
  179.         ]);
  180.     }
  181.     /**
  182.      * @Route("/{id}/edit/", name="receta_edit", methods={"GET","POST"})
  183.      */
  184.     public function edit(Request $requestReceta $recetumRecetaRepository $recetarepository): Response
  185.     {
  186.         /*$form = $this->createForm(RecetaType::class, $recetum);
  187.         $form->handleRequest($request);*/
  188.         $recetaDetalle = new RecetaDetalle();
  189.         $form_d $this->createForm(RecetaDetalleType::class, $recetaDetalle);
  190.         $form_d->handleRequest($request);
  191.         $form_d->get('receta')->setData($recetum->getId());
  192.         $fecha_receta $recetum->getFecha();
  193.         $id_paciente  $recetum->getPaciente()->getId();
  194.         //$historia     = $historiaClinicaRepository->findByPaciente($id_paciente,date_format($fecha_receta,'Y-m-d'));
  195.         $historia     $recetum->getHistoria();
  196.         $dxs          $historia->getDiagnosticosHistoriaClinicas();
  197.         /*if ($form->isSubmitted() && $form->isValid()) {
  198.             $this->getDoctrine()->getManager()->flush();
  199.             return $this->redirectToRoute('receta_index');
  200.         }*/
  201.         $form_r $this->createForm(RecetaObsType::class, $recetum);
  202.         $form_r->handleRequest($request);
  203.         $form_r->get('observacion')->setData($recetum->getObservacion());
  204.         
  205.         $diagnosticosHistoriaClinica = new DiagnosticosHistoriaClinica();
  206.         $form_dx $this->createForm(DiagnosticosHistoriaClinicaType::class, $diagnosticosHistoriaClinica);
  207.         $form_dx->handleRequest($request);
  208.         
  209.         $recetas $recetarepository->findAllByPacienteOK($recetum->getPaciente())->getResult();
  210.         return $this->render('receta/edit.html.twig', [
  211.             'recetum'    => $recetum,
  212.             //'form'       => $form_d->createView(),
  213.             'form_d'     => $form_d->createView(),
  214.             'form_r'     => $form_r->createView(),
  215.             'detalles'   => $recetum->getRecetaDetalles(),
  216.             'dxs'        => $dxs,
  217.             'form_dx'    => $form_dx->createView(),
  218.             'recetas'     => $recetas,
  219.         ]);
  220.     }
  221.     /**
  222.      * @Route("/{id}/storage/obs", name="receta_storage_obs", methods={"GET","POST"})
  223.      */
  224.     public function receta_storage_obs(Request $requestReceta $recetum): Response
  225.     {
  226.         
  227.         $form_r $this->createForm(RecetaObsType::class, $recetum);
  228.         $form_r->handleRequest($request);
  229.       
  230.         if ($form_r->isSubmitted() && $form_r->isValid()) {
  231.             $this->getDoctrine()->getManager()->flush();
  232.             return $this->json(['estado' => 'ok''receta' => $recetum->getId()]); 
  233.         }
  234.         return $this->json(['estado' => 'error''receta' => '']); 
  235.         
  236.     }
  237.     /**
  238.      * @Route("/{id}", name="receta_delete", methods={"DELETE"})
  239.      */
  240.     public function delete(Request $requestReceta $recetum): Response
  241.     {
  242.         if ($this->isCsrfTokenValid('delete'.$recetum->getId(), $request->request->get('_token'))) {
  243.             $entityManager $this->getDoctrine()->getManager();
  244.             $entityManager->remove($recetum);
  245.             $entityManager->flush();
  246.         }
  247.         return $this->redirectToRoute('receta_index');
  248.     }
  249.     /**
  250.      * @Route("/imprimir/{id}", name="receta_imprimir", methods={"GET"})
  251.      */
  252.     public function imprimir_receta(Request $requestReceta $recetumHistoriaClinicaRepository $historiaClinicaRepositoryEmpresaRepository $empresaRepositoryAgendaRepository $agendaRepository): Response
  253.     {
  254.         // Configure Dompdf según sus necesidades
  255.         
  256.         $unidad $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
  257.         $empresa $empresaRepository->find($unidad->getId());
  258.         $fecha_receta $recetum->getFecha();
  259.         $historia     $recetum->getHistoria();
  260.         $dxs          $historia->getDiagnosticosHistoriaClinicas();
  261.         $arr_mes = ['''ENERO''FEBRERO''MARZO''ABRIL''MAYO''JUNIO''JULIO''AGOSTO''SEPTIEMBRE''OCTUBRE''NOVIEMBRE''DICIEMBRE'];
  262.        
  263.         $pdfOptions = new Options();
  264.         $pdfOptions->set('defaultFont''Arial');
  265.         $pdfOptions->set('isRemoteEnabled'TRUE);
  266.         $pdfOptions->set('isHtml5ParserEnabled'TRUE);
  267.         //$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
  268.         // Crea una instancia de Dompdf con nuestras opciones
  269.         $dompdf = new Dompdf($pdfOptions);
  270.         
  271.         // Recupere el HTML generado en nuestro archivo twig
  272.         $html $this->renderView('receta/receta_pdf.html.twig', [
  273.             'recetum' => $recetum,
  274.             'dxs'     => $dxs,
  275.             'empresa' => $empresa,
  276.             
  277.         ]);
  278.         
  279.         // Cargar HTML en Dompdf
  280.         $dompdf->loadHtml($html);
  281.         //$dompdf->loadHtmlFile($html);
  282.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  283.         //$dompdf->setPaper('A4', 'portrait');
  284.         $dompdf->setPaper('A4''landscape');
  285.         // Renderiza el HTML como PDF
  286.         $dompdf->render();
  287.         // Envíe el PDF generado al navegador (vista en línea)
  288.         $dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
  289.             "Attachment" => false
  290.         ]);
  291.     }
  292.     
  293.     
  294.     /**
  295.      * @Route("/imprimir/sin_membrete/{id}", name="receta_imprimir_sin_membrete", methods={"GET"})
  296.      */
  297.     public function imprimir_receta_sin_membrete(Request $requestReceta $recetumHistoriaClinicaRepository $historiaClinicaRepositoryEmpresaRepository $empresaRepositoryAgendaRepository $agendaRepository): Response
  298.     {
  299.         // Configure Dompdf según sus necesidades
  300.         
  301.         $unidad $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
  302.         $empresa $empresaRepository->find($unidad->getId());
  303.         $fecha_receta $recetum->getFecha();
  304.         $historia     $recetum->getHistoria();
  305.         $dxs          $historia->getDiagnosticosHistoriaClinicas();
  306.         $arr_mes = ['''ENERO''FEBRERO''MARZO''ABRIL''MAYO''JUNIO''JULIO''AGOSTO''SEPTIEMBRE''OCTUBRE''NOVIEMBRE''DICIEMBRE'];
  307.        
  308.         $pdfOptions = new Options();
  309.         $pdfOptions->set('defaultFont''Arial');
  310.         $pdfOptions->set('isRemoteEnabled'TRUE);
  311.         $pdfOptions->set('isHtml5ParserEnabled'TRUE);
  312.         //$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
  313.         // Crea una instancia de Dompdf con nuestras opciones
  314.         $dompdf = new Dompdf($pdfOptions);
  315.         
  316.         // Recupere el HTML generado en nuestro archivo twig
  317.         $html $this->renderView('receta/receta_sin_membrete_pdf.html.twig', [
  318.             'recetum' => $recetum,
  319.             'dxs'     => $dxs,
  320.             'empresa' => $empresa,
  321.             
  322.         ]);
  323.         
  324.         // Cargar HTML en Dompdf
  325.         $dompdf->loadHtml($html);
  326.         //$dompdf->loadHtmlFile($html);
  327.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  328.         //$dompdf->setPaper('A4', 'portrait');
  329.         $dompdf->setPaper('A4''landscape');
  330.         // Renderiza el HTML como PDF
  331.         $dompdf->render();
  332.         // Envíe el PDF generado al navegador (vista en línea)
  333.         $dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
  334.             "Attachment" => false
  335.         ]);
  336.         exit(0);
  337.     }
  338.     
  339.     /**
  340.      * @Route("/imprimir/sin_membrete/oto/{id}", name="receta_imprimir_sin_membrete_oto", methods={"GET"})
  341.      */
  342.     public function imprimir_receta_sin_membrete_oto(Request $requestReceta $recetumHistoriaClinicaRepository $historiaClinicaRepositoryEmpresaRepository $empresaRepositoryAgendaRepository $agendaRepository): Response
  343.     {
  344.         // Configure Dompdf según sus necesidades
  345.         
  346.         $unidad $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
  347.         $empresa $empresaRepository->find($unidad->getId());
  348.         $fecha_receta $recetum->getFecha();
  349.         $historia     $recetum->getHistoria();
  350.         $dxs          $historia->getDiagnosticosHistoriaClinicas();
  351.         $arr_mes = ['''ENERO''FEBRERO''MARZO''ABRIL''MAYO''JUNIO''JULIO''AGOSTO''SEPTIEMBRE''OCTUBRE''NOVIEMBRE''DICIEMBRE'];
  352.        
  353.         $pdfOptions = new Options();
  354.         $pdfOptions->set('defaultFont''Arial');
  355.         $pdfOptions->set('isRemoteEnabled'TRUE);
  356.         $pdfOptions->set('isHtml5ParserEnabled'TRUE);
  357.         //$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
  358.         // Crea una instancia de Dompdf con nuestras opciones
  359.         $dompdf = new Dompdf($pdfOptions);
  360.         
  361.         // Recupere el HTML generado en nuestro archivo twig
  362.         $html $this->renderView('receta/receta_sin_membrete_pdf_oto.html.twig', [
  363.             'recetum' => $recetum,
  364.             'dxs'     => $dxs,
  365.             'empresa' => $empresa,
  366.             
  367.         ]);
  368.         
  369.         // Cargar HTML en Dompdf
  370.         $dompdf->loadHtml($html);
  371.         //$dompdf->loadHtmlFile($html);
  372.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  373.         //$dompdf->setPaper('A4', 'portrait');
  374.         $dompdf->setPaper('A4''landscape');
  375.         // Renderiza el HTML como PDF
  376.         $dompdf->render();
  377.         // Envíe el PDF generado al navegador (vista en línea)
  378.         $dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
  379.             "Attachment" => false
  380.         ]);
  381.         exit(0);
  382.     }
  383.      /**
  384.      * @Route("/imprimir_receta_excel/{id}", name="receta_imprimir_excel", methods={"GET"})
  385.      */
  386.     public function imprimir_receta_excel (Request $requestReceta $recetumHistoriaClinicaRepository $historiaClinicaRepositoryEmpresaRepository $empresaRepository): Response
  387.     {
  388.         $ip     $request->getClientIp();
  389.         $user   $this->security->getUser();
  390.         $empresa $empresaRepository->find(1);
  391.         $historia     $recetum->getHistoria();
  392.         $dxs          $historia->getDiagnosticosHistoriaClinicas();
  393.         $arr_mes = ['''ENERO''FEBRERO''MARZO''ABRIL''MAYO''JUNIO''JULIO''AGOSTO''SEPTIEMBRE''OCTUBRE''NOVIEMBRE''DICIEMBRE'];
  394.         $spreadsheet = new Spreadsheet();
  395.         
  396.         /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
  397.         $sheet $spreadsheet->getActiveSheet();
  398.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  399.         $drawing->setName('PhpSpreadsheet logo');
  400.         $drawing->setPath('./assets/images/logomedmisalud.png');
  401.         $drawing->setHeight(50);
  402.         $drawing->setCoordinates('A2');
  403.         $drawing->setWorksheet($sheet);
  404.         
  405.         $sheet->setTitle("Receta Excel");
  406.         $sheet->setCellValue('B4''RECETA MEDICA');
  407.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  408.         $drawing->setName('PhpSpreadsheet logo');
  409.         $drawing->setPath('./assets/images/iess2.png');
  410.         $drawing->setHeight(30);
  411.         $drawing->setCoordinates('C2'); 
  412.         $drawing->setWorksheet($sheet);
  413.         $sheet->setCellValue('A6''PACIENTE:');
  414.         $sheet->setCellValue('B6'$recetum->getPaciente()->getApellido1().' '.$recetum->getPaciente()->getApellido2().' '.$recetum->getPaciente()->getNombre1().' '.$recetum->getPaciente()->getNombre2());
  415.         $sheet->setCellValue('A7''EDAD:');
  416.         $sheet->setCellValue('B7'$recetum->getPaciente()->CalculaEdad());
  417.         $sheet->setCellValue('A8''CEDULA:');
  418.         $sheet->setCellValue('B8'$recetum->getPaciente()->getCedula());
  419.         $sheet->setCellValue('A9''ALERGIAS:');
  420.         $sheet->setCellValue('B9'$recetum->getPaciente()->getAlergias());
  421.         $sheet->setCellValue('A10''DOCTOR:');
  422.         $sheet->setCellValue('B10'$recetum->getDoctor()->getApellido1().' '.$recetum->getDoctor()->getApellido2().' '.$recetum->getDoctor()->getNombre1().' '.$recetum->getDoctor()->getNombre2());
  423.         $sheet->setCellValue('A11''FECHA:');
  424.         
  425.         $nmes date_format($recetum->getFecha(), 'm');
  426.         $year date_format($recetum->getFecha(), 'Y');
  427.         $day  date_format($recetum->getFecha(), 'd');
  428.         //dd($arr_mes[$nmes], $year, $day);
  429.         
  430.         $sheet->setCellValue('B11'$day.'/'.$arr_mes[$nmes].'/'.$year );
  431.         $sheet->setCellValue('B14''RP');
  432.         
  433.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  434.         $drawing->setName('PhpSpreadsheet logo1');
  435.         $drawing->setPath('./assets/images/logomedmisalud.png');
  436.         $drawing->setHeight(50);
  437.         $drawing->setCoordinates('F2');
  438.         $drawing->setWorksheet($sheet);
  439.         
  440.         $sheet->setCellValue('G4''RECETA MEDICA');
  441.         
  442.         
  443.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  444.         $drawing->setName('PhpSpreadsheet logo1');
  445.         $drawing->setPath('./assets/images/iess2.png');
  446.         $drawing->setHeight(30);
  447.         $drawing->setCoordinates('H2'); 
  448.         $drawing->setWorksheet($sheet);
  449.         
  450.         
  451.         $sheet->setCellValue('F6''PACIENTE:');
  452.         $sheet->setCellValue('G6'$recetum->getPaciente()->getApellido1().' '.$recetum->getPaciente()->getApellido2().' '.$recetum->getPaciente()->getNombre1().' '.$recetum->getPaciente()->getNombre2());
  453.         $sheet->setCellValue('F7''EDAD:');
  454.         $sheet->setCellValue('G7'$recetum->getPaciente()->CalculaEdad());
  455.         $sheet->setCellValue('F8''CEDULA:');
  456.         $sheet->setCellValue('G8'$recetum->getPaciente()->getCedula());
  457.         $sheet->setCellValue('F9''ALERGIAS:');
  458.         $sheet->setCellValue('G9'$recetum->getPaciente()->getAlergias());
  459.         $sheet->setCellValue('F10''DOCTOR:');
  460.         $sheet->setCellValue('G10'$recetum->getDoctor()->getApellido1().' '.$recetum->getDoctor()->getApellido2().' '.$recetum->getDoctor()->getNombre1().' '.$recetum->getDoctor()->getNombre2());
  461.         $sheet->setCellValue('F11''FECHA:');
  462.         $nmes date_format($recetum->getFecha(), 'm');
  463.         $year date_format($recetum->getFecha(), 'Y');
  464.         $day  date_format($recetum->getFecha(), 'd');
  465.         $sheet->setCellValue('G11'$day.'/'.$arr_mes[$nmes].'/'.$year );
  466.         $sheet->setCellValue('G14''PRESCRIPCION');
  467.         
  468.         $sheet->getStyle('B4:D4')->getFont()->setBold(true)->setSize(12);
  469.         $sheet->getStyle('B4:D4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  470.         $sheet->getStyle('A6')->getFont()->setBold(true)->setSize(10);
  471.         $sheet->getStyle('A7')->getFont()->setBold(true)->setSize(10);
  472.         $sheet->getStyle('A8')->getFont()->setBold(true)->setSize(10);
  473.         $sheet->getStyle('A9')->getFont()->setBold(true)->setSize(10);
  474.         $sheet->getStyle('A10')->getFont()->setBold(true)->setSize(10);
  475.         $sheet->getStyle('A11')->getFont()->setBold(true)->setSize(10);
  476.         $sheet->getStyle('B14')->getFont()->setBold(true)->setSize(10);
  477.         $sheet->getStyle('G4:I4')->getFont()->setBold(true)->setSize(12);
  478.         $sheet->getStyle('G4:I4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  479.         $sheet->getStyle('F6')->getFont()->setBold(true)->setSize(10);
  480.         $sheet->getStyle('F7')->getFont()->setBold(true)->setSize(10);
  481.         $sheet->getStyle('F8')->getFont()->setBold(true)->setSize(10);
  482.         $sheet->getStyle('F9')->getFont()->setBold(true)->setSize(10);
  483.         $sheet->getStyle('F10')->getFont()->setBold(true)->setSize(10);
  484.         $sheet->getStyle('F11')->getFont()->setBold(true)->setSize(10);
  485.         $sheet->getStyle('G14')->getFont()->setBold(true)->setSize(10);
  486.         
  487.         $sheet->getColumnDimension('A')->setWidth(9);
  488.         $sheet->getColumnDimension('B')->setWidth(70);
  489.         $sheet->getColumnDimension('C')->setWidth(9);
  490.         $sheet->getColumnDimension('D')->setWidth(1);
  491.         $sheet->getColumnDimension('E')->setWidth(3);
  492.         $sheet->getColumnDimension('F')->setWidth(9);
  493.         $sheet->getColumnDimension('G')->setWidth(70);
  494.         $sheet->getColumnDimension('H')->setWidth(3);
  495.         $sheet->getColumnDimension('I')->setWidth(2);
  496.         
  497.         
  498.         
  499.         $i 14;
  500.         $detalles $recetum->getRecetaDetalles();
  501.         $caracter = [','];
  502.         $cont 0$nsubtotal 0;
  503.         foreach ($detalles as $detalle) {
  504.             $cont++;$i++;
  505.             $sheet->setCellValue('A'.$i$cont);
  506.             $sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
  507.             $sheet->setCellValue('B'.$i$detalle->getNombre());
  508.             $sheet->getStyle('B'.$i)->getAlignment()->setWrapText(true);
  509.             $i++;
  510.             $sheet->setCellValue('B'.$i'Cantidad: '.$detalle->getCantidad());
  511.             
  512.             
  513.         } 
  514.         
  515.         $i++;
  516.         $sheet->setCellValue('A'.$i'DIAGNOSTICOS:');
  517.         $sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
  518.         
  519.         $i 14;
  520.         $detalles $recetum->getRecetaDetalles();
  521.         $caracter = ['.'];
  522.         $cont 0$nsubtotal 0;
  523.         foreach ($detalles as $detalle) {
  524.             $cont++;$i++;
  525.             $sheet->setCellValue('F'.$i$cont);
  526.             $sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
  527.             $sheet->setCellValue('G'.$i$detalle->getNombre());
  528.             $sheet->getStyle('G'.$i)->getAlignment()->setWrapText(true);
  529.             $i++;
  530.             $sheet->setCellValue('G'.$i'Indicación: '.$detalle->getIndicacion());
  531.             $sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
  532.         }
  533.         
  534.         $i++;
  535.         $sheet->setCellValue('F'.$i'DIAGNOSTICOS:');
  536.         $sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
  537.         $cont 0;
  538.         $i++;
  539.         $dxs $historia->getDiagnosticosHistoriaClinicas();
  540.         foreach ($dxs as $value) {
  541.                 $cont++;$i++;
  542.                 $sheet->setCellValue('A'.$i$value->getCie10()->getCodigo());
  543.                 $sheet->setCellValue('B'.$i$value->getCie10()->getNombre())->mergeCells('B'.$i.':D'.$i);
  544.                 $sheet->setCellValue('F'.$i$value->getCie10()->getCodigo());
  545.                 $sheet->setCellValue('G'.$i$value->getCie10()->getNombre())->mergeCells('G'.$i.':I'.$i);
  546.         }
  547.        
  548.         $i++;    
  549.         $sheet->setCellValue('A'.$i' ')->mergeCells('A'.$i.':E'.$i);
  550.        
  551.         $i++;    
  552.         $sheet->setCellValue('F'.$i' ')->mergeCells('F'.$i.':I'.$i);
  553.        
  554.         if($recetum->getDoctor()->getFirma() != null){
  555.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  556.         $drawing->setName('PhpSpreadsheet logo');
  557.         $drawing->setPath('./assets/images/firmas/'.$recetum->getDoctor()->getFirma());
  558.         $drawing->setHeight(90);
  559.         $drawing->setCoordinates('B'.$i'');
  560.         $drawing->setWorksheet($sheet);
  561.         }
  562.         
  563.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  564.         $drawing->setName('PhpSpreadsheet logo');
  565.         $drawing->setPath('./assets/images/firmas/salvarado.png');
  566.         $drawing->setHeight(60);
  567.         $drawing->setCoordinates('C'.$i'');
  568.         $drawing->setWorksheet($sheet);
  569.         
  570.         if($recetum->getDoctor()->getFirma() != null){
  571.             $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  572.             $drawing->setName('PhpSpreadsheet logo3');
  573.             $drawing->setPath('./assets/images/firmas/'.$recetum->getDoctor()->getFirma());
  574.             $drawing->setHeight(90);
  575.             $drawing->setCoordinates('G'.$i'');
  576.             $drawing->setWorksheet($sheet);
  577.         }
  578.         
  579.         $i $i+9
  580.         $sheet->setCellValue('B'.$i'AV RIOS TUMBEZ E AV RAFAEL VELDEZ MURILLO Y AV RIO PALORA');
  581.         $sheet->setCellValue('G'.$i'AV RIOS TUMBEZ E AV RAFAEL VELDEZ MURILLO Y AV RIO PALORA');
  582.         $sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(7);
  583.         $sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  584.         $sheet->getStyle('G'.$i)->getFont()->setBold(true)->setSize(7);
  585.         $sheet->getStyle('G'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  586.         
  587.         $i++; 
  588.         $sheet->setCellValue('B'.$i'Telefono: 0959563038 Email: info@medmisalud.com');
  589.         $sheet->setCellValue('G'.$i'Telefono: 0959563038 Email: info@medmisalud.com');
  590.         $sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(7);
  591.         $sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  592.         $sheet->getStyle('G'.$i)->getFont()->setBold(true)->setSize(7);
  593.         $sheet->getStyle('G'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  594.         
  595.         
  596.         
  597.         // Create your Office 2007 Excel (XLSX Format)
  598.         $writer = new Xlsx($spreadsheet);
  599.         
  600.         // Create a Temporary file in the system
  601.         $fileName 'RECETA.xlsx';
  602.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  603.         
  604.         // Create the excel file in the tmp directory of the system
  605.         $writer->save($temp_file);
  606.         
  607.         // Return the excel file as an attachment
  608.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  609.     }
  610.     
  611.     /**
  612.      * @Route("/nota_de_entrega/excel/{id}", name="nota_de_entrega_excel2", methods={"GET"})
  613.      */
  614.      public function nota_de_entrega_excel2 (Receta $receta,EmpresaRepository $empresaRepositoryOrdenVentaRepository $ordenVentaRepositoryAgendaRepository $agendaRepositoryRequest $requestClientesRepository $clientesRepositoryItemsCargosRepository $itemsCargosRepository){
  615.      
  616.         $ip     $request->getClientIp();
  617.         //dd($ip);
  618.         $user   $this->security->getUser();
  619.         //dd($user);
  620.         $empresa $empresaRepository->find(1);
  621.         //dd($empresa);
  622.          
  623.         $agenda $receta->getHistoria()->getAgenda();
  624.         $hc null$fecha_citanull;
  625.         if($agenda != null){  
  626.         
  627.             $fecha_cita $agenda->getInicio();
  628.    
  629.         }    
  630.         $spreadsheet = new Spreadsheet();
  631.         
  632.         /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
  633.         $sheet $spreadsheet->getActiveSheet();
  634.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  635.         $drawing->setName('PhpSpreadsheet logo');
  636.         $drawing->setPath('./assets/images/logomedmisalud.png');
  637.         $drawing->setHeight(70);
  638.         $drawing->setCoordinates('A2');
  639.         $drawing->setWorksheet($sheet);
  640.         
  641.         $sheet->setTitle("Nota de Entrega");
  642.         $sheet->setCellValue('B2''CENTRO AMBULATORIO OPTICARE S.A.S.')->mergeCells('B2:C2');
  643.         $sheet->setCellValue('B3''RUC: 099334269001')->mergeCells('B3:C3');
  644.         $sheet->setCellValue('B4''Dir: Av. Rios Tumbez entre Av. Rafael Veldez')->mergeCells('B4:C4');
  645.         $sheet->setCellValue('B5''Murillo y Av Rio Palora ')->mergeCells('B5:C5');   
  646.         $sheet->setCellValue('D2''NOTA DE ENTREGA')->mergeCells('D2:F3');   
  647.         $sheet->setCellValue('D4''No.'); 
  648.         $sheet->setCellValue('E4''0007800')->mergeCells('E4:F4');  
  649.         $sheet->setCellValue('A7''Cliente:'); 
  650.         $sheet->setCellValue('B7''INSTITUTO ECUATORIANO DE SEGURIDAD IESS'); 
  651.         $sheet->setCellValue('A8''Dir.:'); 
  652.         $sheet->setCellValue('B8''Olmedo 401 A y boyacá'); 
  653.         $sheet->setCellValue('A9''Paciente:'); 
  654.         $paciente $receta->getHistoria()->getPaciente();
  655.         
  656.         $nombre_pac $paciente->getApellido1().' '.$paciente->getApellido2().' '.$paciente->getNombre1().' '.$paciente->getNombre2();
  657.         $sheet->setCellValue('B9'$nombre_pac);
  658.         $sheet->setCellValue('D6''Telf.:'); 
  659.         $sheet->setCellValue('E6''2400057');        
  660.         $sheet->setCellValue('D7''Ruc:'); 
  661.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  662.         $drawing->setName('PhpSpreadsheet logo');
  663.         $drawing->setPath('./assets/images/ruc.png');
  664.         $drawing->setHeight(18);
  665.         $drawing->setCoordinates('E7'); 
  666.         $drawing->setWorksheet($sheet);
  667.         $sheet->setCellValue('D8''Fecha:'); 
  668.         $sheet->setCellValue('E8'date_format($fecha_cita,'d-m-Y'))->mergeCells('E8:F8');
  669.         $sheet->setCellValue('D9''Cédula:'); 
  670.         $sheet->setCellValue('E9'$paciente->getCedula())->mergeCells('E9:F9');
  671.         $sheet->setCellValue('B11''ARTICULO');
  672.         $sheet->setCellValue('C11''CANTIDAD');
  673.         $sheet->setCellValue('D11''P. UNIT');
  674.         $sheet->setCellValue('E11''P. CAN-MED');
  675.         $sheet->setCellValue('F11''V.TOTAL');
  676.         $sheet->getStyle('B2')->getFont()->setBold(true)->setSize(10);
  677.         $sheet->getStyle('B2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  678.         $sheet->getStyle('B3')->getFont()->setBold(false)->setSize(10);
  679.         $sheet->getStyle('B3')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  680.         $sheet->getStyle('B4')->getFont()->setBold(false)->setSize(10);
  681.         $sheet->getStyle('B4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  682.         $sheet->getStyle('B5')->getFont()->setBold(false)->setSize(10);
  683.         $sheet->getStyle('B5')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  684.         $sheet->getStyle('D2:F3')->getFont()->setBold(true)->setSize(10);
  685.         $sheet->getStyle('D2:F3')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  686.         $sheet->getStyle('D4')->getFont()->setBold(false)->setSize(12);
  687.         $sheet->getStyle('D4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
  688.         $sheet->getStyle('E4:F4')->getFont()->setBold(false)->setSize(12)->getColor()->setRGB('FA0404');
  689.         $sheet->getStyle('E4:F4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  690.         $sheet->getStyle('A7')->getFont()->setBold(true)->setSize(10);
  691.         $sheet->getStyle('A7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  692.         $sheet->getStyle('A8')->getFont()->setBold(true)->setSize(10);
  693.         $sheet->getStyle('A8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  694.         $sheet->getStyle('A9')->getFont()->setBold(true)->setSize(10);
  695.         $sheet->getStyle('A9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  696.         $sheet->getStyle('B7')->getFont()->setBold(false)->setSize(10);
  697.         $sheet->getStyle('B7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  698.         $sheet->getStyle('B8')->getFont()->setBold(false)->setSize(10);
  699.         $sheet->getStyle('B8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  700.         $sheet->getStyle('B9')->getFont()->setBold(false)->setSize(10);
  701.         $sheet->getStyle('B9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  702.         $sheet->getStyle('D8')->getFont()->setBold(false)->setSize(10);
  703.         $sheet->getStyle('D8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  704.         $sheet->getStyle('D6')->getFont()->setBold(true)->setSize(10);
  705.         $sheet->getStyle('D6')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  706.         $sheet->getStyle('D7')->getFont()->setBold(true)->setSize(10);
  707.         $sheet->getStyle('D7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  708.         $sheet->getStyle('D8')->getFont()->setBold(true)->setSize(10);
  709.         $sheet->getStyle('D8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  710.         $sheet->getStyle('D9')->getFont()->setBold(true)->setSize(10);
  711.         $sheet->getStyle('D9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  712.         $sheet->getStyle('A11:E11')->getFont()->setBold(true)->setSize(10);
  713.         $sheet->getStyle('A11:E11')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  714.         $sheet->getStyle('F11')->getFont()->setBold(true)->setSize(10);
  715.         $sheet->getStyle('F11')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  716.         
  717.         
  718.         
  719.         $styleArray = [
  720.             'borders' => [
  721.                 'allBorders' => [
  722.                     'borderStyle' => Border::BORDER_THIN,
  723.                 ],
  724.             ],
  725.         ];
  726.         
  727.         $i 11;
  728.         $caracter = ['.'];
  729.         $cont 0$nsubtotal 0;
  730.     
  731.         $detalles $receta->getRecetaDetalles();
  732.         foreach ($detalles as $detalle) {
  733.             $cont++;$i++;
  734.             if($cont<15){
  735.             $sheet->setCellValue('B'.$i$detalle->getNombre());
  736.             $sheet->getStyle('B'.$i)->getAlignment()->setWrapText(true);
  737.             $sheet->setCellValue('C'.$i$detalle->getCantidad());
  738.             $icargo $itemsCargosRepository->findOneby(['tarifario' => $detalle->getMedicina()->getCodigo()]);
  739.             $precios $icargo->getValor();
  740.             $sheet->setCellValue('D'.$i$precios);
  741.             $sheet->setCellValue('E'.$i$precios);
  742.             //$precios = $detalle->getPrecio();
  743.             $sheet->getStyle('D'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  744.             $sheet->getStyle('E'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  745.             $precios_cant $detalle->getCantidad() * $icargo->getValor(); 
  746.             $nsubtotal += $precios_cant;
  747.             $sheet->setCellValue('F'.$i$precios_cant);
  748.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  749.             $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  750.             $sheet->getStyle('B'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  751.             }
  752.         }
  753.         
  754.         $i++;
  755.         $sheet->setCellValue('B'.$i'');
  756.         $sheet->setCellValue('C'.$i'');
  757.         $sheet->setCellValue('D'.$i'');
  758.         $sheet->setCellValue('E'.$i'');
  759.         $sheet->setCellValue('F'.$i'');
  760.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  761.         $i++;
  762.         $sheet->setCellValue('B'.$i'');
  763.         $sheet->setCellValue('C'.$i'');
  764.         $sheet->setCellValue('D'.$i'');
  765.         $sheet->setCellValue('E'.$i'');
  766.         $sheet->setCellValue('F'.$i'');
  767.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  768.         $i++;
  769.         $sheet->setCellValue('B'.$i'');
  770.         $sheet->setCellValue('C'.$i'');
  771.         $sheet->setCellValue('D'.$i'');
  772.         $sheet->setCellValue('E'.$i'');
  773.         $sheet->setCellValue('F'.$i'');
  774.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  775.         $i++;
  776.         $sheet->setCellValue('B'.$i'');
  777.         $sheet->setCellValue('C'.$i'');
  778.         $sheet->setCellValue('D'.$i'');
  779.         $sheet->setCellValue('E'.$i'');
  780.         $sheet->setCellValue('F'.$i'');
  781.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  782.         $i++;
  783.         $sheet->setCellValue('B'.$i'');
  784.         $sheet->setCellValue('C'.$i'');
  785.         $sheet->setCellValue('D'.$i'');
  786.         $sheet->setCellValue('E'.$i'');
  787.         $sheet->setCellValue('F'.$i'');
  788.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  789.         $i++;
  790.         $sheet->setCellValue('B'.$i'');
  791.         $sheet->setCellValue('C'.$i'');
  792.         $sheet->setCellValue('D'.$i'');
  793.         $sheet->setCellValue('E'.$i'');
  794.         $sheet->setCellValue('F'.$i'');
  795.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  796.         $i++;
  797.         $sheet->setCellValue('B'.$i'');
  798.         $sheet->setCellValue('C'.$i'');
  799.         $sheet->setCellValue('D'.$i'');
  800.         $sheet->setCellValue('E'.$i'');
  801.         $sheet->setCellValue('F'.$i'');
  802.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  803.         $i++;
  804.         $sheet->setCellValue('B'.$i'');
  805.         $sheet->setCellValue('C'.$i'');
  806.         $sheet->setCellValue('D'.$i'');
  807.         $sheet->setCellValue('E'.$i'');
  808.         $sheet->setCellValue('F'.$i'');
  809.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  810.         $i++;
  811.         $sheet->setCellValue('B'.$i'');
  812.         $sheet->setCellValue('C'.$i'');
  813.         $sheet->setCellValue('D'.$i'');
  814.         $sheet->setCellValue('E'.$i'');
  815.         $sheet->setCellValue('F'.$i'');
  816.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  817.         $i++;
  818.         $sheet->setCellValue('B'.$i'');
  819.         $sheet->setCellValue('C'.$i'');
  820.         $sheet->setCellValue('D'.$i'');
  821.         $sheet->setCellValue('E'.$i'');
  822.         $sheet->setCellValue('F'.$i'');
  823.         $sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
  824.         
  825.         $i++;
  826.         $i $i+1;
  827.         $sheet->setCellValue('B'.$i'ORIGINAL:ADQUIRIENTE-COPIA:EMISOR');
  828.         $sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(8);
  829.      
  830.         $sheet->setCellValue('C'.$i'SUBTOTAL 0%:')->mergeCells('C'.$i.':E'.$i);
  831.         
  832.             $sheet->setCellValue('F'.$i$nsubtotal);
  833.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  834.            
  835.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  836.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  837.         
  838.         $i++;
  839.         $sheet->setCellValue('C'.$i'SUBTOTAL 12%:')->mergeCells('C'.$i.':E'.$i);
  840.        
  841.             $sheet->setCellValue('F'.$i0);
  842.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  843.            
  844.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  845.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  846.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  847.         $drawing->setName('PhpSpreadsheet logo');
  848.         $drawing->setPath('./assets/images/firmas/salvarado.png');
  849.         $drawing->setHeight(65);
  850.         $drawing->setCoordinates('B'.$i'');
  851.         $drawing->setWorksheet($sheet);
  852.         
  853.         $i++;
  854.         $sheet->setCellValue('C'.$i'DESCUENTO:')->mergeCells('C'.$i.':E'.$i);
  855.         
  856.             $sheet->setCellValue('F'.$i0);
  857.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  858.         
  859.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  860.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  861.         
  862.         $i++;
  863.         $sheet->setCellValue('C'.$i'SUBTOTAL')->mergeCells('C'.$i.':E'.$i);
  864.         
  865.             $sheet->setCellValue('F'.$i$nsubtotal);
  866.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  867.         
  868.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  869.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  870.         
  871.         $i++;
  872.         $sheet->setCellValue('C'.$i'IVA')->mergeCells('C'.$i.':E'.$i);
  873.         
  874.             $sheet->setCellValue('F'.$i0);
  875.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  876.             
  877.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  878.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  879.         
  880.         $i++;
  881.         $sheet->setCellValue('C'.$i'VALOR TOTAL')->mergeCells('C'.$i.':E'.$i);
  882.         
  883.             $sheet->setCellValue('F'.$i$nsubtotal);
  884.             $sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
  885.          
  886.         $sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
  887.         $sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
  888.         
  889.         $styleArray2 = [
  890.             'borders' => [
  891.                 'bottom' => [
  892.                     'borderStyle' => Border::BORDER_THIN,
  893.                 ],
  894.             ],
  895.         ];
  896.        
  897.         $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
  898.         $drawing->setName('PhpSpreadsheet logo');
  899.         $drawing->setPath('./assets/images/firma_autorizada.png');
  900.         $drawing->setHeight(18);
  901.         $drawing->setCoordinates('A'.$i'');
  902.         $drawing->setWorksheet($sheet);
  903.         
  904.         $sheet->setCellValue('A'.$i'Firma Autorizada');
  905.         $sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
  906.         //$sheet->getStyle('B'.$i)->applyFromArray($styleArray2);
  907.         $sheet->setCellValue('B'.$i'Recibí Conforme');
  908.         $sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(10);
  909.         $sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
  910.         
  911.         //$sheet->getStyle('D'.$i)->getFont()->setBold(true)->setSize(10);
  912.         //$sheet->setCellValue('E'.$i, '');
  913.        // $sheet->getStyle('E'.$i)->applyFromArray($styleArray2);
  914.         $sheet->getStyle('B11:E11')->applyFromArray($styleArray);
  915.         $sheet->getStyle('F11')->applyFromArray($styleArray);
  916.         $sheet->getStyle('E11')->applyFromArray($styleArray);
  917.         $sheet->getStyle('D11')->applyFromArray($styleArray);
  918.         
  919.         
  920.         $sheet->getColumnDimension('A')->setWidth(8);
  921.         $sheet->getColumnDimension('B')->setWidth(45);
  922.         $sheet->getColumnDimension('C')->setWidth(9);
  923.         $sheet->getColumnDimension('D')->setWidth(9);
  924.         $sheet->getColumnDimension('E')->setWidth(9);
  925.         $sheet->getColumnDimension('F')->setWidth(9);
  926.         
  927.         // Create your Office 2007 Excel (XLSX Format)
  928.         $writer = new Xlsx($spreadsheet);
  929.         
  930.         // Create a Temporary file in the system
  931.         $fileName 'NOTA DE ENTREGA.xlsx';
  932.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  933.         
  934.         // Create the excel file in the tmp directory of the system
  935.         $writer->save($temp_file);
  936.         
  937.         // Return the excel file as an attachment
  938.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  939.         
  940.     }
  941.     
  942.     /**
  943.      * @Route("/imprimir_nota_de_entrega/{id}", name="nota_de_entrega_imprimir_pdf2", methods={"GET"})
  944.      */
  945.     public function imprimir_nota_de_entrega_pdf2 (Receta $receta$idEmpresaRepository $empresaRepositoryOrdenVentaRepository $ordenVentaRepositoryAgendaRepository $agendaRepositoryRequest $requestClientesRepository $clientesRepositoryItemsCargosRepository $itemsCargosRepository): Response
  946.     {
  947.         $ip     $request->getClientIp();
  948.         //dd($ip);
  949.         $user   $this->security->getUser();
  950.         //dd($user);
  951.         $empresa $empresaRepository->find(1);
  952.         
  953.         $agenda $receta->getHistoria()->getAgenda();
  954.         $hc null$fecha_citanull;
  955.         if($agenda != null){  
  956.         
  957.             $fecha_cita $agenda->getInicio();
  958.    
  959.         }    
  960.      
  961.         $pdfOptions = new Options();
  962.         $pdfOptions->set('defaultFont''Arial');
  963.         $pdfOptions->set('isRemoteEnabled'TRUE);
  964.         $pdfOptions->set('isHtml5ParserEnabled'TRUE);
  965.         //$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
  966.         // Crea una instancia de Dompdf con nuestras opciones
  967.         $dompdf = new Dompdf($pdfOptions);
  968.         
  969.         // Recupere el HTML generado en archivo twig
  970.         $html $this->renderView('receta/nota_de_entrega.html.twig', [
  971.             'empresa'    => $empresa,
  972.             'receta'     => $receta,
  973.             'detalles'   => $receta->getRecetaDetalles(),
  974.             'fecha_cita' => $fecha_cita,
  975.             'itemsCargosRepository' => $itemsCargosRepository
  976.         ]);
  977.         
  978.         // Cargar HTML en Dompdf
  979.         $dompdf->loadHtml($html);
  980.         //$dompdf->loadHtmlFile($html);
  981.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  982.         //$dompdf->setPaper('A4', 'portrait');
  983.         $dompdf->setPaper('A4''portrait');
  984.         // Renderiza el HTML como PDF
  985.         $dompdf->render();
  986.         // Envíe el PDF generado al navegador (vista en línea)
  987.         $dompdf->stream("Recibo_".$receta->getPaciente()->getApellido1()." ".$receta->getPaciente()->getNombre1(), [
  988.             "Attachment" => false
  989.         ]);
  990.     }
  991.     
  992.     /**
  993.      * @Route("/imprimir/{id}/new_version", name="receta_imprimir_new_version", methods={"GET"})
  994.      */
  995.     public function imprimir_receta_new_version(
  996.         Request $request,
  997.         Receta $recetum,
  998.         EmpresaRepository $empresaRepository
  999.     ): Response {
  1000.     
  1001.         $unidad  $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
  1002.         $empresa $empresaRepository->find($unidad->getId());//dd($empresa);
  1003.         $historia $recetum->getHistoria();
  1004.         $dxs      $historia->getDiagnosticosHistoriaClinicas();
  1005.         $doctor   $recetum->getHistoria()->getAgenda()->getDoctor();
  1006.     
  1007.         $options = new \Dompdf\Options();
  1008.         $options->set('defaultFont''Arial');
  1009.         $options->set('isRemoteEnabled'true);
  1010.         $options->set('dpi'120);
  1011.     
  1012.         $dompdf = new \Dompdf\Dompdf($options);
  1013.         //////////////////////////////////////
  1014.         $ordenes $historia->getAgenda()->getOrdenProcedimientos();
  1015.         $agrupado = [];
  1016.         foreach ($ordenes as $orden) {
  1017.             if($orden->getDiaReceta()=='1'){
  1018.                 $tipo $orden->getTipo(); // "PAQUETE 1"
  1019.                 $proc $orden->getProcedimiento();
  1020.                 $pid  $proc->getId();
  1021.                 $nom  $proc->getNombre();
  1022.                 $obs  $orden->getObservacion();
  1023.                 if (!isset($agrupado[$tipo])) {
  1024.                     $agrupado[$tipo] = [];
  1025.                 }
  1026.                 if (!isset($agrupado[$tipo][$pid])) {
  1027.                     $agrupado[$tipo][$pid] = [
  1028.                         'nombre' => $nom,
  1029.                         'obs'    => $obs,
  1030.                         'cant'   => 0,
  1031.                     ];
  1032.                 }
  1033.                 $agrupado[$tipo][$pid]['cant']++;
  1034.             }    
  1035.         }
  1036.         //////////////////////////////////////
  1037.     
  1038.         $html $this->renderView('receta/receta_pdf_new_version.html.twig', [
  1039.             'recetum'   => $recetum,
  1040.             'dxs'       => $dxs,
  1041.             'empresa'   => $empresa,
  1042.             'doctor'    => $doctor,
  1043.             'agrupado'  => $agrupado
  1044.         ]);
  1045.     
  1046.         $dompdf->loadHtml($html);
  1047.         $dompdf->setPaper('A4''landscape');
  1048.         $dompdf->render();
  1049.     
  1050.         return new Response(
  1051.             $dompdf->output(),
  1052.             200,
  1053.             [
  1054.                 'Content-Type'        => 'application/pdf',
  1055.                 'Content-Disposition' => 'inline; filename="Receta_'.$recetum->getId().'.pdf"',
  1056.             ]
  1057.         );
  1058.     }
  1059.     
  1060.     
  1061.     /**
  1062.      * @Route("/clonar/receta/id/{id}", name="receta_clonar", methods={"GET"})
  1063.      */
  1064.     public function clonarReceta(Receta $recetaOriginalRequest $request): Response
  1065.     {
  1066.         $ip     $request->getClientIp();
  1067.         $user   $this->security->getUser();
  1068.         $nuevaReceta = new Receta();
  1069.         $em $this->getDoctrine()->getManager();
  1070.         
  1071.         // Copiar propiedades simples
  1072.         $nuevaReceta->setDoctor($recetaOriginal->getDoctor());
  1073.         $nuevaReceta->setEstado($recetaOriginal->getEstado());
  1074.         $nuevaReceta->setFecha(new \DateTime()); // Puedes copiar la fecha original si prefieres
  1075.         $nuevaReceta->setIpCrea($ip);
  1076.         $nuevaReceta->setIpModifica($ip);
  1077.         $nuevaReceta->setUserCrea($user->getId());
  1078.         $nuevaReceta->setUserModifica($user->getId());
  1079.         $nuevaReceta->setPaciente($recetaOriginal->getPaciente());
  1080.         $nuevaReceta->setCerrada(false); // La receta clonada puede empezar como abierta
  1081.         $nuevaReceta->setHistoria($recetaOriginal->getHistoria());
  1082.         $nuevaReceta->setObservacion($recetaOriginal->getObservacion());
  1083.         $nuevaReceta->setRp($recetaOriginal->getRp());
  1084.         $nuevaReceta->setPrescripcion($recetaOriginal->getPrescripcion());
  1085.         $nuevaReceta->setTipo($recetaOriginal->getTipo());
  1086.         $nuevaReceta->setNotasDeEvolucion($recetaOriginal->getNotasDeEvolucion());
  1087.     
  1088.         // Copiar detalles
  1089.         foreach ($recetaOriginal->getRecetaDetalles() as $detalleOriginal) {
  1090.             $nuevoDetalle = new RecetaDetalle();
  1091.             $nuevoDetalle->setReceta($nuevaReceta);
  1092.             $nuevoDetalle->setMedicina($detalleOriginal->getMedicina());
  1093.             $nuevoDetalle->setNombre($detalleOriginal->getNombre());
  1094.             $nuevoDetalle->setPresentacion($detalleOriginal->getPresentacion());
  1095.             $nuevoDetalle->setIndicacion($detalleOriginal->getIndicacion());
  1096.             $nuevoDetalle->setIpCrea($ip);
  1097.             $nuevoDetalle->setIpModifica($ip);
  1098.             $nuevoDetalle->setUserCrea($user->getId());
  1099.             $nuevoDetalle->setUserModifica($user->getId());
  1100.             $nuevoDetalle->setCantidad($detalleOriginal->getCantidad());
  1101.             $nuevoDetalle->setPlano($detalleOriginal->getPlano());
  1102.     
  1103.             $nuevaReceta->addRecetaDetalle($nuevoDetalle);
  1104.             $em->persist($nuevoDetalle);
  1105.         }
  1106.     
  1107.         $em->persist($nuevaReceta);
  1108.         $em->flush();
  1109.     
  1110.         return $this->redirectToRoute('receta_edit',[
  1111.             'id'         => $nuevaReceta->getId(),
  1112.         ]); 
  1113.     }
  1114.     
  1115.     /**
  1116.     * @Route("/receta/copiar-detalles/{idOrigen}/{idDestino}", name="receta_copiar_detalles", methods={"POST"})
  1117.     * @ParamConverter("recetaOrigen", options={"id" = "idOrigen"})
  1118.     * @ParamConverter("recetaDestino", options={"id" = "idDestino"})
  1119.     */
  1120.     public function copiarDetalles(
  1121.         Receta $recetaOrigen
  1122.         Receta $recetaDestino
  1123.         Request $request
  1124.     ): Response {
  1125.         $ip   $request->getClientIp();
  1126.         $user $this->security->getUser();
  1127.         $em   $this->getDoctrine()->getManager();
  1128.     
  1129.         foreach ($recetaOrigen->getRecetaDetalles() as $detalleOriginal) {
  1130.             $nuevoDetalle = new RecetaDetalle();
  1131.             $nuevoDetalle->setReceta($recetaDestino);
  1132.             $nuevoDetalle->setMedicina($detalleOriginal->getMedicina());
  1133.             $nuevoDetalle->setNombre($detalleOriginal->getNombre());
  1134.             $nuevoDetalle->setPresentacion($detalleOriginal->getPresentacion());
  1135.             $nuevoDetalle->setIndicacion($detalleOriginal->getIndicacion());
  1136.             $nuevoDetalle->setCantidad($detalleOriginal->getCantidad());
  1137.             $nuevoDetalle->setPlano($detalleOriginal->getPlano());
  1138.             $nuevoDetalle->setIpCrea($ip);
  1139.             $nuevoDetalle->setIpModifica($ip);
  1140.             $nuevoDetalle->setUserCrea($user->getId());
  1141.             $nuevoDetalle->setUserModifica($user->getId());
  1142.     
  1143.             $em->persist($nuevoDetalle);
  1144.         }
  1145.     
  1146.         $em->flush();
  1147.     
  1148.         return $this->json(['status' => 'ok']);
  1149.     }
  1150.     
  1151.     
  1152.     /**
  1153.      * @Route("/imprimir/{id}/new_version/oto_clinic", name="receta_imprimir_new_version_oto_clinic", methods={"GET"})
  1154.      */
  1155.     public function imprimir_receta_new_version_oto_clinic(
  1156.         Request $request,
  1157.         Receta $recetum,
  1158.         HistoriaClinicaRepository $historiaClinicaRepository,
  1159.         EmpresaRepository $empresaRepository,
  1160.         AgendaRepository $agendaRepository
  1161.     ): Response {
  1162.     
  1163.         $unidad   $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
  1164.         $empresa  $empresaRepository->find($unidad->getId());
  1165.         $historia $recetum->getHistoria();
  1166.         $dxs      $historia->getDiagnosticosHistoriaClinicas();
  1167.     
  1168.         $pdfOptions = new Options();
  1169.         $pdfOptions->set('defaultFont''Arial');
  1170.         $pdfOptions->set('isRemoteEnabled'true);
  1171.         $pdfOptions->set('isHtml5ParserEnabled'true);
  1172.     
  1173.         $cabeceraPath realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/cab_oto.png');
  1174.         $cabeceraPath 'file:///' str_replace('\\''/'$cabeceraPath);
  1175.     
  1176.         $fondoPath realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/fondo_oto.jpg');
  1177.         $fondoPath 'file:///' str_replace('\\''/'$fondoPath);
  1178.     
  1179.         $doctor $recetum->getHistoria()->getAgenda()->getDoctor();
  1180.         
  1181.         $firmaPath null;
  1182.         if ($doctor && $doctor->getFirma()) {
  1183.             $path realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/firmas/' $doctor->getFirma());
  1184.             if ($path) {
  1185.                 $firmaPath 'file://' str_replace('\\''/'$path);
  1186.             }
  1187.         }
  1188.     
  1189.         $dompdf = new Dompdf($pdfOptions);
  1190.     
  1191.         $html $this->renderView('receta/receta_pdf_new_version_oto.html.twig', [
  1192.             'recetum'  => $recetum,
  1193.             'dxs'      => $dxs,
  1194.             'empresa'  => $empresa,
  1195.             'cabecera' => $cabeceraPath,
  1196.             'fondo'    => $fondoPath,
  1197.             'firmaPath'=> $firmaPath
  1198.         ]);
  1199.     
  1200.         $dompdf->loadHtml($html);
  1201.         $dompdf->setPaper('A4''landscape');
  1202.         $dompdf->render();
  1203.     
  1204.         $output $dompdf->output();
  1205.     
  1206.         return new Response($output200, [
  1207.             'Content-Type'        => 'application/pdf',
  1208.             'Content-Disposition' => 'inline; filename="Receta_'.$historia->getPaciente()->getCedula().'.pdf"'
  1209.         ]);
  1210.     }
  1211.     
  1212. }