<?php
namespace App\Controller;
use App\Entity\Ordenes;
use App\Entity\Ordenservicios;
use App\Entity\Unidades;
use App\Entity\Afiliados;
use App\Form\FacturasordenesType;
use App\Entity\Facturasordenes;
use App\Entity\Ordenesagotamiento;
use App\Entity\Tasascambio;
use App\Entity\Motivosconsulta;
use App\Entity\Tipotasascambio;
use App\Entity\Monedas;
use App\Entity\Antecedentes;
use App\Model\EnvioEmail;
use App\Entity\Proveedores;
use App\Entity\Estatusordenes;
use App\Form\TrazasType;
use App\Entity\Trazas;
use App\Form\RecipesType;
use App\Entity\Recipes;
use App\Entity\Tiposervicios;
use App\Entity\Certificados;
use App\Entity\Usuarios;
use App\Entity\Clientes;
use App\Entity\Contratos;
use App\Entity\Riesgoscubiertos;
use App\Form\OrdenesType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Doctrine\ORM\Tools\Pagination\Paginator;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
// Incluir namespaces requeridos de PhpSpreadsheet
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Dompdf\Dompdf;
use Dompdf\Options;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
/**
* @Route("/ordenes")
*/
class OrdenesController extends AbstractController
{
/**
* @Route("/", name="ordenes_index", methods={"GET"})
*/
public function index($currentPage = 1,EntityManagerInterface $entityManager,Request $request): Response
{
// var_dump($request->getSchemeAndHttpHost());
// var_dump($request->getScheme());
// var_dump($request->getHttpHost());
$session=$request->getSession();
$arreglo = array();
$userid="";
$proveedor=null;
$ncontrato=trim($request->request->get('ncontrato'));
$norden=trim($request->request->get('norden'));
$tipoid=trim($request->request->get('tipoid'));
$numid=trim($request->request->get('numid'));
$limit = 20;
$roles = $this->container->get('security.token_storage')->getToken()->getRoleNames();
if (in_array("ROLE_PROVEEDOR", $roles))
{
$userid=$session->get('userid');
$usuario = $entityManager->getRepository(Usuarios::class)->find($userid);
$proveedor=$usuario->getProveedores();
}
$ordenes = $entityManager->getRepository(Ordenes::class)
->getAllOrdens($currentPage, $limit,$norden,$ncontrato,$proveedor,$tipoid,$numid);
$ordenespaginada = $ordenes['paginator'];
$ordenesQueryCompleta = $ordenes['query'];
$querybaseordenes=$ordenes['query']->getResult();
$session->set('querybaseordenes',$ordenes['query']->getDql());
if ($norden!="")
{
$arreglo = array_merge($arreglo, array('norden'=>$norden));
}
if ($ncontrato!="")
{
$arreglo = array_merge($arreglo, array('ncontrato'=>$ncontrato));
}
if ($tipoid!="")
{
$arreglo = array_merge($arreglo, array('tipoid'=>$tipoid));
}
if ($numid!="")
{
$arreglo = array_merge($arreglo, array('numid'=>$numid));
}
if (count($arreglo)>0)
$session->set('parametrosordenes',$arreglo);
else
$session->set('parametrosordenes',null);
$maxPages = ceil($ordenes['paginator']->count() / $limit);
return $this->render('ordenes/index.html.twig', [
'ordenes' => $ordenespaginada,
'maxPages'=>$maxPages,
'thisPage' => $currentPage,
'all_items' => $ordenesQueryCompleta,
'ncontrato'=>$ncontrato,
'tipoid'=>$tipoid,
'numid'=>$numid,
'norden'=>$norden,
]);
}
public function generarexcel(Request $request,EntityManagerInterface $entityManager)
{
$session=$request->getSession();
$spreadsheet = new Spreadsheet();
/* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'N° Orden');
$sheet->setCellValue('B1', 'N° Proveedor');
$sheet->setCellValue('C1', 'RIF Proveedor');
$sheet->setCellValue('D1', 'Proveedor');
$sheet->setCellValue('E1', 'N° Contrato');
$sheet->setCellValue('F1', 'Cédula Afiliado');
$sheet->setCellValue('G1', 'Afiliado');
$sheet->setCellValue('H1', 'Fecha Nacimiento');
$sheet->setCellValue('I1', 'Sexo');
$sheet->setCellValue('J1', 'Fecha de Inclusión');
$sheet->setCellValue('K1', 'Fecha de Exclusión');
$sheet->setCellValue('L1', 'Fecha Servicio');
$sheet->setCellValue('M1', 'Tipo Servicio');
$sheet->setCellValue('N1', 'Unidad');
$sheet->setCellValue('O1', 'Motivo de consulta');
$sheet->setCellValue('P1', 'Diagnóstico');
$sheet->setCellValue('Q1', 'Referido');
$sheet->setCellValue('R1', 'N° Presupuesto');
$sheet->setCellValue('S1', 'Monto Presupuesto');
$sheet->setCellValue('T1', 'Monto Autorizado Bs');
$sheet->setCellValue('U1', 'Tasa Cambio');
$sheet->setCellValue('V1', 'Monto Autorizado $');
$sheet->setCellValue('W1', 'Estatus Orden');
$sheet->setCellValue('X1', 'Fecha Estatus Orden');
$sheet->setCellValue('Y1', 'N° Factura');
$sheet->setCellValue('Z1', 'N° Control');
$sheet->setCellValue('AA1', 'Fecha Emisión');
$sheet->setCellValue('AB1', 'Fecha Recepción Factura');
$sheet->setCellValue('AC1', 'Monto Factura $');
$sheet->setCellValue('AD1', 'IND Plazos Espera');
$sheet->setCellValue('AE1', 'Dias de Plazos Espera');
$sheet->setCellValue('AF1', 'Cupo Servicio');
$sheet->setCellValue('AG1', 'N° Certificado');
$sheet->setCellValue('AH1', 'Usuario');
$sheet->setCellValue('AI1', 'Tipo Vigencia Contrato');
$sheet->setCellValue('AJ1', 'Causa de Rechazo');
$spreadsheet->getActiveSheet()->getStyle('A1:AJ1')->getFont()->setBold(true)->setSize(12);
$spreadsheet->setActiveSheetIndex(0)
->getStyle('A1')
->getFill()
->getStartColor()
->setRGB('808080');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('V')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('W')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('X')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('Y')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('Z')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AA')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AB')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AC')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AD')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AE')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AF')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AG')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AH')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AI')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('AJ')->setAutoSize(true);
$sheet->setTitle("Ordenes de Servicio");
$queryordenes=$session->get('querybaseordenes');
if($session->get('parametrosordenes')!=null)
{
$query3 = $entityManager->createQuery($queryordenes)
->setParameters($session->get('parametrosordenes'));
}
else
{
$query3 = $entityManager->createQuery($queryordenes);
}
$afiliados = $query3->getResult();
$index=2;
foreach ($afiliados as $afiliado)
{
$sheet->setCellValue('A'.$index, $afiliado->getId());
$sheet->setCellValue('B'.$index, $afiliado->getProveedores()->getId());
$sheet->setCellValue('C'.$index, $afiliado->getProveedores()->getTipoid()."-".$afiliado->getProveedores()->getNumid());
$sheet->setCellValue('D'.$index, $afiliado->getProveedores());
$sheet->setCellValue('E'.$index, $afiliado->getContratos());
$sheet->setCellValue('F'.$index, $afiliado->getClientes()->getTipoid()."-".$afiliado->getClientes()->getNumid());
$sheet->setCellValue('G'.$index, $afiliado->getClientes());
$sheet->setCellValue('H'.$index, $afiliado->getClientes()->getFechanacimiento() ? $afiliado->getClientes()->getFechanacimiento()->format('d-m-Y'): "");
$sheet->setCellValue('I'.$index, $afiliado->getClientes()->getSexo());
$afiliadotabla = $entityManager
->getRepository(Afiliados::class)
->findOneBy(array('contratos' => $afiliado->getContratos(),'clientes'=>$afiliado->getClientes()));
$sheet->setCellValue('J'.$index, $afiliadotabla->getFechaingreso() ? $afiliadotabla->getFechaingreso()->format('d-m-Y'): "");
$sheet->setCellValue('K'.$index, $afiliadotabla->getFechaexclusion() ? $afiliadotabla->getFechaexclusion()->format('d-m-Y'): "");
$sheet->setCellValue('L'.$index, $afiliado->getFechaservicio()->format('d-m-Y'));
$sheet->setCellValue('M'.$index, $afiliado->getTipo());
$sheet->setCellValue('N'.$index, $afiliado->getUnidades());
$sheet->setCellValue('O'.$index, $afiliado->getMotivoscosulta());
$sheet->setCellValue('P'.$index, $afiliado->getPatologias());
$sheet->setCellValue('Q'.$index, $afiliado->getReferidos());
$sheet->setCellValue('R'.$index, $afiliado->getNroprepupuesto());
$sheet->setCellValue('S'.$index, $afiliado->getMontopresupuesto());
$sheet->setCellValue('T'.$index, $afiliado->getMontoautorizado());
$sheet->setCellValue('U'.$index, $afiliado->getTasacambio());
$montodivisas= ($afiliado->getTasacambio()!=0) ? ($afiliado->getMontoautorizado()/$afiliado->getTasacambio()) : 0;
$sheet->setCellValue('V'.$index, $montodivisas);
$sheet->setCellValue('W'.$index, $afiliado->getEstatusordenes());
$sheet->setCellValue('X'.$index, $afiliado->getFechaestatus() ? $afiliado->getFechaestatus()->format('d-m-Y') : "");
$factura = $entityManager->getRepository(Facturasordenes::class)
->findOneBy(array('ordenes'=>$afiliado->getId()));
if ($factura)
{
$sheet->setCellValue('Y'.$index, $factura->getNrofactura());
$sheet->setCellValue('Z'.$index, $factura->getNumerocontrol());
$sheet->setCellValue('AA'.$index, $factura->getFechaemision() ? $factura->getFechaemision()->format('d-m-Y') : "");
$sheet->setCellValue('AB'.$index, $factura->getFecharecepcion() ? $factura->getFecharecepcion()->format('d-m-Y') : "");
$sheet->setCellValue('AC'.$index, $factura->getMontofactura());
}
else
{
$sheet->setCellValue('Y'.$index, "");
$sheet->setCellValue('Z'.$index, "");
$sheet->setCellValue('AA'.$index, "");
$sheet->setCellValue('AB'.$index, "");
$sheet->setCellValue('AC'.$index, "");
}
$sheet->setCellValue('AD'.$index, $afiliado->getIndplazosespera());
$sheet->setCellValue('AE'.$index, $afiliado->getDiasplazosespera());
$sheet->setCellValue('AF'.$index, $afiliado->getTiposervicios());
$sheet->setCellValue('AG'.$index, $afiliado->getCertificados()->getNcertificado());
$sheet->setCellValue('AH'.$index, $afiliado->getAnalista());
$sheet->setCellValue('AI'.$index, $afiliado->getContratos()->getTipovigencias());
$sheet->setCellValue('AJ'.$index, $afiliado->getCausarechazos());
$index++;
}
// Crear tu archivo Office 2007 Excel (XLSX Formato)
$writer = new Xlsx($spreadsheet);
// Crear archivo temporal en el sistema
$fileName = 'ordenes_de_servicios_'.date('d-m-Y H:i:s').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Guardar el archivo de excel en el directorio temporal del sistema
$writer->save($temp_file);
// Retornar excel como descarga
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function generarresumenexcel(Request $request,EntityManagerInterface $entityManager)
{
$session=$request->getSession();
$spreadsheet = new Spreadsheet();
/* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'N° Orden');
$sheet->setCellValue('B1', 'N° Identificación');
$sheet->setCellValue('C1', 'Afiliado');
$sheet->setCellValue('D1', 'Fecha nacimiento');
$sheet->setCellValue('E1', 'Estatus');
$sheet->setCellValue('F1', 'Fecha Servicio');
$sheet->setCellValue('G1', 'Tipo');
$sheet->setCellValue('H1', 'Motivo');
$sheet->setCellValue('I1', 'N° Presupuesto');
$sheet->setCellValue('J1', 'Monto Presupuesto');
$sheet->setCellValue('K1', 'Monto Autorizado Bs');
$sheet->setCellValue('L1', 'Tasa Cambio');
$sheet->setCellValue('m1', 'Monto Autorizado $');
$spreadsheet->getActiveSheet()->getStyle('A1:Y1')->getFont()->setBold(true)->setSize(12);
$spreadsheet->setActiveSheetIndex(0)
->getStyle('A1')
->getFill()
->getStartColor()
->setRGB('808080');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
$sheet->setTitle("Resumen de Órdenes de Servicio");
$queryordenes=$session->get('querybaseordenes');
$query3 = $entityManager->createQuery($queryordenes);
// if($session->get('parametrosordenes')!=null)
// {
// $query3 = $entityManager->createQuery($queryordenes)
// ->setParameters($session->get('parametrosordenes'));
// }
// else
// {
// $query3 = $entityManager->createQuery($queryordenes);
// }
$afiliados = $query3->getResult();
$index=2;
foreach ($afiliados as $afiliado)
{
$sheet->setCellValue('A'.$index, $afiliado->getId());
$sheet->setCellValue('B'.$index, $afiliado->getClientes()->getTipoid()."-".$afiliado->getClientes()->getNumid());
$sheet->setCellValue('C'.$index, $afiliado->getClientes());
$sheet->setCellValue('D'.$index, $afiliado->getClientes()->getFechanacimiento() ? $afiliado->getClientes()->getFechanacimiento()->format('d-m-Y'): "");
$sheet->setCellValue('E'.$index, $afiliado->getEstatusordenes());
$sheet->setCellValue('F'.$index, $afiliado->getFechaservicio()->format('d-m-Y'));
$sheet->setCellValue('G'.$index, $afiliado->getTipo());
$sheet->setCellValue('H'.$index, $afiliado->getMotivoscosulta());
$sheet->setCellValue('I'.$index, $afiliado->getNroprepupuesto());
$sheet->setCellValue('J'.$index, $afiliado->getMontopresupuesto());
$sheet->setCellValue('K'.$index, $afiliado->getMontoautorizado());
$sheet->setCellValue('L'.$index, $afiliado->getTasacambio());
$montodivisas= ($afiliado->getTasacambio()!=0) ? ($afiliado->getMontoautorizado()/$afiliado->getTasacambio()) : 0;
$sheet->setCellValue('M'.$index, $montodivisas);
$index++;
}
// Crear tu archivo Office 2007 Excel (XLSX Formato)
$writer = new Xlsx($spreadsheet);
// Crear archivo temporal en el sistema
$fileName = 'resumen_ordenes_de_servicios_'.date('d-m-Y H:i:s').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Guardar el archivo de excel en el directorio temporal del sistema
$writer->save($temp_file);
// Retornar excel como descarga
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function pendientes($currentPage = 1,EntityManagerInterface $entityManager): Response
{
// $ordenes = $entityManager
// ->getRepository(Ordenes::class)
// ->findBY(array(),array('fecharegistro'=>'DESC'));
$limit = 20;
$ordenes = $entityManager->getRepository(Ordenes::class)->getOrdenesPendientes($currentPage, $limit,$entityManager);
$ordenespaginada = $ordenes['paginator'];
$ordenesQueryCompleta = $ordenes['query'];
$maxPages = ceil($ordenes['paginator']->count() / $limit);
return $this->render('ordenes/pendientes.html.twig', [
'ordenes' => $ordenespaginada,
'maxPages'=>$maxPages,
'thisPage' => $currentPage,
'all_items' => $ordenesQueryCompleta,
]);
}
public function resumen($currentPage = 1,EntityManagerInterface $entityManager,Request $request): Response
{
$session=$request->getSession();
$limit = 20;
$ordenes = $entityManager->getRepository(Ordenes::class)->getResumenOrdenes($currentPage, $limit,$entityManager);
$ordenespaginada = $ordenes['paginator'];
$ordenesQueryCompleta = $ordenes['query'];
$session->set('querybaseordenes',$ordenes['query']->getDql());
$maxPages = ceil($ordenes['paginator']->count() / $limit);
return $this->render('ordenes/resumen.html.twig', [
'ordenes' => $ordenespaginada,
'maxPages'=>$maxPages,
'thisPage' => $currentPage,
'all_items' => $ordenesQueryCompleta,
]);
}
public function misordenes(Request $request,EntityManagerInterface $entityManager,MailerInterface $mailer): Response
{
$session=$request->getSession();
$usuarioconectado=$session->get('userid');
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$ordenes = $entityManager
->getRepository(Ordenes::class)
->findBY(array('analista'=>$usuarioconectado),array('fecharegistro'=>'DESC'));
return $this->render('ordenes/misordenes.html.twig', [
'ordenes' => $ordenes,
'usuario' => $usuario,
]);
}
public function cambioestatus(Request $request, EntityManagerInterface $entityManager): Response
{
$session=$request->getSession();
if($request->request->get("ordenid")!="" && $request->request->get("estatusnuevo")!="" )
{
$ordenid=$request->request->get("ordenid");
$cotestatusid=$request->request->get("estatusnuevo");
$orden = $entityManager->getRepository(Ordenes::class)
->find($ordenid);
$estatusorden = $entityManager->getRepository(Estatusordenes::class)
->find($cotestatusid);
$observacion="La orden Cambio a Estatus: ".$estatusorden;
if ($cotestatusid==5)
{
$causa=$request->request->get("causarechazo");
$causarechazo = $entityManager->getRepository(\App\Entity\Causasrechazos::class)
->find($causa);
$orden->setCausarechazos($causarechazo);
$observacion="La orden Cambio a Estatus: ".$estatusorden." Causa de Rechazo: ".$causarechazo;
}
$orden->setEstatusordenes($estatusorden);
$entityManager->persist($orden);
$entityManager->flush();
$traza = new Trazas();
$traza->setOrdenes($orden);
$traza->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
$usuarioconectado=$session->get('userid');
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$traza->setUsuarios($usuario);
$traza->setEstatus(1);
$traza->setObservaciones($observacion);
$entityManager->persist($traza);
$entityManager->flush();
// Añadir mensajes flash
$session->getFlashBag()->add(
'success',
'La orden cambió de estatus de Forma Correcta !'
);
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $orden->getId())));
}
public function serviciosconsumidos(Request $request,EntityManagerInterface $entityManager): Response
{
$clienteid=$request->query->get("clienteid");
$contratoid=$request->query->get("contratoid");
$servicioid=$request->query->get("servicioid");
$contrato = $entityManager->getRepository(Contratos::class)
->find($contratoid);
$cliente = $entityManager->getRepository(Clientes::class)
->find($clienteid);
if (!$servicioid)
{
// $ordenes = $entityManager
// ->getRepository(Ordenes::class)
// ->findBY(array('contratos'=>$contrato,'clientes'=>$cliente),array('fecharegistro'=>'DESC'));
$ordenes = $entityManager->createQuery("select O
FROM App\Entity\Ordenes O where O.contratos=".$contrato->getId()." and O.clientes=".$cliente->getId()."order by O.fecharegistro desc")
->setFirstResult(0)
->setMaxResults(20)
->getResult();
}
else
{
$servicio=$entityManager->getRepository(Tiposervicios::class)
->find($servicioid);
$ordenes = $entityManager
->getRepository(Ordenes::class)
->findBY(array('contratos'=>$contrato,'clientes'=>$cliente,'tiposervicios'=>$servicio),array('fecharegistro'=>'DESC'));
}
return $this->render('ordenes/serviciosconsumidos.html.twig', [
'ordenes' => $ordenes,
'cliente' => $cliente,
]);
}
public function ordenesporservicio(Request $request,EntityManagerInterface $entityManager): Response
{
$clienteid=$request->query->get("clienteid");
$contratoid=$request->query->get("contratoid");
$servicioid=$request->query->get("servicioid");
$montomaximo=$request->query->get("maxporservicio");
$contrato = $entityManager->getRepository(Contratos::class)
->find($contratoid);
$cliente = $entityManager->getRepository(Clientes::class)
->find($clienteid);
$servicio=$entityManager->getRepository(Tiposervicios::class)
->find($servicioid);
$ordenes = $entityManager
->getRepository(Ordenes::class)
->findBY(array('contratos'=>$contrato,'clientes'=>$cliente,'tiposervicios'=>$servicio),array('fecharegistro'=>'DESC'));
return $this->render('ordenes/ordenesporservicio.html.twig', [
'ordenes' => $ordenes,
'cliente' => $cliente,
'servicio' => $servicio,
'montomaximo' =>$montomaximo,
]);
}
public function consultarafiliado(Request $request,EntityManagerInterface $entityManager): Response
{
$tipoid=null;
$numid=null;
$contratos="";
$clienteid=null;
if ($request->request->get("tipoid")!="" and $request->request->get("numid")!="")
{
$tipoid=$request->request->get("tipoid");
$numid=$request->request->get("numid");
$contratos=null;
$cliente = $entityManager->getRepository(Clientes::class)
->findOneBy(array('tipoid'=>$request->request->get("tipoid"),'numid'=>$request->request->get("numid")));
if($cliente)
{
$riesgoscubiertos = $entityManager->getRepository(Riesgoscubiertos::class)
->findBy(array('clientes'=>$cliente));
$query="select DISTINCT CL.nombresrazonsocial nombreasegurado ,CO.id,CE.id as idcertificado, CE.ncertificado,CE.fechadesde ,CE.fechahasta ,
PL.descripcion plan,(select CL2.nombresrazonsocial
from App\Entity\Clientes CL2
where CL2.tipoid=CE.tipoid and CL2.numid=CE.numid ) as titular,(select CL3.nombresrazonsocial
from App\Entity\Clientes CL3
where CL3.id=CO.clientes ) as tomador,CO.indservicioconrecibopendiente,CO.vip,AF.fechaingreso,DateDiff(CURRENT_TIME(),AF.fechaingreso) dias
FROM App\Entity\Riesgoscubiertos RC
JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
JOIN App\Entity\Contratos CO WITH CO.id = RC.contratos
JOIN App\Entity\Certificados CE WITH CE.ncertificado = RC.ncertificado AND CE.contratos=RC.contratos
JOIN App\Entity\Afiliados AF WITH (AF.clientes = RC.clientes AND AF.contratos=RC.contratos)
JOIN App\Entity\Planseleccionado PS WITH PS.contratos = RC.contratos
JOIN App\Entity\Planesservicios PLS WITH PLS.id = PS.planesservicios
JOIN App\Entity\Planes PL WITH PL.id = PLS.planes
where RC.clientes=?1
and CE.estatus=1
and AF.estatus=1
and (CO.estatuscontratos=2 or (CO.estatuscontratos=1 and CO.indservicioconrecibopendiente=1))
and CURRENT_DATE() BETWEEN DATE_FORMAT(CE.fechadesde,'%Y-%m-%d') and DATE_FORMAT(CE.fechahasta,'%Y-%m-%d')
order by CO.id desc";
$query3 = $entityManager->createQuery($query);
$query3->setParameter(1, $cliente);
$contratos=$query3->getResult();
$clienteid=$cliente->getId();
}
}
return $this->renderForm('ordenes/new.html.twig', [
'contratos' => $contratos,
'clienteid' => $clienteid,
'numid' =>$numid,
'tipoid' =>$tipoid,
]);
}
public function consultareventos(Request $request,EntityManagerInterface $entityManager): Response
{
$tipoid=null;
$numid=null;
$contratos="";
$clienteid=null;
if ($request->request->get("tipoid")!="" and $request->request->get("numid")!="")
{
$tipoid=$request->request->get("tipoid");
$numid=$request->request->get("numid");
$contratos=null;
$cliente = $entityManager->getRepository(Clientes::class)
->findOneBy(array('tipoid'=>$request->request->get("tipoid"),'numid'=>$request->request->get("numid")));
if($cliente)
{
$riesgoscubiertos = $entityManager->getRepository(Riesgoscubiertos::class)
->findBy(array('clientes'=>$cliente));
$query="select DISTINCT CL.nombresrazonsocial nombreasegurado ,CO.id,CE.id as idcertificado, CE.ncertificado,CE.fechadesde ,CE.fechahasta ,
PL.descripcion plan,(select CL2.nombresrazonsocial
from App\Entity\Clientes CL2
where CL2.tipoid=CE.tipoid and CL2.numid=CE.numid ) as titular,(select CL3.nombresrazonsocial
from App\Entity\Clientes CL3
where CL3.id=CO.clientes ) as tomador,CO.indservicioconrecibopendiente,CO.vip,AF.fechaingreso,DateDiff(CURRENT_TIME(),AF.fechaingreso) dias
FROM App\Entity\Riesgoscubiertos RC
JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
JOIN App\Entity\Contratos CO WITH CO.id = RC.contratos
JOIN App\Entity\Certificados CE WITH CE.ncertificado = RC.ncertificado AND CE.contratos=RC.contratos
JOIN App\Entity\Afiliados AF WITH AF.clientes = RC.clientes AND AF.contratos=RC.contratos
JOIN App\Entity\Planseleccionado PS WITH PS.contratos = RC.contratos
JOIN App\Entity\Planesservicios PLS WITH PLS.id = PS.planesservicios
JOIN App\Entity\Planes PL WITH PL.id = PLS.planes
where RC.clientes=?1
and (CO.estatuscontratos=2 or (CO.estatuscontratos=1 and CO.indservicioconrecibopendiente=1))
and CURRENT_DATE() BETWEEN DATE_FORMAT(CE.fechadesde,'%Y-%m-%d') and DATE_FORMAT(CE.fechahasta,'%Y-%m-%d')
order by CO.id desc";
$query3 = $entityManager->createQuery($query);
$query3->setParameter(1, $cliente);
$contratos=$query3->getResult();
$clienteid=$cliente->getId();
}
}
return $this->renderForm('ordenes/consultareventos.html.twig', [
'contratos' => $contratos,
'clienteid' => $clienteid,
'numid' =>$numid,
'tipoid' =>$tipoid,
]);
}
public function consultarservicios(Request $request,EntityManagerInterface $entityManager): Response
{
$servicios=null;
$proveedores=null;
$cliente=null;
$contrato=null;
$servicioid=null;
$unidades=null;
if ($request->request->get("clienteid")!="" and $request->request->get("contratoid")!="" )
{
$clienteid=$request->request->get("clienteid");
$contratoid=$request->request->get("contratoid");
$cliente = $entityManager->getRepository(Clientes::class)
->find($clienteid);
$proveedores = $entityManager->getRepository(Proveedores::class)
->findAll();
$contrato = $entityManager->getRepository(Contratos::class)
->find($contratoid);
$motivos = $entityManager->getRepository(Motivosconsulta::class)
->findBy(array(),array('descripcion'=>'ASC'));
$unidades= $entityManager->getRepository(Unidades::class)
->findBy(array(),array('descripcion'=>'ASC'));
$referidos= $entityManager->getRepository(\App\Entity\Referidos::class)
->findBy(array(),array('id'=>'ASC'));
if($cliente && $contrato)
{
// $riesgoscubiertos = $entityManager->getRepository(Riesgoscubiertos::class)
// ->findBy(array('clientes'=>$cliente));
$query="select DISTINCT TS.id,TS.descripcion,TA.descripcion agotamiento ,RC.cantidadmaxservicios, AF.fechaingreso,TS.prioridad
FROM App\Entity\Riesgoscubiertos RC
JOIN App\Entity\Afiliados AF WITH (AF.clientes = RC.clientes and AF.contratos=RC.contratos)
JOIN App\Entity\Tiposervicios TS WITH TS.id = RC.tiposervicios
JOIN App\Entity\Tipoagotamiento TA WITH TA.id = RC.tipoagotamiento
JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
where RC.clientes=?1
and RC.contratos=?2
order by TS.prioridad asc";
$query3 = $entityManager->createQuery($query);
$query3->setParameter(1, $cliente);
$query3->setParameter(2, $contrato);
$servicios=$query3->getResult();
}
}
return $this->renderForm('ordenes/servicios.html.twig', [
'servicios' => $servicios,
'cliente' => $cliente,
'contrato' => $contrato,
'motivos' => $motivos,
'unidades' =>$unidades,
'proveedores' => $proveedores,
'referidos' =>$referidos,
]);
}
public function consultareventosxcontrato(Request $request,EntityManagerInterface $entityManager): Response
{
if ($request->request->get("clienteid")!="" and $request->request->get("contratoid")!="" )
{
$clienteid=$request->request->get("clienteid");
$contratoid=$request->request->get("contratoid");
$contrato = $entityManager->getRepository(Contratos::class)
->find($contratoid);
$cliente = $entityManager->getRepository(Clientes::class)
->find($clienteid);
$query="select DISTINCT TS.id,TS.descripcion,TA.descripcion agotamiento ,RC.cantidadmaxservicios, AF.fechaingreso,TS.prioridad
FROM App\Entity\Riesgoscubiertos RC
JOIN App\Entity\Afiliados AF WITH AF.clientes = RC.clientes and AF.contratos=RC.contratos
JOIN App\Entity\Tiposervicios TS WITH TS.id = RC.tiposervicios
JOIN App\Entity\Tipoagotamiento TA WITH TA.id = RC.tipoagotamiento
JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
where RC.clientes=?1
and RC.contratos=?2
order by TS.prioridad asc";
$query3 = $entityManager->createQuery($query);
$query3->setParameter(1, $cliente);
$query3->setParameter(2, $contrato);
$servicios=$query3->getResult();
$ordenes = $entityManager
->getRepository(Ordenes::class)
->findBY(array('contratos'=>$contrato,'clientes'=>$cliente),array('fecharegistro'=>'DESC'));
}
return $this->renderForm('ordenes/eventosporservicios.html.twig', [
'ordenes' => $ordenes,
'cliente' => $cliente,
'servicios' =>$servicios,
'contrato' =>$contrato,
]);
}
public function ordenescalendario(Request $request)
{
return $this->render('ordenes/todasvistacalendario.html.twig');
}
public function todaslasactuacionesjson(Request $request)
{
$em = $this->getDoctrine()->getManager();
$data=null;
$session = $request->getSession();
$usuarioconectado=$session->get('userid');
$query = $em->createQuery(
"select O
FROM App\Entity\Ordenes O
inner join App\Entity\Clientes C WITH O.clientes = C.id
order by O.fechaservicio desc");
$entities=$query->execute();
$i=0;
$arraycolor= array();
foreach ($entities as $ordenes)
{
$tipo=$ordenes->getTiposervicios();
$cliente=$ordenes->getClientes();
$usuario=$ordenes->getUsuarios();
$contratos=$ordenes->getContratos();
$data[$i]['title']=$tipo->getDescripcion();
$data[$i]['descripcion']=$ordenes->getCertificados()->getTipoid()."-".$ordenes->getCertificados()->getNumid();
$data[$i]['cliente']=$cliente->getNombresrazonsocial();
$data[$i]['abogado']=$usuario->getNombres();
$data[$i]['tribunal']=$contratos->getId();
$data[$i]['id']=$ordenes->getId();
$data[$i]['estatus']=$ordenes->getEstatusordenes()->getDescripcion();
$data[$i]['usuarioid']=$usuario->getId();
$data[$i]['usuarioconectado']=$usuario;
if($tipo->getId()%2==0)
$color= rand($tipo->getId(), 150);
else
$color= rand(150 , 250);
$color=$color;
$data[$i]['color']=$color;
$data[$i]['hora']=$ordenes->getFechaservicio()->format('H:i:s');
$data[$i]['start']=$ordenes->getFechaservicio()->format('Y-m-d H:i:s');
$i++;
}
$response = $data;
return new Response(json_encode($response));
}
/**
* @Route("/new", name="ordenes_new", methods={"GET", "POST"})
*/
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$tipoid=null;
$numid=null;
$contratos="";
$session=$request->getSession();
$ordene = new Ordenes();
$form = $this->createForm(OrdenesType::class, $ordene);
$form->handleRequest($request);
$ordene->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
$ordene->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
$usuarioconectado=$session->get('userid');
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$ordene->setUsuarios($usuario);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($ordene);
$entityManager->flush();
return $this->redirectToRoute('ordenes_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('ordenes/new.html.twig', [
'ordene' => $ordene,
'form' => $form,
'numid' =>$numid,
'tipoid' =>$tipoid,
'clienteid'=>null,
'contratos' =>$contratos,
]);
}
public function asignar(Request $request, EntityManagerInterface $entityManager,MailerInterface $mailer): Response
{
$session=$request->getSession();
if($request->request->get("ordenid")!="" && $request->request->get("usuarios")!="" )
{
$ordenid=$request->request->get("ordenid");
$orden = $entityManager->getRepository(Ordenes::class)->find($ordenid);
$traza = new Trazas();
$traza->setOrdenes($orden);
$traza->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
$usuarioconectado=$session->get('userid');
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$traza->setUsuarios($usuario);
$traza->setEstatus(1);
$usuarioasignado = $entityManager->getRepository(Usuarios::class)->find($request->request->get("usuarios"));
$traza->setObservaciones("La orden se asignó a: ".$usuarioasignado->getNombres());
$entityManager->persist($traza);
$entityManager->flush();
$orden->setAnalista($usuarioasignado);
$entityManager->persist($orden);
$entityManager->flush();
if ($usuarioasignado->getEmail()!="")
{
$asunto="CSL: Orden de servicio de salud asignada !";
$mensaje="Se le asignó la orden N°:".$orden->getId().", por favor procesar lo antes posible";
EnvioEmail::EnviarEmail($usuarioasignado->getEmail(),$asunto,$mensaje,$mailer);
}
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
}
public function enviaradjunto(Ordenes $ordene, EntityManagerInterface $entityManager,Request $request,MailerInterface $mailer)
{
$pdfOptions = new Options();
$pdfOptions->setIsRemoteEnabled(true);
$pdfOptions->set('defaultFont', 'Arial');
$servicios=null;
try
{
if ($ordene->getTipo()=="APS")
{
$servicios = $entityManager->getRepository(Ordenservicios::class)
->findBy(array('ordenes'=>$ordene));
}
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
$session = $request->getSession();
$data="Afiliado: ".$ordene->getClientes()."\nTeléfono: ".$ordene->getClientes()->getCodarea1()."-".$ordene->getClientes()->getNumero1()."\nN° Orden: ".$ordene->getId()."\nUnidad: ".$ordene->getUnidades()."\nTipo Servicio: ".$ordene->getTiposervicios()."\nN° Contrato: ".$ordene->getContratos()->getId()."\nMonto Autorizado: ".number_format($ordene->getMontoautorizado(), 2, ',', '.')." Bs.";
$qrCode = new QrCode($data);
header('Content-Type: '.$qrCode->getContentType());
$salida=base64_encode($qrCode->writeString());
$html= $this->renderView('ordenes/impresa.html.twig', [
'ordene' => $ordene,
'serviciosorden' =>$servicios,
'qr'=>$salida,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
// $dompdf->getOptions()->setChroot($this->projectDir . DIRECTORY_SEPARATOR . 'www');
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
$dompdf->setPaper('A4', 'portrait');
// Renderiza el HTML como PDF
$dompdf->render();
// Store PDF Binary Data
$output = $dompdf->output();
// $publicDirectory =$request->getHttpHost();
$publicDirectory = $this->getParameter('archivos_directory_ordenes');
// e.g /var/www/project/public/mypdf.pdf
$pdfFilepath = $publicDirectory . '/orden_'.$ordene->getId().'.pdf';
file_put_contents($pdfFilepath, $output);
$emailconsultores=trim($this->getParameter('app.emailconsultores'));
$emailrrhh=trim($this->getParameter('app.emailrrhh'));
$emailoperaciones1=trim($this->getParameter('app.emailoperaciones1'));
$emailemisor=trim($this->getParameter('app.emailemisor'));
$asunto="CSL: Orden N° ".$ordene->getId()." asociada al Afiliado ".$ordene->getClientes().", N° de Identificación ".$ordene->getClientes()->getTipoId()."-".$ordene->getClientes()->getNumId().".";
$mensaje="Se envió la orden N° ".$ordene->getId()." asociada al Afiliado ".$ordene->getClientes().", N° de Identificación ".$ordene->getClientes()->getTipoId()."-".$ordene->getClientes()->getNumId().".";
$mensaje.="<br/><br/> Esta es una cuenta de correo no monitoreada, por favor no responder.";
$arrayemails=array($emailconsultores,$emailrrhh,$emailoperaciones1);
if (count($arrayemails)>0)
{
if($ordene->getUnidades()->getId()!=20 and $ordene->getUnidades()->getId()!=23)
EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemails,$asunto,$pdfFilepath,$mensaje,$mailer);
else
{
// Search value and delete
if(($key = array_search($emailoperaciones1, $arrayemails)) !== false) {
unset($arrayemails[$key]);
}
EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemails,$asunto,$pdfFilepath,$mensaje,$mailer);
}
}
if (trim($ordene->getUnidades()->getEmail())!="")
{
$arrayemailsunidad=array(trim($ordene->getUnidades()->getEmail()));
EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemailsunidad,$asunto,$pdfFilepath,$mensaje,$mailer);
}
$session->getFlashBag()->add('success','Se envió la orden de forma correcta !');
}
catch (\Exception $e)
{
$session->getFlashBag()->add('warning','Se generó un error al enviar la Orden por email. !'.$e->getMessage());
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordene->getId())));
}
public function guardargastos(Request $request, EntityManagerInterface $entityManager): Response
{
$session=$request->getSession();
if($request->request->get("ordenid")!="" && $request->request->get("presupuesto")!="" && $request->request->get("gastosc")!="" )
{
$ordenid=$request->request->get("ordenid");
$monto=$request->request->get("gastosc");
$montonocubierto=$request->request->get("gastoscnc");
$montopresupuesto=$request->request->get("presupuesto");
$nropresupuesto=$request->request->get("nropresupuesto");
$orden = $entityManager->getRepository(Ordenes::class)->find($ordenid);
if($orden->getTasacambio()==0)
{
$tipotasascambio = $entityManager->getRepository(Tipotasascambio::class)->find(1);
$monedas = $entityManager->getRepository(Monedas::class)->find(2);
$fechaorden=new \DateTime($orden->getFecharegistro()->format('Y-m-d'));
$existe = $entityManager->getRepository(Tasascambio::class)
->findOneBy(array('fechatasa'=>$fechaorden,'tipotasascambio'=>$tipotasascambio,'monedas'=>$monedas));
if(!$existe)
{
$session->getFlashBag()->add('warning','No existe la tasa de cambio para la fecha de Registro de la Orden '.$fechaorden->format('d/m/Y').'.! ');
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
}
$orden->setTasacambio($existe->getMonto());
}
$orden->setMontopresupuesto($montopresupuesto);
$orden->setMonto($monto);
$orden->setMontonocubierto($montonocubierto);
$orden->setNroprepupuesto($nropresupuesto);
$entityManager->persist($orden);
$entityManager->flush();
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
}
public function ajustarorden(Request $request, EntityManagerInterface $entityManager): Response
{
$session=$request->getSession();
$usuarioconectado=$session->get('userid');
if($request->query->get("ordenid")!="" && $request->query->get("montodisponible")!="" && $request->query->get("idcertificado")!="")
{
$ordenid=$request->query->get("ordenid");
$idcertificado=$request->query->get("idcertificado");
$montodisponible=$request->query->get("montodisponible");
$orden = $entityManager->getRepository(Ordenes::class)->find($ordenid);
$montoautorizado=$orden->getMontoautorizado();
$montocubierto=$orden->getMonto();
$montoajuste=$montocubierto-$montoautorizado;
echo $montoajuste."Monto Ajuste $<br>";
echo $montodisponible." Disponible $ <br>";
//Convierto Monto disponible de dolares a Bolivares
if ($montodisponible>0)
{
$montodisponible=$montodisponible*$orden->getTasacambio();
echo $montodisponible." Disponible Bs <br>";
if ($montodisponible>$montoajuste)
$montoajuste=$montoajuste;
else
$montoajuste=$montodisponible;
$montoparaagotar=$montoautorizado+$montoajuste;
/***************/
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$certificado = $entityManager->getRepository(Certificados::class)->find($idcertificado);
$ordenagotamiento=new Ordenesagotamiento();
$ordenagotamiento->setOrdenes($orden);
$ordenagotamiento->setMonto($montoajuste);
$ordenagotamiento->setUsuarios($usuario);
$ordenagotamiento->setTiposervicios($orden->getTiposervicios());
$ordenagotamiento->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
$ordenagotamiento->setCertificados($certificado);
$entityManager->persist($ordenagotamiento);
$entityManager->flush();
/***************/
$orden->setMontoautorizado($montoparaagotar);
$entityManager->persist($orden);
$entityManager->flush();
}
else
{
$session->getFlashBag()->add(
'warning',
'No tiene monto disponible en el Servicio !'
);
}
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
}
public function borrarajusterorden(Request $request, EntityManagerInterface $entityManager): Response
{
$session=$request->getSession();
if($request->query->get("ordenid")!="" && $request->query->get("idcertificado")!="" && $request->query->get("idconsumo")!="")
{
$ordenid=$request->query->get("ordenid");
$idcertificado=$request->query->get("idcertificado");
$idconsumo=$request->query->get("idconsumo");
$montodisponible=$request->query->get("montodisponible");
$orden = $entityManager->getRepository(Ordenes::class)->find($ordenid);
$consumo = $entityManager->getRepository(Ordenesagotamiento::class)->find($idconsumo);
$montoconsumido=$consumo->getMonto();
$ordenservicio=null;
if ($consumo->getOrdenservicios())
{
$ordenservicio = $entityManager->getRepository(Ordenservicios::class)
->find($consumo->getOrdenservicios()->getId());
}
// Borro de Ordenesagotamiento
$entityManager->remove($consumo);
$entityManager->flush();
// Borro de Ordenservicios si existe
if ($ordenservicio)
{
$entityManager->remove($ordenservicio);
$entityManager->flush();
}
$montoconsumido=$orden->getMontoautorizado()-$montoconsumido;
$orden->setMontoautorizado($montoconsumido);
$entityManager->persist($orden);
$entityManager->flush();
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
}
public function create(Request $request, EntityManagerInterface $entityManager,MailerInterface $mailer)
{
$entity = new Ordenes();
$session = $request->getSession();
$entity->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
$entity->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
$form = $this->createForm(OrdenesType::class, $entity);
$form->handleRequest($request);
$tipoid=null;
$numid=null;
$contratos=null;
if ($request->request->get("clienteid")!="" and $request->request->get("radiocontrato")!="" and $request->request->get("radioservicio")!="" and $request->request->get("certificado")!="" and $request->request->get("proveedor")!="" and $request->request->get("motivo")!="" and $request->request->get("unidad")!="" and $request->request->get("referido")!="")
{
$ncertificado=$request->request->get("certificado");
$entity->setFechaservicio(new \DateTime(date("Y-m-d H:i:s")));
$usuarioconectado = $session->get('userid');
$proveedorid = $request->request->get("proveedor");
$motivoid = $request->request->get("motivo");
$unidadid = $request->request->get("unidad");
$referidoid = $request->request->get("referido");
$tipo = $request->request->get("tipo");
$npresupuesto = $request->request->get("npresupuesto");
$montopresupuesto = $request->request->get("montopresupuesto");
$proveedor = $entityManager->getRepository(Proveedores::class)->find($proveedorid);
$entity->setProveedores($proveedor);
$usuario = $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
$entity->setUsuarios($usuario);
$entity->setAnalista($usuario);
$estatus = $entityManager->getRepository(Estatusordenes::class)->find(1);
$entity->setEstatusordenes($estatus);
$entity->setTipo($tipo);
$motivo= $entityManager->getRepository(Motivosconsulta::class)->find($motivoid);
$entity->setMotivoscosulta($motivo);
$unidad= $entityManager->getRepository(Unidades::class)->find($unidadid);
$entity->setUnidades($unidad);
$referido= $entityManager->getRepository(\App\Entity\Referidos::class)->find($referidoid);
$entity->setReferidos($referido);
$moneda = $entityManager->getRepository(Monedas::class)->find(1);
$entity->setMonedas($moneda);
$contrato = $entityManager->getRepository(Contratos::class)->find($request->request->get("radiocontrato"));
$entity->setContratos($contrato);
$tiposervicios = $entityManager->getRepository(Tiposervicios::class)->find($request->request->get("radioservicio"));
$entity->setTiposervicios($tiposervicios);
$clientes = $entityManager->getRepository(Clientes::class)->find($request->request->get("clienteid"));
$entity->setClientes($clientes);
$afiliado = $entityManager->getRepository(Afiliados::class)
->findOneBy(array('clientes'=>$clientes,'contratos'=>$contrato));
if ($afiliado->getFechaingreso())
{
$fechaactual=new \DateTime(date("Y-m-d"));
$dias=\date_diff($fechaactual,$afiliado->getFechaingreso());
if($dias->days<=90)
{
$entity->setIndplazosespera("1");
$entity->setDiasplazosespera($dias->days);
}
}
$entity->setClientes($clientes);
$certificado = $entityManager->getRepository(Certificados::class)
->findOneBy(array('contratos'=>$contrato,'ncertificado'=>$ncertificado));
$entity->setCertificados($certificado);
$entity->setMontopresupuesto($montopresupuesto);
$entity->setNroprepupuesto($npresupuesto);
$entity->setTasacambio(0);
$entity->setMontonocubierto(0);
$entity->setMontoautorizado(0);
$entity->setMonto(0);
//// $validacion = $entityManager->getRepository(Riesgoscubiertos::class)
//// ->findOneBy(array('contratos'=>$contrato,'clientes'=>$clientes,'tiposervicios'=>$tiposervicios,'ncertificado'=>$ncertificado));
// $cantidadmaxserviciospermitidos=$validacion->getCantidadmaxservicios();
$fechaservicio=strtotime($entity->getFecharegistro()->format('d-m-Y'));
$fechadesde=strtotime($certificado->getFechadesde()->format('d-m-Y'));
$fechahasta=strtotime($certificado->getFechahasta()->format('d-m-Y'));
if ($fechaservicio < $fechadesde or $fechaservicio > $fechahasta)
{
$session->getFlashBag()->add('warning','La fecha del servicio debe estar dentro de la vigencia del Certificado !. Vigencia : '.$certificado->getFechadesde()->format('d-m-Y').' / '.$certificado->getFechahasta()->format('d-m-Y').' FS:'.$entity->getFechaservicio()->format('d-m-Y'));
return $this->redirect($this->generateUrl('ordenes_new'));
}
//
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
if ($clientes->getEmail()!="")
{
$asunto="Orden de servicio registrada !";
$mensaje="Se registró a su nombre la orden de servicio N°:".$entity->getId().", si usted no solicitó esta atención por favor comuniquese con nuestros operadores.";
//EnvioEmail::EnviarEmail($clientes->getEmail(),$asunto,$mensaje,$mailer);
}
return $this->redirect($this->generateUrl('ordenes_show', array('id' => $entity->getId())));
}
else
{
$session = $request->getSession();
$session->getFlashBag()->add('warning','Debe seleccionar un contrato y un servicio!');
return $this->redirect($this->generateUrl('ordenes_new'));
}
return $this->render('ordenes/new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
'clienteid'=>null,
'numid'=>$numid,
'tipoid'=>$tipoid,
'contratos'=>$contratos,
));
}
/**
* @Route("/{id}", name="ordenes_show", methods={"GET"})
*/
public function show(Ordenes $ordene, EntityManagerInterface $entityManager,Request $request): Response
{
if ($ordene->getTipo()=="APS")
return $this->redirect($this->generateUrl('ordenes_showaps', array('id' => $ordene->getId())));
$historiacargada=0;
$trazaslist = $entityManager->getRepository(Trazas::class)
->findBy(array('ordenes'=>$ordene),array('fecharegistro'=>'DESC'));
$facturaslist = $entityManager->getRepository(Facturasordenes::class)
->findBy(array('ordenes'=>$ordene));
$causasrechazos = $entityManager->getRepository(\App\Entity\Causasrechazos::class)
->findBy(array('estatus'=>'1'));
$consumos=null;
// $usuariosasignar = $entityManager->getRepository(Usuarios::class)
// ->findBy(array('estatus'=>1,));
if ($ordene->getContratos()->getVip()=='1')
{
$query = $entityManager->createQuery(
"select U
FROM App\Entity\Usuarios U
inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
where U.estatus=1
and U.tipousuarios not in (6)
and U.proveedores =?2
and (U.atiendevip=?1)
order by U.nombres asc");
$query->setParameter(1, $ordene->getContratos()->getVip());
$query->setParameter(2, $ordene->getProveedores());
}
else
{
$query = $entityManager->createQuery(
"select U
FROM App\Entity\Usuarios U
inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
where U.estatus=1
and U.tipousuarios not in (6)
and (U.tipousuarios in (4) or (U.tipousuarios in (1,7) and U.proveedores =?1))
order by U.nombres asc");
$query->setParameter(1, $ordene->getProveedores());
}
$usuariosasignar=$query->execute();
$traza= new Trazas();
$form = $this->createForm(TrazasType::class, $traza);
$facturaorden= new Facturasordenes();
$formfacturaorden = $this->createForm(FacturasordenesType::class, $facturaorden);
if ($facturaslist)
{
$formfacturaorden = $this->createForm(FacturasordenesType::class, $facturaslist[0]);
}
$form->handleRequest($request);
$cliente=$ordene->getClientes();
$serviciosdisponibles=null;
if ($ordene->getMonto()>0)
{
// $serviciosdisponibles= $entityManager->getRepository(Riesgoscubiertos::class)
// ->findBy(array('clientes'=>$cliente,'contratos'=>$ordene->getContratos(),
// 'tiposervicios'=>$ordene->getTiposervicios()));
$query = $entityManager->createQuery(
"select R,(select sum(OA.monto/O.tasacambio)
FROM App\Entity\Ordenes O
inner join App\Entity\Ordenesagotamiento OA WITH OA.ordenes = O.id
inner join App\Entity\Certificados C WITH C.id = OA.certificados
where O.clientes=?1
and O.contratos = ?2
and O.tiposervicios =?3
and C.ncertificado =R.ncertificado
and O.estatusordenes in (1,2,3)
) consumido,
(select (sum(OA2.monto)/O2.tasacambio)
FROM App\Entity\Ordenes O2
inner join App\Entity\Ordenesagotamiento OA2 WITH OA2.ordenes = O2.id
inner join App\Entity\Certificados C2 WITH C2.id = OA2.certificados
where O2.clientes=?1
and O2.contratos = ?2
and O2.tiposervicios =?3
and O2.id =?4
and C2.ncertificado =R.ncertificado
and O2.estatusordenes in (1,2,3)
) consumidoorden,CE.id certificadoid
FROM App\Entity\Riesgoscubiertos R
inner join App\Entity\Contratos CO WITH CO.id = R.contratos
inner join App\Entity\Certificados CE WITH CE.ncertificado = R.ncertificado and CE.contratos = R.contratos
where R.clientes=?1
and R.contratos = ?2
and CO.estatuscontratos = 2
and CE.fechaanulacion is null
and CE.estatus = 1
and R.tiposervicios =?3
order by R.cantidadmaxservicios asc");
$query->setParameter(1, $cliente);
$query->setParameter(2, $ordene->getContratos());
$query->setParameter(3, $ordene->getTiposervicios());
$query->setParameter(4, $ordene->getId());
$serviciosdisponibles=$query->execute();
$consumos = $entityManager->getRepository(Ordenesagotamiento::class)
->findBy(array('ordenes'=>$ordene));
}
return $this->render('ordenes/show.html.twig', [
'ordene' => $ordene,
'trazaslist' => $trazaslist,
'facturaslist' =>$facturaslist,
'form' => $form->createView(),
'formfacturaorden' =>$formfacturaorden->createView(),
'usuariosasignar' => $usuariosasignar,
'serviciosdisponibles' =>$serviciosdisponibles,
'consumos' =>$consumos,
'causasrechazos' =>$causasrechazos,
]);
}
public function showaps(Ordenes $ordene, EntityManagerInterface $entityManager,Request $request): Response
{
$historiacargada=0;
$trazaslist = $entityManager->getRepository(Trazas::class)
->findBy(array('ordenes'=>$ordene),array('fecharegistro'=>'DESC'));
$facturaslist = $entityManager->getRepository(Facturasordenes::class)
->findBy(array('ordenes'=>$ordene));
$causasrechazos = $entityManager->getRepository(\App\Entity\Causasrechazos::class)
->findBy(array('estatus'=>'1'));
$consumos=null;
$serviciosorden=null;
// $usuariosasignar = $entityManager->getRepository(Usuarios::class)
// ->findBy(array('estatus'=>1,));
if ($ordene->getContratos()->getVip()=='1')
{
$query = $entityManager->createQuery(
"select U
FROM App\Entity\Usuarios U
inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
where U.estatus=1
and U.tipousuarios not in (6)
and U.proveedores =?2
and (U.atiendevip=?1)
order by U.nombres asc");
$query->setParameter(1, $ordene->getContratos()->getVip());
$query->setParameter(2, $ordene->getProveedores());
}
else
{
$query = $entityManager->createQuery(
"select U
FROM App\Entity\Usuarios U
inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
where U.estatus=1
and U.tipousuarios not in (6)
and (U.tipousuarios in (4) or (U.tipousuarios in (1,7) and U.proveedores =?1))
order by U.nombres asc");
$query->setParameter(1, $ordene->getProveedores());
}
$usuariosasignar=$query->execute();
$traza= new Trazas();
$form = $this->createForm(TrazasType::class, $traza);
$facturaorden= new Facturasordenes();
$formfacturaorden = $this->createForm(FacturasordenesType::class, $facturaorden);
if ($facturaslist)
{
$formfacturaorden = $this->createForm(FacturasordenesType::class, $facturaslist[0]);
}
$form->handleRequest($request);
$cliente=$ordene->getClientes();
$serviciosdisponibles=null;
$query = $entityManager->createQuery(
"select R,(select sum(OA.monto/O.tasacambio)
FROM App\Entity\Ordenes O
inner join App\Entity\Ordenesagotamiento OA WITH OA.ordenes = O.id
inner join App\Entity\Certificados C WITH C.id = OA.certificados
where O.clientes=?1
and O.contratos = ?2
and O.tiposervicios =?3
and C.ncertificado =R.ncertificado
and O.estatusordenes in (1,2,3)
) consumido,
(select (sum(OA2.monto)/O2.tasacambio)
FROM App\Entity\Ordenes O2
inner join App\Entity\Ordenesagotamiento OA2 WITH OA2.ordenes = O2.id
inner join App\Entity\Certificados C2 WITH C2.id = OA2.certificados
where O2.clientes=?1
and O2.contratos = ?2
and O2.tiposervicios =?3
and O2.id =?4
and C2.ncertificado =R.ncertificado
and O2.estatusordenes in (1,2,3)
) consumidoorden,CE.id certificadoid
FROM App\Entity\Riesgoscubiertos R
inner join App\Entity\Contratos CO WITH CO.id = R.contratos
inner join App\Entity\Certificados CE WITH CE.ncertificado = R.ncertificado and CE.contratos = R.contratos
where R.clientes=?1
and R.contratos = ?2
and CO.estatuscontratos = 2
and CE.fechaanulacion is null
and CE.estatus = 1
and R.tiposervicios =?3
order by R.cantidadmaxservicios asc");
$query->setParameter(1, $cliente);
$query->setParameter(2, $ordene->getContratos());
$query->setParameter(3, $ordene->getTiposervicios());
$query->setParameter(4, $ordene->getId());
$serviciosdisponibles=$query->execute();
$consumos = $entityManager->getRepository(Ordenesagotamiento::class)
->findBy(array('ordenes'=>$ordene));
$serviciosorden = $entityManager->getRepository(Ordenservicios::class)
->findBy(array('ordenes'=>$ordene));
return $this->render('ordenes/showaps.html.twig', [
'ordene' => $ordene,
'trazaslist' => $trazaslist,
'facturaslist' =>$facturaslist,
'form' => $form->createView(),
'formfacturaorden' =>$formfacturaorden->createView(),
'usuariosasignar' => $usuariosasignar,
'serviciosdisponibles' =>$serviciosdisponibles,
'consumos' =>$consumos,
'serviciosorden' =>$serviciosorden,
'causasrechazos' =>$causasrechazos,
]);
}
public function imprimir(Ordenes $ordene, EntityManagerInterface $entityManager,Request $request): Response
{
$pdfOptions = new Options();
$servicios = null;
$pdfOptions->setIsRemoteEnabled(true);
echo $request->getHost();
$pdfOptions->set('defaultFont', 'Arial');
if ($ordene->getTipo()=="APS")
{
$servicios = $entityManager->getRepository(Ordenservicios::class)
->findBy(array('ordenes'=>$ordene));
}
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
$session = $request->getSession();
$data="Afiliado: ".$ordene->getClientes()."\nTeléfono: ".$ordene->getClientes()->getCodarea1()."-".$ordene->getClientes()->getNumero1()."\nN° Orden: ".$ordene->getId()."\nUnidad: ".$ordene->getUnidades()."\nTipo Servicio: ".$ordene->getTiposervicios()."\nN° Contrato: ".$ordene->getContratos()->getId()."\nMonto Autorizado: ".number_format($ordene->getMontoautorizado(), 2, ',', '.')." Bs.";
$qrCode = new QrCode($data);
header('Content-Type: '.$qrCode->getContentType());
$salida=base64_encode($qrCode->writeString());
$html= $this->renderView('ordenes/impresa.html.twig', [
'ordene' => $ordene,
'serviciosorden' =>$servicios,
'qr'=>$salida,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
// $dompdf->getOptions()->setChroot($this->projectDir . DIRECTORY_SEPARATOR . 'www');
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
$dompdf->setPaper('A4', 'portrait');
// Renderiza el HTML como PDF
$dompdf->render();
// Envíe el PDF generado al navegador (descarga forzada)
$dompdf->stream("orden_".$ordene->getId().".pdf", [
"Attachment" => false
]);
}
/**
* @Route("/{id}/edit", name="ordenes_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Ordenes $ordene, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(OrdenesType::class, $ordene);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute('ordenes_edit',array('id'=>$ordene->getId()));
}
return $this->renderForm('ordenes/edit.html.twig', [
'ordene' => $ordene,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="ordenes_delete", methods={"POST"})
*/
public function delete(Request $request, Ordenes $ordene, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete'.$ordene->getId(), $request->request->get('_token'))) {
$entityManager->remove($ordene);
$entityManager->flush();
}
return $this->redirectToRoute('ordenes_index', [], Response::HTTP_SEE_OTHER);
}
}