<?php
namespace App\Controller;
use App\Entity\Receta;
use App\Entity\Clientes;
use App\Entity\OrdenVenta;
use App\Entity\Agenda;
use App\Entity\DiagnosticosHistoriaClinica;
use App\Form\RecetaObsType;
use App\Form\RecetaType;
use App\Form\RecetaDetalleType;
use App\Form\DiagnosticosHistoriaClinicaType;
use App\Repository\RecetaRepository;
use App\Repository\ItemsCargosRepository;
use App\Repository\EmpresaRepository;
use App\Repository\HistoriaClinicaRepository;
use App\Repository\AgendaRepository;
use App\Repository\OrdenVentaRepository;
use App\Repository\ClientesRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\Security\Core\Security;
use App\Entity\RecetaDetalle;
use Dompdf\Dompdf;
use Dompdf\Options;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use CodeItNow\BarcodeBundle\Utils\QrCode;
use CodeItNow\BarcodeBundle\Utils\BarcodeGenerator;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
/**
* @Route("/receta")
*/
class RecetaController extends AbstractController
{
/**
* @var Security
*/
private $security;
public function __construct(Security $security)
{
date_default_timezone_set("America/Guayaquil");
$this->security = $security;
}
/**
* @Route("/{id_historia}", name="receta_index", methods={"GET"})
*/
public function index(RecetaRepository $recetaRepository,Request $request, $id_historia, HistoriaClinicaRepository $historiaClinicaRepository, PaginatorInterface $paginator, OrdenVentaRepository $ordenVentaRepository, ClientesRepository $clientesRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$historia = $historiaClinicaRepository->find($id_historia);
$fecha_hc = date_format($historia->getCreatedAt(),'Y-m-d');
/***************************************************/
$orden = $ordenVentaRepository->findOneBy(['id_agenda' => $historia->getAgenda()->getId(), 'tipo' => 'FAR_IESS']);
$cliente = $clientesRepository->findOneBy(['cedula_ruc' => $historia->getPaciente()->getCedula()]);
if(is_null($cliente)){
$cliente = new Clientes();
$cliente->setIpModifica($ip);
$cliente->setUserModifica($user->getId());
$cliente->setIpCrea($ip);
$cliente->setUserCrea($user->getId());
}
$fecha = new \DateTime("now");
$orden = new OrdenVenta();
$orden->setCedulaRuc($historia->getPaciente()->getCedula());
$cliente->setCedulaRuc($historia->getPaciente()->getCedula());
$orden->setPaciente($historia->getPaciente());
$orden->setIdAgenda($historia->getAgenda()->getId());
$orden->setRazonSocial($historia->getPaciente()->getApellido1().' '.$historia->getPaciente()->getApellido2().' '.$historia->getPaciente()->getNombre1().' '.$historia->getPaciente()->getNombre2());
$cliente->setRazonSocial($historia->getPaciente()->getApellido1().' '.$historia->getPaciente()->getApellido2().' '.$historia->getPaciente()->getNombre1().' '.$historia->getPaciente()->getNombre2());
$ciudad = $historia->getPaciente()->getCiudad();
if($ciudad == null){
$ciudad = ' ';
}
$orden->setCiudad($ciudad);
$cliente->setCiudad($ciudad);
$direccion = $historia->getPaciente()->getDireccion();
if($direccion!=null){
$orden->setDireccion($direccion);
}
$cliente->setDireccion($direccion);
$telefono = $historia->getPaciente()->getTelefono();
if($telefono!=null){
$orden->setTelefono($telefono);
}
$cliente->setTelefono($telefono);
$email = $historia->getPaciente()->getEmail();
if($email!=null){
$orden->setEmail($email);
$cliente->setEmail($email);
}
$orden->setTotal(0);
$orden->setIva(0);
$orden->setSubtotal(0);
$orden->setOda(0);
$orden->setDescuento(0);
$orden->setTipo('FAR_IESS');
$orden->setEstado(1);
$cliente->setEstado(1);
$orden->setFecha($fecha);
$orden->setIpCrea($ip);
$orden->setIpModifica($ip);
$orden->setUserCrea($user->getId());
$orden->setUserModifica($user->getId());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($orden);
$entityManager->persist($cliente);
$entityManager->flush();
/****************************************************/
//$receta_hoy = $recetaRepository->findAllByPaciente2($historia->getPaciente()->getId(),$fecha_hc);
$doctor = $historia->getAgenda()->getDoctor();
if(is_null($doctor)){
$doctor = $this->security->getUser();
}
$fecha = new \DateTime("now");
$recetum = new Receta();
$recetum->setDoctor($doctor);
$recetum->setEstado(1);
$recetum->setCerrada(0);
$recetum->setPaciente($historia->getPaciente());
$recetum->setHistoria($historia);
$recetum->setFecha($fecha);
$recetum->setIpCrea($ip);
$recetum->setIpModifica($ip);
$recetum->setUserCrea($user->getId());
$recetum->setUserModifica($user->getId());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($recetum);
$entityManager->flush();
return $this->redirectToRoute('receta_edit',[
'id' => $recetum->getId(),
]);
}
/**
* @Route("/new", name="receta_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
$recetum = new Receta();
$form = $this->createForm(RecetaType::class, $recetum);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($recetum);
$entityManager->flush();
return $this->redirectToRoute('receta_index');
}
return $this->render('receta/new.html.twig', [
'recetum' => $recetum,
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}", name="receta_show", methods={"GET"})
*/
public function show(Receta $recetum): Response
{
return $this->render('receta/show.html.twig', [
'recetum' => $recetum,
]);
}
/**
* @Route("/{id}/edit/", name="receta_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Receta $recetum, RecetaRepository $recetarepository): Response
{
/*$form = $this->createForm(RecetaType::class, $recetum);
$form->handleRequest($request);*/
$recetaDetalle = new RecetaDetalle();
$form_d = $this->createForm(RecetaDetalleType::class, $recetaDetalle);
$form_d->handleRequest($request);
$form_d->get('receta')->setData($recetum->getId());
$fecha_receta = $recetum->getFecha();
$id_paciente = $recetum->getPaciente()->getId();
//$historia = $historiaClinicaRepository->findByPaciente($id_paciente,date_format($fecha_receta,'Y-m-d'));
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
/*if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('receta_index');
}*/
$form_r = $this->createForm(RecetaObsType::class, $recetum);
$form_r->handleRequest($request);
$form_r->get('observacion')->setData($recetum->getObservacion());
$diagnosticosHistoriaClinica = new DiagnosticosHistoriaClinica();
$form_dx = $this->createForm(DiagnosticosHistoriaClinicaType::class, $diagnosticosHistoriaClinica);
$form_dx->handleRequest($request);
$recetas = $recetarepository->findAllByPacienteOK($recetum->getPaciente())->getResult();
return $this->render('receta/edit.html.twig', [
'recetum' => $recetum,
//'form' => $form_d->createView(),
'form_d' => $form_d->createView(),
'form_r' => $form_r->createView(),
'detalles' => $recetum->getRecetaDetalles(),
'dxs' => $dxs,
'form_dx' => $form_dx->createView(),
'recetas' => $recetas,
]);
}
/**
* @Route("/{id}/storage/obs", name="receta_storage_obs", methods={"GET","POST"})
*/
public function receta_storage_obs(Request $request, Receta $recetum): Response
{
$form_r = $this->createForm(RecetaObsType::class, $recetum);
$form_r->handleRequest($request);
if ($form_r->isSubmitted() && $form_r->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->json(['estado' => 'ok', 'receta' => $recetum->getId()]);
}
return $this->json(['estado' => 'error', 'receta' => '']);
}
/**
* @Route("/{id}", name="receta_delete", methods={"DELETE"})
*/
public function delete(Request $request, Receta $recetum): Response
{
if ($this->isCsrfTokenValid('delete'.$recetum->getId(), $request->request->get('_token'))) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($recetum);
$entityManager->flush();
}
return $this->redirectToRoute('receta_index');
}
/**
* @Route("/imprimir/{id}", name="receta_imprimir", methods={"GET"})
*/
public function imprimir_receta(Request $request, Receta $recetum, HistoriaClinicaRepository $historiaClinicaRepository, EmpresaRepository $empresaRepository, AgendaRepository $agendaRepository): Response
{
// Configure Dompdf según sus necesidades
$unidad = $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
$empresa = $empresaRepository->find($unidad->getId());
$fecha_receta = $recetum->getFecha();
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$arr_mes = ['', 'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO', 'JULIO', 'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE'];
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', TRUE);
$pdfOptions->set('isHtml5ParserEnabled', TRUE);
//$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
// Recupere el HTML generado en nuestro archivo twig
$html = $this->renderView('receta/receta_pdf.html.twig', [
'recetum' => $recetum,
'dxs' => $dxs,
'empresa' => $empresa,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
//$dompdf->loadHtmlFile($html);
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
//$dompdf->setPaper('A4', 'portrait');
$dompdf->setPaper('A4', 'landscape');
// Renderiza el HTML como PDF
$dompdf->render();
// EnvÃe el PDF generado al navegador (vista en lÃnea)
$dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
"Attachment" => false
]);
}
/**
* @Route("/imprimir/sin_membrete/{id}", name="receta_imprimir_sin_membrete", methods={"GET"})
*/
public function imprimir_receta_sin_membrete(Request $request, Receta $recetum, HistoriaClinicaRepository $historiaClinicaRepository, EmpresaRepository $empresaRepository, AgendaRepository $agendaRepository): Response
{
// Configure Dompdf según sus necesidades
$unidad = $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
$empresa = $empresaRepository->find($unidad->getId());
$fecha_receta = $recetum->getFecha();
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$arr_mes = ['', 'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO', 'JULIO', 'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE'];
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', TRUE);
$pdfOptions->set('isHtml5ParserEnabled', TRUE);
//$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
// Recupere el HTML generado en nuestro archivo twig
$html = $this->renderView('receta/receta_sin_membrete_pdf.html.twig', [
'recetum' => $recetum,
'dxs' => $dxs,
'empresa' => $empresa,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
//$dompdf->loadHtmlFile($html);
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
//$dompdf->setPaper('A4', 'portrait');
$dompdf->setPaper('A4', 'landscape');
// Renderiza el HTML como PDF
$dompdf->render();
// EnvÃe el PDF generado al navegador (vista en lÃnea)
$dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
"Attachment" => false
]);
exit(0);
}
/**
* @Route("/imprimir/sin_membrete/oto/{id}", name="receta_imprimir_sin_membrete_oto", methods={"GET"})
*/
public function imprimir_receta_sin_membrete_oto(Request $request, Receta $recetum, HistoriaClinicaRepository $historiaClinicaRepository, EmpresaRepository $empresaRepository, AgendaRepository $agendaRepository): Response
{
// Configure Dompdf según sus necesidades
$unidad = $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
$empresa = $empresaRepository->find($unidad->getId());
$fecha_receta = $recetum->getFecha();
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$arr_mes = ['', 'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO', 'JULIO', 'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE'];
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', TRUE);
$pdfOptions->set('isHtml5ParserEnabled', TRUE);
//$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
// Recupere el HTML generado en nuestro archivo twig
$html = $this->renderView('receta/receta_sin_membrete_pdf_oto.html.twig', [
'recetum' => $recetum,
'dxs' => $dxs,
'empresa' => $empresa,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
//$dompdf->loadHtmlFile($html);
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
//$dompdf->setPaper('A4', 'portrait');
$dompdf->setPaper('A4', 'landscape');
// Renderiza el HTML como PDF
$dompdf->render();
// EnvÃe el PDF generado al navegador (vista en lÃnea)
$dompdf->stream("Receta_".$historia->getPaciente()->getApellido1()." ".$historia->getPaciente()->getNombre1(), [
"Attachment" => false
]);
exit(0);
}
/**
* @Route("/imprimir_receta_excel/{id}", name="receta_imprimir_excel", methods={"GET"})
*/
public function imprimir_receta_excel (Request $request, Receta $recetum, HistoriaClinicaRepository $historiaClinicaRepository, EmpresaRepository $empresaRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$empresa = $empresaRepository->find(1);
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$arr_mes = ['', 'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO', 'JULIO', 'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE'];
$spreadsheet = new Spreadsheet();
/* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
$sheet = $spreadsheet->getActiveSheet();
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/logomedmisalud.png');
$drawing->setHeight(50);
$drawing->setCoordinates('A2');
$drawing->setWorksheet($sheet);
$sheet->setTitle("Receta Excel");
$sheet->setCellValue('B4', 'RECETA MEDICA');
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/iess2.png');
$drawing->setHeight(30);
$drawing->setCoordinates('C2');
$drawing->setWorksheet($sheet);
$sheet->setCellValue('A6', 'PACIENTE:');
$sheet->setCellValue('B6', $recetum->getPaciente()->getApellido1().' '.$recetum->getPaciente()->getApellido2().' '.$recetum->getPaciente()->getNombre1().' '.$recetum->getPaciente()->getNombre2());
$sheet->setCellValue('A7', 'EDAD:');
$sheet->setCellValue('B7', $recetum->getPaciente()->CalculaEdad());
$sheet->setCellValue('A8', 'CEDULA:');
$sheet->setCellValue('B8', $recetum->getPaciente()->getCedula());
$sheet->setCellValue('A9', 'ALERGIAS:');
$sheet->setCellValue('B9', $recetum->getPaciente()->getAlergias());
$sheet->setCellValue('A10', 'DOCTOR:');
$sheet->setCellValue('B10', $recetum->getDoctor()->getApellido1().' '.$recetum->getDoctor()->getApellido2().' '.$recetum->getDoctor()->getNombre1().' '.$recetum->getDoctor()->getNombre2());
$sheet->setCellValue('A11', 'FECHA:');
$nmes = date_format($recetum->getFecha(), 'm');
$year = date_format($recetum->getFecha(), 'Y');
$day = date_format($recetum->getFecha(), 'd');
//dd($arr_mes[$nmes], $year, $day);
$sheet->setCellValue('B11', $day.'/'.$arr_mes[$nmes].'/'.$year );
$sheet->setCellValue('B14', 'RP');
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo1');
$drawing->setPath('./assets/images/logomedmisalud.png');
$drawing->setHeight(50);
$drawing->setCoordinates('F2');
$drawing->setWorksheet($sheet);
$sheet->setCellValue('G4', 'RECETA MEDICA');
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo1');
$drawing->setPath('./assets/images/iess2.png');
$drawing->setHeight(30);
$drawing->setCoordinates('H2');
$drawing->setWorksheet($sheet);
$sheet->setCellValue('F6', 'PACIENTE:');
$sheet->setCellValue('G6', $recetum->getPaciente()->getApellido1().' '.$recetum->getPaciente()->getApellido2().' '.$recetum->getPaciente()->getNombre1().' '.$recetum->getPaciente()->getNombre2());
$sheet->setCellValue('F7', 'EDAD:');
$sheet->setCellValue('G7', $recetum->getPaciente()->CalculaEdad());
$sheet->setCellValue('F8', 'CEDULA:');
$sheet->setCellValue('G8', $recetum->getPaciente()->getCedula());
$sheet->setCellValue('F9', 'ALERGIAS:');
$sheet->setCellValue('G9', $recetum->getPaciente()->getAlergias());
$sheet->setCellValue('F10', 'DOCTOR:');
$sheet->setCellValue('G10', $recetum->getDoctor()->getApellido1().' '.$recetum->getDoctor()->getApellido2().' '.$recetum->getDoctor()->getNombre1().' '.$recetum->getDoctor()->getNombre2());
$sheet->setCellValue('F11', 'FECHA:');
$nmes = date_format($recetum->getFecha(), 'm');
$year = date_format($recetum->getFecha(), 'Y');
$day = date_format($recetum->getFecha(), 'd');
$sheet->setCellValue('G11', $day.'/'.$arr_mes[$nmes].'/'.$year );
$sheet->setCellValue('G14', 'PRESCRIPCION');
$sheet->getStyle('B4:D4')->getFont()->setBold(true)->setSize(12);
$sheet->getStyle('B4:D4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A6')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A7')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A8')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A9')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A10')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A11')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('B14')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('G4:I4')->getFont()->setBold(true)->setSize(12);
$sheet->getStyle('G4:I4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('F6')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F7')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F8')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F9')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F10')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F11')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('G14')->getFont()->setBold(true)->setSize(10);
$sheet->getColumnDimension('A')->setWidth(9);
$sheet->getColumnDimension('B')->setWidth(70);
$sheet->getColumnDimension('C')->setWidth(9);
$sheet->getColumnDimension('D')->setWidth(1);
$sheet->getColumnDimension('E')->setWidth(3);
$sheet->getColumnDimension('F')->setWidth(9);
$sheet->getColumnDimension('G')->setWidth(70);
$sheet->getColumnDimension('H')->setWidth(3);
$sheet->getColumnDimension('I')->setWidth(2);
$i = 14;
$detalles = $recetum->getRecetaDetalles();
$caracter = [','];
$cont = 0; $nsubtotal = 0;
foreach ($detalles as $detalle) {
$cont++;$i++;
$sheet->setCellValue('A'.$i, $cont);
$sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
$sheet->setCellValue('B'.$i, $detalle->getNombre());
$sheet->getStyle('B'.$i)->getAlignment()->setWrapText(true);
$i++;
$sheet->setCellValue('B'.$i, 'Cantidad: '.$detalle->getCantidad());
}
$i++;
$sheet->setCellValue('A'.$i, 'DIAGNOSTICOS:');
$sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
$i = 14;
$detalles = $recetum->getRecetaDetalles();
$caracter = ['.'];
$cont = 0; $nsubtotal = 0;
foreach ($detalles as $detalle) {
$cont++;$i++;
$sheet->setCellValue('F'.$i, $cont);
$sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
$sheet->setCellValue('G'.$i, $detalle->getNombre());
$sheet->getStyle('G'.$i)->getAlignment()->setWrapText(true);
$i++;
$sheet->setCellValue('G'.$i, 'Indicación: '.$detalle->getIndicacion());
$sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
}
$i++;
$sheet->setCellValue('F'.$i, 'DIAGNOSTICOS:');
$sheet->getStyle('F'.$i)->getFont()->setBold(true)->setSize(10);
$cont = 0;
$i++;
$dxs = $historia->getDiagnosticosHistoriaClinicas();
foreach ($dxs as $value) {
$cont++;$i++;
$sheet->setCellValue('A'.$i, $value->getCie10()->getCodigo());
$sheet->setCellValue('B'.$i, $value->getCie10()->getNombre())->mergeCells('B'.$i.':D'.$i);
$sheet->setCellValue('F'.$i, $value->getCie10()->getCodigo());
$sheet->setCellValue('G'.$i, $value->getCie10()->getNombre())->mergeCells('G'.$i.':I'.$i);
}
$i++;
$sheet->setCellValue('A'.$i, ' ')->mergeCells('A'.$i.':E'.$i);
$i++;
$sheet->setCellValue('F'.$i, ' ')->mergeCells('F'.$i.':I'.$i);
if($recetum->getDoctor()->getFirma() != null){
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/firmas/'.$recetum->getDoctor()->getFirma());
$drawing->setHeight(90);
$drawing->setCoordinates('B'.$i, '');
$drawing->setWorksheet($sheet);
}
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/firmas/salvarado.png');
$drawing->setHeight(60);
$drawing->setCoordinates('C'.$i, '');
$drawing->setWorksheet($sheet);
if($recetum->getDoctor()->getFirma() != null){
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo3');
$drawing->setPath('./assets/images/firmas/'.$recetum->getDoctor()->getFirma());
$drawing->setHeight(90);
$drawing->setCoordinates('G'.$i, '');
$drawing->setWorksheet($sheet);
}
$i = $i+9;
$sheet->setCellValue('B'.$i, 'AV RIOS TUMBEZ E AV RAFAEL VELDEZ MURILLO Y AV RIO PALORA');
$sheet->setCellValue('G'.$i, 'AV RIOS TUMBEZ E AV RAFAEL VELDEZ MURILLO Y AV RIO PALORA');
$sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(7);
$sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('G'.$i)->getFont()->setBold(true)->setSize(7);
$sheet->getStyle('G'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$i++;
$sheet->setCellValue('B'.$i, 'Telefono: 0959563038 Email: info@medmisalud.com');
$sheet->setCellValue('G'.$i, 'Telefono: 0959563038 Email: info@medmisalud.com');
$sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(7);
$sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('G'.$i)->getFont()->setBold(true)->setSize(7);
$sheet->getStyle('G'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'RECETA.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/nota_de_entrega/excel/{id}", name="nota_de_entrega_excel2", methods={"GET"})
*/
public function nota_de_entrega_excel2 (Receta $receta,EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, AgendaRepository $agendaRepository, Request $request, ClientesRepository $clientesRepository, ItemsCargosRepository $itemsCargosRepository){
$ip = $request->getClientIp();
//dd($ip);
$user = $this->security->getUser();
//dd($user);
$empresa = $empresaRepository->find(1);
//dd($empresa);
$agenda = $receta->getHistoria()->getAgenda();
$hc = null; $fecha_cita= null;
if($agenda != null){
$fecha_cita = $agenda->getInicio();
}
$spreadsheet = new Spreadsheet();
/* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
$sheet = $spreadsheet->getActiveSheet();
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/logomedmisalud.png');
$drawing->setHeight(70);
$drawing->setCoordinates('A2');
$drawing->setWorksheet($sheet);
$sheet->setTitle("Nota de Entrega");
$sheet->setCellValue('B2', 'CENTRO AMBULATORIO OPTICARE S.A.S.')->mergeCells('B2:C2');
$sheet->setCellValue('B3', 'RUC: 099334269001')->mergeCells('B3:C3');
$sheet->setCellValue('B4', 'Dir: Av. Rios Tumbez entre Av. Rafael Veldez')->mergeCells('B4:C4');
$sheet->setCellValue('B5', 'Murillo y Av Rio Palora ')->mergeCells('B5:C5');
$sheet->setCellValue('D2', 'NOTA DE ENTREGA')->mergeCells('D2:F3');
$sheet->setCellValue('D4', 'No.');
$sheet->setCellValue('E4', '0007800')->mergeCells('E4:F4');
$sheet->setCellValue('A7', 'Cliente:');
$sheet->setCellValue('B7', 'INSTITUTO ECUATORIANO DE SEGURIDAD IESS');
$sheet->setCellValue('A8', 'Dir.:');
$sheet->setCellValue('B8', 'Olmedo 401 A y boyacá');
$sheet->setCellValue('A9', 'Paciente:');
$paciente = $receta->getHistoria()->getPaciente();
$nombre_pac = $paciente->getApellido1().' '.$paciente->getApellido2().' '.$paciente->getNombre1().' '.$paciente->getNombre2();
$sheet->setCellValue('B9', $nombre_pac);
$sheet->setCellValue('D6', 'Telf.:');
$sheet->setCellValue('E6', '2400057');
$sheet->setCellValue('D7', 'Ruc:');
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/ruc.png');
$drawing->setHeight(18);
$drawing->setCoordinates('E7');
$drawing->setWorksheet($sheet);
$sheet->setCellValue('D8', 'Fecha:');
$sheet->setCellValue('E8', date_format($fecha_cita,'d-m-Y'))->mergeCells('E8:F8');
$sheet->setCellValue('D9', 'Cédula:');
$sheet->setCellValue('E9', $paciente->getCedula())->mergeCells('E9:F9');
$sheet->setCellValue('B11', 'ARTICULO');
$sheet->setCellValue('C11', 'CANTIDAD');
$sheet->setCellValue('D11', 'P. UNIT');
$sheet->setCellValue('E11', 'P. CAN-MED');
$sheet->setCellValue('F11', 'V.TOTAL');
$sheet->getStyle('B2')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('B2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B3')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B3')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B4')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B5')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B5')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('D2:F3')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('D2:F3')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('D4')->getFont()->setBold(false)->setSize(12);
$sheet->getStyle('D4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->getStyle('E4:F4')->getFont()->setBold(false)->setSize(12)->getColor()->setRGB('FA0404');
$sheet->getStyle('E4:F4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A7')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('A8')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('A9')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('B7')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('B8')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('B9')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('B9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('D8')->getFont()->setBold(false)->setSize(10);
$sheet->getStyle('D8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('D6')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('D6')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('D7')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('D7')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('D8')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('D8')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('D9')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('D9')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getStyle('A11:E11')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('A11:E11')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('F11')->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('F11')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN,
],
],
];
$i = 11;
$caracter = ['.'];
$cont = 0; $nsubtotal = 0;
$detalles = $receta->getRecetaDetalles();
foreach ($detalles as $detalle) {
$cont++;$i++;
if($cont<15){
$sheet->setCellValue('B'.$i, $detalle->getNombre());
$sheet->getStyle('B'.$i)->getAlignment()->setWrapText(true);
$sheet->setCellValue('C'.$i, $detalle->getCantidad());
$icargo = $itemsCargosRepository->findOneby(['tarifario' => $detalle->getMedicina()->getCodigo()]);
$precios = $icargo->getValor();
$sheet->setCellValue('D'.$i, $precios);
$sheet->setCellValue('E'.$i, $precios);
//$precios = $detalle->getPrecio();
$sheet->getStyle('D'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('E'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$precios_cant = $detalle->getCantidad() * $icargo->getValor();
$nsubtotal += $precios_cant;
$sheet->setCellValue('F'.$i, $precios_cant);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('B'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
}
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$sheet->setCellValue('B'.$i, '');
$sheet->setCellValue('C'.$i, '');
$sheet->setCellValue('D'.$i, '');
$sheet->setCellValue('E'.$i, '');
$sheet->setCellValue('F'.$i, '');
$sheet->getStyle('B'.$i.':F'.$i)->applyFromArray($styleArray);
$i++;
$i = $i+1;
$sheet->setCellValue('B'.$i, 'ORIGINAL:ADQUIRIENTE-COPIA:EMISOR');
$sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(8);
$sheet->setCellValue('C'.$i, 'SUBTOTAL 0%:')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, $nsubtotal);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$i++;
$sheet->setCellValue('C'.$i, 'SUBTOTAL 12%:')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, 0);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/firmas/salvarado.png');
$drawing->setHeight(65);
$drawing->setCoordinates('B'.$i, '');
$drawing->setWorksheet($sheet);
$i++;
$sheet->setCellValue('C'.$i, 'DESCUENTO:')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, 0);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$i++;
$sheet->setCellValue('C'.$i, 'SUBTOTAL')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, $nsubtotal);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$i++;
$sheet->setCellValue('C'.$i, 'IVA')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, 0);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$i++;
$sheet->setCellValue('C'.$i, 'VALOR TOTAL')->mergeCells('C'.$i.':E'.$i);
$sheet->setCellValue('F'.$i, $nsubtotal);
$sheet->getStyle('F'.$i)->getNumberFormat()->setFormatCode('$### ### ### ##0.00');
$sheet->getStyle('C'.$i.':F'.$i)->applyFromArray($styleArray);
$sheet->getStyle('C'.$i.':F'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$styleArray2 = [
'borders' => [
'bottom' => [
'borderStyle' => Border::BORDER_THIN,
],
],
];
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing();
$drawing->setName('PhpSpreadsheet logo');
$drawing->setPath('./assets/images/firma_autorizada.png');
$drawing->setHeight(18);
$drawing->setCoordinates('A'.$i, '');
$drawing->setWorksheet($sheet);
$sheet->setCellValue('A'.$i, 'Firma Autorizada');
$sheet->getStyle('A'.$i)->getFont()->setBold(true)->setSize(10);
//$sheet->getStyle('B'.$i)->applyFromArray($styleArray2);
$sheet->setCellValue('B'.$i, 'Recibà Conforme');
$sheet->getStyle('B'.$i)->getFont()->setBold(true)->setSize(10);
$sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
//$sheet->getStyle('D'.$i)->getFont()->setBold(true)->setSize(10);
//$sheet->setCellValue('E'.$i, '');
// $sheet->getStyle('E'.$i)->applyFromArray($styleArray2);
$sheet->getStyle('B11:E11')->applyFromArray($styleArray);
$sheet->getStyle('F11')->applyFromArray($styleArray);
$sheet->getStyle('E11')->applyFromArray($styleArray);
$sheet->getStyle('D11')->applyFromArray($styleArray);
$sheet->getColumnDimension('A')->setWidth(8);
$sheet->getColumnDimension('B')->setWidth(45);
$sheet->getColumnDimension('C')->setWidth(9);
$sheet->getColumnDimension('D')->setWidth(9);
$sheet->getColumnDimension('E')->setWidth(9);
$sheet->getColumnDimension('F')->setWidth(9);
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'NOTA DE ENTREGA.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/imprimir_nota_de_entrega/{id}", name="nota_de_entrega_imprimir_pdf2", methods={"GET"})
*/
public function imprimir_nota_de_entrega_pdf2 (Receta $receta, $id, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, AgendaRepository $agendaRepository, Request $request, ClientesRepository $clientesRepository, ItemsCargosRepository $itemsCargosRepository): Response
{
$ip = $request->getClientIp();
//dd($ip);
$user = $this->security->getUser();
//dd($user);
$empresa = $empresaRepository->find(1);
$agenda = $receta->getHistoria()->getAgenda();
$hc = null; $fecha_cita= null;
if($agenda != null){
$fecha_cita = $agenda->getInicio();
}
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', TRUE);
$pdfOptions->set('isHtml5ParserEnabled', TRUE);
//$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
// Recupere el HTML generado en archivo twig
$html = $this->renderView('receta/nota_de_entrega.html.twig', [
'empresa' => $empresa,
'receta' => $receta,
'detalles' => $receta->getRecetaDetalles(),
'fecha_cita' => $fecha_cita,
'itemsCargosRepository' => $itemsCargosRepository
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
//$dompdf->loadHtmlFile($html);
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
//$dompdf->setPaper('A4', 'portrait');
$dompdf->setPaper('A4', 'portrait');
// Renderiza el HTML como PDF
$dompdf->render();
// EnvÃe el PDF generado al navegador (vista en lÃnea)
$dompdf->stream("Recibo_".$receta->getPaciente()->getApellido1()." ".$receta->getPaciente()->getNombre1(), [
"Attachment" => false
]);
}
/**
* @Route("/imprimir/{id}/new_version", name="receta_imprimir_new_version", methods={"GET"})
*/
public function imprimir_receta_new_version(
Request $request,
Receta $recetum,
EmpresaRepository $empresaRepository
): Response {
$unidad = $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
$empresa = $empresaRepository->find($unidad->getId());//dd($empresa);
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$doctor = $recetum->getHistoria()->getAgenda()->getDoctor();
$options = new \Dompdf\Options();
$options->set('defaultFont', 'Arial');
$options->set('isRemoteEnabled', true);
$options->set('dpi', 120);
$dompdf = new \Dompdf\Dompdf($options);
//////////////////////////////////////
$ordenes = $historia->getAgenda()->getOrdenProcedimientos();
$agrupado = [];
foreach ($ordenes as $orden) {
if($orden->getDiaReceta()=='1'){
$tipo = $orden->getTipo(); // "PAQUETE 1"
$proc = $orden->getProcedimiento();
$pid = $proc->getId();
$nom = $proc->getNombre();
$obs = $orden->getObservacion();
if (!isset($agrupado[$tipo])) {
$agrupado[$tipo] = [];
}
if (!isset($agrupado[$tipo][$pid])) {
$agrupado[$tipo][$pid] = [
'nombre' => $nom,
'obs' => $obs,
'cant' => 0,
];
}
$agrupado[$tipo][$pid]['cant']++;
}
}
//////////////////////////////////////
$html = $this->renderView('receta/receta_pdf_new_version.html.twig', [
'recetum' => $recetum,
'dxs' => $dxs,
'empresa' => $empresa,
'doctor' => $doctor,
'agrupado' => $agrupado
]);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
return new Response(
$dompdf->output(),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="Receta_'.$recetum->getId().'.pdf"',
]
);
}
/**
* @Route("/clonar/receta/id/{id}", name="receta_clonar", methods={"GET"})
*/
public function clonarReceta(Receta $recetaOriginal, Request $request): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$nuevaReceta = new Receta();
$em = $this->getDoctrine()->getManager();
// Copiar propiedades simples
$nuevaReceta->setDoctor($recetaOriginal->getDoctor());
$nuevaReceta->setEstado($recetaOriginal->getEstado());
$nuevaReceta->setFecha(new \DateTime()); // Puedes copiar la fecha original si prefieres
$nuevaReceta->setIpCrea($ip);
$nuevaReceta->setIpModifica($ip);
$nuevaReceta->setUserCrea($user->getId());
$nuevaReceta->setUserModifica($user->getId());
$nuevaReceta->setPaciente($recetaOriginal->getPaciente());
$nuevaReceta->setCerrada(false); // La receta clonada puede empezar como abierta
$nuevaReceta->setHistoria($recetaOriginal->getHistoria());
$nuevaReceta->setObservacion($recetaOriginal->getObservacion());
$nuevaReceta->setRp($recetaOriginal->getRp());
$nuevaReceta->setPrescripcion($recetaOriginal->getPrescripcion());
$nuevaReceta->setTipo($recetaOriginal->getTipo());
$nuevaReceta->setNotasDeEvolucion($recetaOriginal->getNotasDeEvolucion());
// Copiar detalles
foreach ($recetaOriginal->getRecetaDetalles() as $detalleOriginal) {
$nuevoDetalle = new RecetaDetalle();
$nuevoDetalle->setReceta($nuevaReceta);
$nuevoDetalle->setMedicina($detalleOriginal->getMedicina());
$nuevoDetalle->setNombre($detalleOriginal->getNombre());
$nuevoDetalle->setPresentacion($detalleOriginal->getPresentacion());
$nuevoDetalle->setIndicacion($detalleOriginal->getIndicacion());
$nuevoDetalle->setIpCrea($ip);
$nuevoDetalle->setIpModifica($ip);
$nuevoDetalle->setUserCrea($user->getId());
$nuevoDetalle->setUserModifica($user->getId());
$nuevoDetalle->setCantidad($detalleOriginal->getCantidad());
$nuevoDetalle->setPlano($detalleOriginal->getPlano());
$nuevaReceta->addRecetaDetalle($nuevoDetalle);
$em->persist($nuevoDetalle);
}
$em->persist($nuevaReceta);
$em->flush();
return $this->redirectToRoute('receta_edit',[
'id' => $nuevaReceta->getId(),
]);
}
/**
* @Route("/receta/copiar-detalles/{idOrigen}/{idDestino}", name="receta_copiar_detalles", methods={"POST"})
* @ParamConverter("recetaOrigen", options={"id" = "idOrigen"})
* @ParamConverter("recetaDestino", options={"id" = "idDestino"})
*/
public function copiarDetalles(
Receta $recetaOrigen,
Receta $recetaDestino,
Request $request
): Response {
$ip = $request->getClientIp();
$user = $this->security->getUser();
$em = $this->getDoctrine()->getManager();
foreach ($recetaOrigen->getRecetaDetalles() as $detalleOriginal) {
$nuevoDetalle = new RecetaDetalle();
$nuevoDetalle->setReceta($recetaDestino);
$nuevoDetalle->setMedicina($detalleOriginal->getMedicina());
$nuevoDetalle->setNombre($detalleOriginal->getNombre());
$nuevoDetalle->setPresentacion($detalleOriginal->getPresentacion());
$nuevoDetalle->setIndicacion($detalleOriginal->getIndicacion());
$nuevoDetalle->setCantidad($detalleOriginal->getCantidad());
$nuevoDetalle->setPlano($detalleOriginal->getPlano());
$nuevoDetalle->setIpCrea($ip);
$nuevoDetalle->setIpModifica($ip);
$nuevoDetalle->setUserCrea($user->getId());
$nuevoDetalle->setUserModifica($user->getId());
$em->persist($nuevoDetalle);
}
$em->flush();
return $this->json(['status' => 'ok']);
}
/**
* @Route("/imprimir/{id}/new_version/oto_clinic", name="receta_imprimir_new_version_oto_clinic", methods={"GET"})
*/
public function imprimir_receta_new_version_oto_clinic(
Request $request,
Receta $recetum,
HistoriaClinicaRepository $historiaClinicaRepository,
EmpresaRepository $empresaRepository,
AgendaRepository $agendaRepository
): Response {
$unidad = $recetum->getHistoria()->getAgenda()->getSala()->getUnidad();
$empresa = $empresaRepository->find($unidad->getId());
$historia = $recetum->getHistoria();
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', true);
$pdfOptions->set('isHtml5ParserEnabled', true);
$cabeceraPath = realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/cab_oto.png');
$cabeceraPath = 'file:///' . str_replace('\\', '/', $cabeceraPath);
$fondoPath = realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/fondo_oto.jpg');
$fondoPath = 'file:///' . str_replace('\\', '/', $fondoPath);
$doctor = $recetum->getHistoria()->getAgenda()->getDoctor();
$firmaPath = null;
if ($doctor && $doctor->getFirma()) {
$path = realpath($this->getParameter('kernel.project_dir') . '/public/assets/images/firmas/' . $doctor->getFirma());
if ($path) {
$firmaPath = 'file://' . str_replace('\\', '/', $path);
}
}
$dompdf = new Dompdf($pdfOptions);
$html = $this->renderView('receta/receta_pdf_new_version_oto.html.twig', [
'recetum' => $recetum,
'dxs' => $dxs,
'empresa' => $empresa,
'cabecera' => $cabeceraPath,
'fondo' => $fondoPath,
'firmaPath'=> $firmaPath
]);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
return new Response($output, 200, [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="Receta_'.$historia->getPaciente()->getCedula().'.pdf"'
]);
}
}