src/Controller/OrdenesController.php line 107

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Ordenes;
  4. use App\Entity\Ordenservicios;
  5. use App\Entity\Unidades;
  6. use App\Entity\Afiliados;
  7. use App\Form\FacturasordenesType;
  8. use App\Entity\Facturasordenes;
  9. use App\Entity\Ordenesagotamiento;
  10. use App\Entity\Tasascambio;
  11. use App\Entity\Motivosconsulta;
  12. use App\Entity\Tipotasascambio;
  13. use App\Entity\Monedas;
  14. use App\Entity\Antecedentes;
  15. use App\Model\EnvioEmail;
  16. use App\Entity\Proveedores;
  17. use App\Entity\Estatusordenes;
  18. use App\Form\TrazasType;
  19. use App\Entity\Trazas;
  20. use App\Form\RecipesType;
  21. use App\Entity\Recipes;
  22. use App\Entity\Tiposervicios;
  23. use App\Entity\Certificados;
  24. use App\Entity\Usuarios;
  25. use App\Entity\Clientes;
  26. use App\Entity\Contratos;
  27. use App\Entity\Riesgoscubiertos;
  28. use App\Form\OrdenesType;
  29. use Doctrine\ORM\EntityManagerInterface;
  30. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  31. use Symfony\Component\HttpFoundation\Request;
  32. use Symfony\Component\HttpFoundation\Response;
  33. use Symfony\Component\Routing\Annotation\Route;
  34. use Symfony\Component\Form\FormBuilderInterface;
  35. use Symfony\Component\OptionsResolver\OptionsResolver;
  36. use Doctrine\ORM\Tools\Pagination\Paginator;
  37. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  38. // Incluir namespaces requeridos de PhpSpreadsheet
  39. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  40. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  41. use Dompdf\Dompdf;
  42. use Dompdf\Options;
  43. use Endroid\QrCode\Color\Color;
  44. use Endroid\QrCode\Encoding\Encoding;
  45. use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
  46. use Endroid\QrCode\QrCode;
  47. use Endroid\QrCode\Label\Label;
  48. use Endroid\QrCode\Logo\Logo;
  49. use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
  50. use Endroid\QrCode\Writer\PngWriter;
  51. use Symfony\Component\Mailer\MailerInterface;
  52. use Symfony\Component\Mime\Email;
  53. /**
  54.  * @Route("/ordenes")
  55.  */
  56. class OrdenesController extends AbstractController
  57. {
  58.     /**
  59.      * @Route("/", name="ordenes_index", methods={"GET"})
  60.      */
  61.     public function index($currentPage 1,EntityManagerInterface $entityManager,Request $request): Response
  62.     {
  63. //        var_dump($request->getSchemeAndHttpHost());
  64.   //      var_dump($request->getScheme());
  65.     //    var_dump($request->getHttpHost());
  66.         $session=$request->getSession();
  67.         $arreglo = array();
  68.         $userid="";
  69.         $proveedor=null;
  70.         $ncontrato=trim($request->request->get('ncontrato'));
  71.         $norden=trim($request->request->get('norden'));
  72.         $tipoid=trim($request->request->get('tipoid'));
  73.         $numid=trim($request->request->get('numid'));
  74.         $limit 20;
  75.         $roles $this->container->get('security.token_storage')->getToken()->getRoleNames();
  76.     if (in_array("ROLE_PROVEEDOR"$roles))
  77.     {
  78.             $userid=$session->get('userid');
  79.             $usuario $entityManager->getRepository(Usuarios::class)->find($userid);
  80.             $proveedor=$usuario->getProveedores();
  81.     }
  82.      $ordenes $entityManager->getRepository(Ordenes::class)
  83.              ->getAllOrdens($currentPage$limit,$norden,$ncontrato,$proveedor,$tipoid,$numid);
  84.      $ordenespaginada $ordenes['paginator'];
  85.      $ordenesQueryCompleta =  $ordenes['query'];
  86.      $querybaseordenes=$ordenes['query']->getResult();
  87.      $session->set('querybaseordenes',$ordenes['query']->getDql());
  88.     if ($norden!="")
  89.     {
  90.         $arreglo array_merge($arreglo, array('norden'=>$norden));
  91.     }
  92.      if ($ncontrato!="")
  93.     {
  94.         $arreglo array_merge($arreglo, array('ncontrato'=>$ncontrato));
  95.     }
  96.       if ($tipoid!="")
  97.     {
  98.         $arreglo array_merge($arreglo, array('tipoid'=>$tipoid));
  99.     }
  100.      if ($numid!="")
  101.     {
  102.         $arreglo array_merge($arreglo, array('numid'=>$numid));
  103.     }
  104.     if (count($arreglo)>0
  105.         $session->set('parametrosordenes',$arreglo);
  106.     else
  107.         $session->set('parametrosordenes',null);
  108.  
  109.      $maxPages ceil($ordenes['paginator']->count() / $limit);
  110.      return $this->render('ordenes/index.html.twig', [
  111.                 'ordenes' => $ordenespaginada,
  112.                 'maxPages'=>$maxPages,
  113.                 'thisPage' => $currentPage,
  114.                 'all_items' => $ordenesQueryCompleta,
  115.                 'ncontrato'=>$ncontrato,
  116.          'tipoid'=>$tipoid,
  117.          'numid'=>$numid,
  118.          'norden'=>$norden,
  119.             ]);
  120.     }
  121.     public function generarexcel(Request $request,EntityManagerInterface $entityManager)
  122.     {
  123.         $session=$request->getSession();
  124.         $spreadsheet = new Spreadsheet();
  125.         
  126.         /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
  127.         $sheet $spreadsheet->getActiveSheet();
  128.         $sheet->setCellValue('A1''N° Orden');
  129.         $sheet->setCellValue('B1''N° Proveedor');
  130.         $sheet->setCellValue('C1''RIF Proveedor');
  131.         $sheet->setCellValue('D1''Proveedor');
  132.         $sheet->setCellValue('E1''N° Contrato');
  133.         $sheet->setCellValue('F1''Cédula Afiliado');
  134.         $sheet->setCellValue('G1''Afiliado');
  135.         $sheet->setCellValue('H1''Fecha Nacimiento');
  136.         $sheet->setCellValue('I1''Sexo');
  137.         $sheet->setCellValue('J1''Fecha de Inclusión');
  138.         $sheet->setCellValue('K1''Fecha de Exclusión');
  139.         $sheet->setCellValue('L1''Fecha Servicio');
  140.         $sheet->setCellValue('M1''Tipo Servicio');
  141.         $sheet->setCellValue('N1''Unidad');
  142.         $sheet->setCellValue('O1''Motivo de consulta');
  143.         $sheet->setCellValue('P1''Diagnóstico');
  144.         $sheet->setCellValue('Q1''Referido');
  145.         $sheet->setCellValue('R1''N° Presupuesto');
  146.         $sheet->setCellValue('S1''Monto Presupuesto');
  147.         $sheet->setCellValue('T1''Monto Autorizado Bs');
  148.         $sheet->setCellValue('U1''Tasa Cambio');
  149.         $sheet->setCellValue('V1''Monto Autorizado $');
  150.         $sheet->setCellValue('W1''Estatus Orden');
  151.         $sheet->setCellValue('X1''Fecha Estatus Orden');
  152.         $sheet->setCellValue('Y1''N° Factura');
  153.         $sheet->setCellValue('Z1''N° Control');
  154.         $sheet->setCellValue('AA1''Fecha Emisión');
  155.         $sheet->setCellValue('AB1''Fecha Recepción Factura');
  156.         $sheet->setCellValue('AC1''Monto Factura $');
  157.         $sheet->setCellValue('AD1''IND Plazos Espera');
  158.         $sheet->setCellValue('AE1''Dias de Plazos Espera');
  159.         $sheet->setCellValue('AF1''Cupo Servicio');
  160.         $sheet->setCellValue('AG1''N° Certificado');
  161.         $sheet->setCellValue('AH1''Usuario');
  162.         $sheet->setCellValue('AI1''Tipo Vigencia Contrato');
  163.         $sheet->setCellValue('AJ1''Causa de Rechazo');
  164.     
  165.         $spreadsheet->getActiveSheet()->getStyle('A1:AJ1')->getFont()->setBold(true)->setSize(12);
  166.          $spreadsheet->setActiveSheetIndex(0)
  167.        ->getStyle('A1')
  168.        ->getFill()
  169.        ->getStartColor()
  170.        ->setRGB('808080');
  171.         $spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
  172.         $spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
  173.         $spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
  174.         $spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
  175.         $spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
  176.         $spreadsheet->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
  177.         $spreadsheet->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
  178.         $spreadsheet->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
  179.         $spreadsheet->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
  180.         $spreadsheet->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
  181.         $spreadsheet->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
  182.         $spreadsheet->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
  183.         $spreadsheet->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
  184.         $spreadsheet->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
  185.         $spreadsheet->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
  186.         $spreadsheet->getActiveSheet()->getColumnDimension('P')->setAutoSize(true);
  187.         $spreadsheet->getActiveSheet()->getColumnDimension('Q')->setAutoSize(true);
  188.         $spreadsheet->getActiveSheet()->getColumnDimension('R')->setAutoSize(true);
  189.         $spreadsheet->getActiveSheet()->getColumnDimension('S')->setAutoSize(true);
  190.         $spreadsheet->getActiveSheet()->getColumnDimension('T')->setAutoSize(true);
  191.         $spreadsheet->getActiveSheet()->getColumnDimension('U')->setAutoSize(true);
  192.         $spreadsheet->getActiveSheet()->getColumnDimension('V')->setAutoSize(true);
  193.         $spreadsheet->getActiveSheet()->getColumnDimension('W')->setAutoSize(true);
  194.         $spreadsheet->getActiveSheet()->getColumnDimension('X')->setAutoSize(true);
  195.         $spreadsheet->getActiveSheet()->getColumnDimension('Y')->setAutoSize(true);
  196.         $spreadsheet->getActiveSheet()->getColumnDimension('Z')->setAutoSize(true);
  197.         $spreadsheet->getActiveSheet()->getColumnDimension('AA')->setAutoSize(true);
  198.         $spreadsheet->getActiveSheet()->getColumnDimension('AB')->setAutoSize(true);
  199.         $spreadsheet->getActiveSheet()->getColumnDimension('AC')->setAutoSize(true);
  200.         $spreadsheet->getActiveSheet()->getColumnDimension('AD')->setAutoSize(true);
  201.         $spreadsheet->getActiveSheet()->getColumnDimension('AE')->setAutoSize(true);
  202.         $spreadsheet->getActiveSheet()->getColumnDimension('AF')->setAutoSize(true);
  203.         $spreadsheet->getActiveSheet()->getColumnDimension('AG')->setAutoSize(true);
  204.         $spreadsheet->getActiveSheet()->getColumnDimension('AH')->setAutoSize(true);
  205.         $spreadsheet->getActiveSheet()->getColumnDimension('AI')->setAutoSize(true);
  206.         $spreadsheet->getActiveSheet()->getColumnDimension('AJ')->setAutoSize(true);
  207.         $sheet->setTitle("Ordenes de Servicio");
  208.         $queryordenes=$session->get('querybaseordenes');
  209.      
  210.         if($session->get('parametrosordenes')!=null)
  211.         {
  212.         $query3 $entityManager->createQuery($queryordenes)
  213.         ->setParameters($session->get('parametrosordenes'));
  214.         }
  215.         else
  216.         {
  217.         $query3 $entityManager->createQuery($queryordenes);
  218.         }  
  219.         $afiliados $query3->getResult();
  220.         $index=2;
  221.         foreach ($afiliados as $afiliado)
  222.         {
  223.            $sheet->setCellValue('A'.$index$afiliado->getId());
  224.            $sheet->setCellValue('B'.$index$afiliado->getProveedores()->getId());
  225.            $sheet->setCellValue('C'.$index$afiliado->getProveedores()->getTipoid()."-".$afiliado->getProveedores()->getNumid());
  226.            $sheet->setCellValue('D'.$index$afiliado->getProveedores());
  227.            $sheet->setCellValue('E'.$index$afiliado->getContratos());
  228.            $sheet->setCellValue('F'.$index$afiliado->getClientes()->getTipoid()."-".$afiliado->getClientes()->getNumid());
  229.            $sheet->setCellValue('G'.$index$afiliado->getClientes());
  230.            $sheet->setCellValue('H'.$index$afiliado->getClientes()->getFechanacimiento() ? $afiliado->getClientes()->getFechanacimiento()->format('d-m-Y'): "");
  231.            $sheet->setCellValue('I'.$index$afiliado->getClientes()->getSexo());
  232.            $afiliadotabla $entityManager
  233.             ->getRepository(Afiliados::class)
  234.                    ->findOneBy(array('contratos' => $afiliado->getContratos(),'clientes'=>$afiliado->getClientes()));
  235.            $sheet->setCellValue('J'.$index$afiliadotabla->getFechaingreso() ? $afiliadotabla->getFechaingreso()->format('d-m-Y'): "");
  236.            $sheet->setCellValue('K'.$index$afiliadotabla->getFechaexclusion() ? $afiliadotabla->getFechaexclusion()->format('d-m-Y'): "");
  237.            $sheet->setCellValue('L'.$index$afiliado->getFechaservicio()->format('d-m-Y'));
  238.            $sheet->setCellValue('M'.$index$afiliado->getTipo());
  239.            $sheet->setCellValue('N'.$index$afiliado->getUnidades());
  240.            $sheet->setCellValue('O'.$index$afiliado->getMotivoscosulta());
  241.            $sheet->setCellValue('P'.$index$afiliado->getPatologias());
  242.            $sheet->setCellValue('Q'.$index$afiliado->getReferidos());
  243.            $sheet->setCellValue('R'.$index$afiliado->getNroprepupuesto());
  244.            $sheet->setCellValue('S'.$index$afiliado->getMontopresupuesto());
  245.            $sheet->setCellValue('T'.$index$afiliado->getMontoautorizado());
  246.            $sheet->setCellValue('U'.$index$afiliado->getTasacambio());
  247.            $montodivisas= ($afiliado->getTasacambio()!=0) ? ($afiliado->getMontoautorizado()/$afiliado->getTasacambio()) : 0;
  248.            $sheet->setCellValue('V'.$index$montodivisas);
  249.            $sheet->setCellValue('W'.$index$afiliado->getEstatusordenes());
  250.            $sheet->setCellValue('X'.$index$afiliado->getFechaestatus() ? $afiliado->getFechaestatus()->format('d-m-Y') : "");
  251.            $factura $entityManager->getRepository(Facturasordenes::class)
  252.                    ->findOneBy(array('ordenes'=>$afiliado->getId()));
  253.            if ($factura)
  254.            {
  255.            $sheet->setCellValue('Y'.$index$factura->getNrofactura());
  256.            $sheet->setCellValue('Z'.$index$factura->getNumerocontrol());
  257.            $sheet->setCellValue('AA'.$index$factura->getFechaemision() ? $factura->getFechaemision()->format('d-m-Y') : ""); 
  258.            $sheet->setCellValue('AB'.$index$factura->getFecharecepcion() ? $factura->getFecharecepcion()->format('d-m-Y') : "");
  259.            $sheet->setCellValue('AC'.$index$factura->getMontofactura());
  260.            }
  261.            else
  262.            {
  263.            $sheet->setCellValue('Y'.$index"");
  264.            $sheet->setCellValue('Z'.$index"");
  265.            $sheet->setCellValue('AA'.$index""); 
  266.            $sheet->setCellValue('AB'.$index"");
  267.            $sheet->setCellValue('AC'.$index"");
  268.            }
  269.           
  270.            $sheet->setCellValue('AD'.$index$afiliado->getIndplazosespera());
  271.            $sheet->setCellValue('AE'.$index$afiliado->getDiasplazosespera());
  272.            $sheet->setCellValue('AF'.$index$afiliado->getTiposervicios());
  273.            $sheet->setCellValue('AG'.$index$afiliado->getCertificados()->getNcertificado());
  274.            $sheet->setCellValue('AH'.$index$afiliado->getAnalista());
  275.            $sheet->setCellValue('AI'.$index$afiliado->getContratos()->getTipovigencias());
  276.            $sheet->setCellValue('AJ'.$index$afiliado->getCausarechazos());
  277.            $index++;
  278.         }
  279.         
  280.         // Crear tu archivo Office 2007 Excel (XLSX Formato)
  281.         $writer = new Xlsx($spreadsheet);
  282.         
  283.         // Crear archivo temporal en el sistema
  284.         $fileName 'ordenes_de_servicios_'.date('d-m-Y H:i:s').'.xlsx';
  285.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  286.         
  287.         // Guardar el archivo de excel en el directorio temporal del sistema
  288.         $writer->save($temp_file);
  289.         
  290.         // Retornar excel como descarga
  291.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  292.     }
  293.     public function generarresumenexcel(Request $request,EntityManagerInterface $entityManager)
  294.     {
  295.          $session=$request->getSession();
  296.         $spreadsheet = new Spreadsheet();
  297.         
  298.         /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
  299.         $sheet $spreadsheet->getActiveSheet();
  300.         $sheet->setCellValue('A1''N° Orden');
  301.         $sheet->setCellValue('B1''N° Identificación');
  302.         $sheet->setCellValue('C1''Afiliado');
  303.         $sheet->setCellValue('D1''Fecha nacimiento');
  304.         $sheet->setCellValue('E1''Estatus');
  305.         $sheet->setCellValue('F1''Fecha Servicio');
  306.         $sheet->setCellValue('G1''Tipo');
  307.         $sheet->setCellValue('H1''Motivo');
  308.         $sheet->setCellValue('I1''N° Presupuesto');
  309.         $sheet->setCellValue('J1''Monto Presupuesto');
  310.         $sheet->setCellValue('K1''Monto Autorizado Bs');
  311.         $sheet->setCellValue('L1''Tasa Cambio');
  312.         $sheet->setCellValue('m1''Monto Autorizado $');
  313.         $spreadsheet->getActiveSheet()->getStyle('A1:Y1')->getFont()->setBold(true)->setSize(12);
  314.          $spreadsheet->setActiveSheetIndex(0)
  315.        ->getStyle('A1')
  316.        ->getFill()
  317.        ->getStartColor()
  318.        ->setRGB('808080');
  319.         $spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
  320.         $spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
  321.         $spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
  322.         $spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
  323.         $spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
  324.         $spreadsheet->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
  325.         $spreadsheet->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
  326.         $spreadsheet->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
  327.         $spreadsheet->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
  328.         $spreadsheet->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
  329.         $spreadsheet->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
  330.         $spreadsheet->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
  331.         $spreadsheet->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
  332.         $sheet->setTitle("Resumen de Órdenes de Servicio");
  333.         $queryordenes=$session->get('querybaseordenes');
  334.         $query3 $entityManager->createQuery($queryordenes);
  335. //        if($session->get('parametrosordenes')!=null)
  336. //        {
  337. //        $query3 = $entityManager->createQuery($queryordenes)
  338. //        ->setParameters($session->get('parametrosordenes'));
  339. //        }
  340. //        else
  341. //        {
  342. //        $query3 = $entityManager->createQuery($queryordenes);
  343. //        }  
  344.         $afiliados $query3->getResult();
  345.         $index=2;
  346.         foreach ($afiliados as $afiliado)
  347.         {
  348.            $sheet->setCellValue('A'.$index$afiliado->getId());
  349.            $sheet->setCellValue('B'.$index$afiliado->getClientes()->getTipoid()."-".$afiliado->getClientes()->getNumid());
  350.            $sheet->setCellValue('C'.$index$afiliado->getClientes());
  351.            $sheet->setCellValue('D'.$index$afiliado->getClientes()->getFechanacimiento() ? $afiliado->getClientes()->getFechanacimiento()->format('d-m-Y'): "");
  352.            $sheet->setCellValue('E'.$index$afiliado->getEstatusordenes());
  353.            $sheet->setCellValue('F'.$index$afiliado->getFechaservicio()->format('d-m-Y'));
  354.            $sheet->setCellValue('G'.$index$afiliado->getTipo());
  355.            $sheet->setCellValue('H'.$index$afiliado->getMotivoscosulta());
  356.            $sheet->setCellValue('I'.$index$afiliado->getNroprepupuesto());
  357.            $sheet->setCellValue('J'.$index$afiliado->getMontopresupuesto());
  358.            $sheet->setCellValue('K'.$index$afiliado->getMontoautorizado());
  359.            $sheet->setCellValue('L'.$index$afiliado->getTasacambio());
  360.            $montodivisas= ($afiliado->getTasacambio()!=0) ? ($afiliado->getMontoautorizado()/$afiliado->getTasacambio()) : 0;
  361.            $sheet->setCellValue('M'.$index$montodivisas);
  362.            $index++;
  363.         }
  364.         
  365.         // Crear tu archivo Office 2007 Excel (XLSX Formato)
  366.         $writer = new Xlsx($spreadsheet);
  367.         
  368.         // Crear archivo temporal en el sistema
  369.         $fileName 'resumen_ordenes_de_servicios_'.date('d-m-Y H:i:s').'.xlsx';
  370.         $temp_file tempnam(sys_get_temp_dir(), $fileName);
  371.         
  372.         // Guardar el archivo de excel en el directorio temporal del sistema
  373.         $writer->save($temp_file);
  374.         
  375.         // Retornar excel como descarga
  376.         return $this->file($temp_file$fileNameResponseHeaderBag::DISPOSITION_INLINE);
  377.     }
  378.  
  379.     public function pendientes($currentPage 1,EntityManagerInterface $entityManager): Response
  380.     {
  381. //        $ordenes = $entityManager
  382. //            ->getRepository(Ordenes::class)
  383. //            ->findBY(array(),array('fecharegistro'=>'DESC'));
  384.         $limit 20;
  385. $ordenes $entityManager->getRepository(Ordenes::class)->getOrdenesPendientes($currentPage$limit,$entityManager);
  386.  $ordenespaginada $ordenes['paginator'];
  387.  $ordenesQueryCompleta =  $ordenes['query'];
  388.  $maxPages ceil($ordenes['paginator']->count() / $limit);
  389.         return $this->render('ordenes/pendientes.html.twig', [
  390.             'ordenes' => $ordenespaginada,
  391.             'maxPages'=>$maxPages,
  392. 'thisPage' => $currentPage,
  393. 'all_items' => $ordenesQueryCompleta,
  394.         ]);
  395.     }
  396.      public function resumen($currentPage 1,EntityManagerInterface $entityManager,Request $request): Response
  397.     {
  398.          $session=$request->getSession();
  399.         $limit 20;
  400.  $ordenes $entityManager->getRepository(Ordenes::class)->getResumenOrdenes($currentPage$limit,$entityManager);
  401.  $ordenespaginada $ordenes['paginator'];
  402.  $ordenesQueryCompleta =  $ordenes['query'];
  403.  $session->set('querybaseordenes',$ordenes['query']->getDql());
  404.  $maxPages ceil($ordenes['paginator']->count() / $limit);
  405.         return $this->render('ordenes/resumen.html.twig', [
  406.             'ordenes' => $ordenespaginada,
  407.             'maxPages'=>$maxPages,
  408. 'thisPage' => $currentPage,
  409. 'all_items' => $ordenesQueryCompleta,
  410.         ]);
  411.     }
  412.         public function misordenes(Request $request,EntityManagerInterface $entityManager,MailerInterface $mailer): Response
  413.     {
  414.         $session=$request->getSession();
  415.         $usuarioconectado=$session->get('userid');
  416.         $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  417.         $ordenes $entityManager
  418.             ->getRepository(Ordenes::class)
  419.             ->findBY(array('analista'=>$usuarioconectado),array('fecharegistro'=>'DESC'));
  420.         return $this->render('ordenes/misordenes.html.twig', [
  421.             'ordenes' => $ordenes,
  422.             'usuario' => $usuario,
  423.         ]);
  424.     }
  425.       public function cambioestatus(Request $requestEntityManagerInterface $entityManager): Response
  426.     {
  427.         $session=$request->getSession();
  428.         if($request->request->get("ordenid")!="" && $request->request->get("estatusnuevo")!="" )
  429.         {
  430.             
  431.             $ordenid=$request->request->get("ordenid");
  432.             $cotestatusid=$request->request->get("estatusnuevo");
  433.             $orden $entityManager->getRepository(Ordenes::class)
  434.                     ->find($ordenid);
  435.             $estatusorden $entityManager->getRepository(Estatusordenes::class)
  436.                     ->find($cotestatusid);
  437.             $observacion="La orden Cambio a Estatus: ".$estatusorden;
  438.             if ($cotestatusid==5)
  439.             {
  440.                $causa=$request->request->get("causarechazo");
  441.                $causarechazo $entityManager->getRepository(\App\Entity\Causasrechazos::class)
  442.                     ->find($causa);
  443.                $orden->setCausarechazos($causarechazo);
  444.                $observacion="La orden Cambio a Estatus: ".$estatusorden." Causa de Rechazo: ".$causarechazo;
  445.             }
  446.             $orden->setEstatusordenes($estatusorden);
  447.             $entityManager->persist($orden);
  448.             $entityManager->flush();
  449.             
  450.             $traza = new Trazas();
  451.             $traza->setOrdenes($orden);
  452.             $traza->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  453.             $usuarioconectado=$session->get('userid');
  454.             $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  455.             $traza->setUsuarios($usuario);
  456.             $traza->setEstatus(1);
  457.             $traza->setObservaciones($observacion);
  458.             $entityManager->persist($traza);
  459.             $entityManager->flush();
  460.             // Añadir mensajes flash
  461.             $session->getFlashBag()->add(
  462.                 'success',
  463.                 'La orden cambió de estatus de Forma Correcta !'
  464.             );
  465.         }
  466. return $this->redirect($this->generateUrl('ordenes_show', array('id' => $orden->getId())));
  467.     }
  468.     public function serviciosconsumidos(Request $request,EntityManagerInterface $entityManager): Response
  469.     {
  470.         $clienteid=$request->query->get("clienteid");
  471.         $contratoid=$request->query->get("contratoid");
  472.         $servicioid=$request->query->get("servicioid");
  473.         
  474.         $contrato $entityManager->getRepository(Contratos::class)
  475.                 ->find($contratoid);
  476.         $cliente $entityManager->getRepository(Clientes::class)
  477.                 ->find($clienteid);
  478.         if (!$servicioid)
  479.         {
  480. //        $ordenes = $entityManager
  481. //            ->getRepository(Ordenes::class)
  482. //            ->findBY(array('contratos'=>$contrato,'clientes'=>$cliente),array('fecharegistro'=>'DESC'));
  483.        $ordenes $entityManager->createQuery("select O
  484.               FROM App\Entity\Ordenes O where O.contratos=".$contrato->getId()." and O.clientes=".$cliente->getId()."order by O.fecharegistro desc")
  485.        ->setFirstResult(0)
  486.        ->setMaxResults(20)
  487.                ->getResult();
  488.        
  489.         }
  490.         else
  491.         {
  492.             $servicio=$entityManager->getRepository(Tiposervicios::class)
  493.                 ->find($servicioid);
  494.          $ordenes $entityManager
  495.             ->getRepository(Ordenes::class)
  496.             ->findBY(array('contratos'=>$contrato,'clientes'=>$cliente,'tiposervicios'=>$servicio),array('fecharegistro'=>'DESC'));   
  497.         }
  498.         return $this->render('ordenes/serviciosconsumidos.html.twig', [
  499.             'ordenes' => $ordenes,
  500.             'cliente' => $cliente,
  501.         ]);
  502.     }
  503.      public function ordenesporservicio(Request $request,EntityManagerInterface $entityManager): Response
  504.     {
  505.         $clienteid=$request->query->get("clienteid");
  506.         $contratoid=$request->query->get("contratoid");
  507.         $servicioid=$request->query->get("servicioid");
  508.         $montomaximo=$request->query->get("maxporservicio");
  509.         
  510.         $contrato $entityManager->getRepository(Contratos::class)
  511.                 ->find($contratoid);
  512.         $cliente $entityManager->getRepository(Clientes::class)
  513.                 ->find($clienteid);
  514.       
  515.          $servicio=$entityManager->getRepository(Tiposervicios::class)
  516.                 ->find($servicioid);
  517.          $ordenes $entityManager
  518.             ->getRepository(Ordenes::class)
  519.             ->findBY(array('contratos'=>$contrato,'clientes'=>$cliente,'tiposervicios'=>$servicio),array('fecharegistro'=>'DESC'));   
  520.         
  521.         return $this->render('ordenes/ordenesporservicio.html.twig', [
  522.             'ordenes' => $ordenes,
  523.             'cliente' => $cliente,
  524.             'servicio' => $servicio,
  525.             'montomaximo' =>$montomaximo,
  526.         ]);
  527.     }
  528.      public function consultarafiliado(Request $request,EntityManagerInterface $entityManager): Response
  529.     {
  530.         $tipoid=null;
  531.         $numid=null;
  532.         $contratos="";
  533.         $clienteid=null;
  534.         if ($request->request->get("tipoid")!="" and $request->request->get("numid")!="")
  535.         {
  536.         $tipoid=$request->request->get("tipoid");
  537.         $numid=$request->request->get("numid");
  538.         $contratos=null;
  539.         $cliente $entityManager->getRepository(Clientes::class)
  540.                 ->findOneBy(array('tipoid'=>$request->request->get("tipoid"),'numid'=>$request->request->get("numid")));
  541.         if($cliente)
  542.         {
  543.            $riesgoscubiertos $entityManager->getRepository(Riesgoscubiertos::class)
  544.            ->findBy(array('clientes'=>$cliente)); 
  545.            $query="select  DISTINCT CL.nombresrazonsocial nombreasegurado ,CO.id,CE.id as idcertificado, CE.ncertificado,CE.fechadesde ,CE.fechahasta ,
  546.               PL.descripcion plan,(select CL2.nombresrazonsocial 
  547.               from  App\Entity\Clientes CL2
  548.               where CL2.tipoid=CE.tipoid and CL2.numid=CE.numid ) as titular,(select CL3.nombresrazonsocial 
  549.               from  App\Entity\Clientes CL3
  550.               where CL3.id=CO.clientes  ) as tomador,CO.indservicioconrecibopendiente,CO.vip,AF.fechaingreso,DateDiff(CURRENT_TIME(),AF.fechaingreso) dias
  551.               FROM App\Entity\Riesgoscubiertos RC
  552.               JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
  553.               JOIN App\Entity\Contratos CO WITH CO.id = RC.contratos
  554.               JOIN App\Entity\Certificados CE WITH CE.ncertificado = RC.ncertificado AND CE.contratos=RC.contratos
  555.               JOIN App\Entity\Afiliados AF WITH (AF.clientes = RC.clientes AND AF.contratos=RC.contratos)
  556.               JOIN App\Entity\Planseleccionado PS WITH PS.contratos = RC.contratos
  557.               JOIN App\Entity\Planesservicios PLS WITH PLS.id = PS.planesservicios
  558.               JOIN App\Entity\Planes PL WITH PL.id = PLS.planes
  559.               where RC.clientes=?1
  560.               and CE.estatus=1
  561.               and AF.estatus=1
  562.               and (CO.estatuscontratos=2 or  (CO.estatuscontratos=1 and CO.indservicioconrecibopendiente=1))
  563.               and CURRENT_DATE() BETWEEN DATE_FORMAT(CE.fechadesde,'%Y-%m-%d') and DATE_FORMAT(CE.fechahasta,'%Y-%m-%d')
  564.               order by CO.id desc";
  565.              $query3 $entityManager->createQuery($query);
  566.              $query3->setParameter(1$cliente);
  567.              $contratos=$query3->getResult();
  568.              $clienteid=$cliente->getId();
  569.         }
  570.         
  571.         }
  572.         return $this->renderForm('ordenes/new.html.twig', [
  573.             'contratos' => $contratos,
  574.             'clienteid' => $clienteid,
  575.             'numid' =>$numid,
  576.             'tipoid' =>$tipoid,
  577.         ]);
  578.     }
  579.     
  580.        public function consultareventos(Request $request,EntityManagerInterface $entityManager): Response
  581.     {
  582.         $tipoid=null;
  583.         $numid=null;
  584.         $contratos="";
  585.         $clienteid=null;
  586.         if ($request->request->get("tipoid")!="" and $request->request->get("numid")!="")
  587.         {
  588.         $tipoid=$request->request->get("tipoid");
  589.         $numid=$request->request->get("numid");
  590.         $contratos=null;
  591.         $cliente $entityManager->getRepository(Clientes::class)
  592.                 ->findOneBy(array('tipoid'=>$request->request->get("tipoid"),'numid'=>$request->request->get("numid")));
  593.         if($cliente)
  594.         {
  595.            $riesgoscubiertos $entityManager->getRepository(Riesgoscubiertos::class)
  596.            ->findBy(array('clientes'=>$cliente)); 
  597.            $query="select  DISTINCT CL.nombresrazonsocial nombreasegurado ,CO.id,CE.id as idcertificado, CE.ncertificado,CE.fechadesde ,CE.fechahasta ,
  598.               PL.descripcion plan,(select CL2.nombresrazonsocial 
  599.               from  App\Entity\Clientes CL2
  600.               where CL2.tipoid=CE.tipoid and CL2.numid=CE.numid ) as titular,(select CL3.nombresrazonsocial 
  601.               from  App\Entity\Clientes CL3
  602.               where CL3.id=CO.clientes  ) as tomador,CO.indservicioconrecibopendiente,CO.vip,AF.fechaingreso,DateDiff(CURRENT_TIME(),AF.fechaingreso) dias
  603.               FROM App\Entity\Riesgoscubiertos RC
  604.               JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
  605.               JOIN App\Entity\Contratos CO WITH CO.id = RC.contratos
  606.               JOIN App\Entity\Certificados CE WITH CE.ncertificado = RC.ncertificado AND CE.contratos=RC.contratos
  607.               JOIN App\Entity\Afiliados AF WITH AF.clientes = RC.clientes AND AF.contratos=RC.contratos
  608.               JOIN App\Entity\Planseleccionado PS WITH PS.contratos = RC.contratos
  609.               JOIN App\Entity\Planesservicios PLS WITH PLS.id = PS.planesservicios
  610.               JOIN App\Entity\Planes PL WITH PL.id = PLS.planes
  611.               where RC.clientes=?1
  612.               and (CO.estatuscontratos=2 or  (CO.estatuscontratos=1 and CO.indservicioconrecibopendiente=1))
  613.               and CURRENT_DATE() BETWEEN DATE_FORMAT(CE.fechadesde,'%Y-%m-%d') and DATE_FORMAT(CE.fechahasta,'%Y-%m-%d')
  614.               order by CO.id desc";
  615.              $query3 $entityManager->createQuery($query);
  616.              $query3->setParameter(1$cliente);
  617.              $contratos=$query3->getResult();
  618.              $clienteid=$cliente->getId();
  619.         }
  620.         
  621.         }
  622.         return $this->renderForm('ordenes/consultareventos.html.twig', [
  623.             'contratos' => $contratos,
  624.             'clienteid' => $clienteid,
  625.             'numid' =>$numid,
  626.             'tipoid' =>$tipoid,
  627.         ]);
  628.     }
  629.     public function consultarservicios(Request $request,EntityManagerInterface $entityManager): Response
  630.     {
  631.     $servicios=null;
  632.     $proveedores=null;
  633.     $cliente=null;
  634.     $contrato=null;
  635.     $servicioid=null;
  636.     $unidades=null;
  637.         if ($request->request->get("clienteid")!="" and $request->request->get("contratoid")!="" )
  638.         {
  639.         $clienteid=$request->request->get("clienteid");
  640.         $contratoid=$request->request->get("contratoid");
  641.         $cliente $entityManager->getRepository(Clientes::class)
  642.                 ->find($clienteid);
  643.         $proveedores $entityManager->getRepository(Proveedores::class)
  644.                 ->findAll();
  645.         $contrato $entityManager->getRepository(Contratos::class)
  646.                 ->find($contratoid);
  647.         $motivos $entityManager->getRepository(Motivosconsulta::class)
  648.                 ->findBy(array(),array('descripcion'=>'ASC'));
  649.              $unidades$entityManager->getRepository(Unidades::class)
  650.                 ->findBy(array(),array('descripcion'=>'ASC'));
  651.              $referidos$entityManager->getRepository(\App\Entity\Referidos::class)
  652.                 ->findBy(array(),array('id'=>'ASC'));
  653.         if($cliente && $contrato)
  654.         {
  655. //           $riesgoscubiertos = $entityManager->getRepository(Riesgoscubiertos::class)
  656. //           ->findBy(array('clientes'=>$cliente)); 
  657.            $query="select  DISTINCT TS.id,TS.descripcion,TA.descripcion agotamiento ,RC.cantidadmaxservicios, AF.fechaingreso,TS.prioridad
  658.               FROM App\Entity\Riesgoscubiertos RC
  659.               JOIN App\Entity\Afiliados AF WITH (AF.clientes = RC.clientes and AF.contratos=RC.contratos)
  660.               JOIN App\Entity\Tiposervicios TS WITH TS.id = RC.tiposervicios
  661.               JOIN App\Entity\Tipoagotamiento TA WITH TA.id = RC.tipoagotamiento
  662.               JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
  663.               where RC.clientes=?1
  664.               and RC.contratos=?2
  665.               order by TS.prioridad asc";
  666.              $query3 $entityManager->createQuery($query);
  667.              $query3->setParameter(1$cliente);
  668.              $query3->setParameter(2$contrato);
  669.              $servicios=$query3->getResult();
  670.         }
  671.    
  672.         
  673.         }
  674.         return $this->renderForm('ordenes/servicios.html.twig', [
  675.             'servicios' => $servicios,
  676.             'cliente' => $cliente,
  677.             'contrato' => $contrato,
  678.             'motivos' => $motivos,
  679.             'unidades' =>$unidades,
  680.             'proveedores' => $proveedores,
  681.             'referidos' =>$referidos,
  682.         ]);
  683.     }
  684.       public function consultareventosxcontrato(Request $request,EntityManagerInterface $entityManager): Response
  685.     {
  686.   
  687.       
  688.         if ($request->request->get("clienteid")!="" and $request->request->get("contratoid")!="" )
  689.         {
  690.         $clienteid=$request->request->get("clienteid");
  691.         $contratoid=$request->request->get("contratoid");
  692.         $contrato $entityManager->getRepository(Contratos::class)
  693.                 ->find($contratoid);
  694.         $cliente $entityManager->getRepository(Clientes::class)
  695.                 ->find($clienteid);
  696.         $query="select  DISTINCT TS.id,TS.descripcion,TA.descripcion agotamiento ,RC.cantidadmaxservicios, AF.fechaingreso,TS.prioridad
  697.               FROM App\Entity\Riesgoscubiertos RC
  698.               JOIN App\Entity\Afiliados AF WITH AF.clientes = RC.clientes and AF.contratos=RC.contratos
  699.               JOIN App\Entity\Tiposervicios TS WITH TS.id = RC.tiposervicios
  700.               JOIN App\Entity\Tipoagotamiento TA WITH TA.id = RC.tipoagotamiento
  701.               JOIN App\Entity\Clientes CL WITH CL.id = RC.clientes
  702.               where RC.clientes=?1
  703.               and RC.contratos=?2
  704.               order by TS.prioridad asc";
  705.              $query3 $entityManager->createQuery($query);
  706.              $query3->setParameter(1$cliente);
  707.              $query3->setParameter(2$contrato);
  708.              $servicios=$query3->getResult();
  709.       
  710.         $ordenes $entityManager
  711.             ->getRepository(Ordenes::class)
  712.             ->findBY(array('contratos'=>$contrato,'clientes'=>$cliente),array('fecharegistro'=>'DESC'));
  713.         
  714.         }
  715.   
  716.         return $this->renderForm('ordenes/eventosporservicios.html.twig', [
  717.             'ordenes' => $ordenes,
  718.             'cliente' => $cliente,
  719.             'servicios' =>$servicios,
  720.             'contrato' =>$contrato,
  721.         ]);
  722.     }
  723.      public function ordenescalendario(Request $request)
  724.     {
  725.            return $this->render('ordenes/todasvistacalendario.html.twig');
  726.      }
  727.     public function todaslasactuacionesjson(Request $request)
  728.     {
  729.         $em $this->getDoctrine()->getManager();
  730.         $data=null;
  731.          $session $request->getSession();
  732.         $usuarioconectado=$session->get('userid');
  733.         $query $em->createQuery(
  734.               "select O
  735.               FROM App\Entity\Ordenes O
  736.               inner join App\Entity\Clientes C WITH O.clientes = C.id
  737.               order by O.fechaservicio desc");
  738.         $entities=$query->execute();
  739.         $i=0;
  740.         $arraycolor= array();
  741.         foreach ($entities as $ordenes)
  742.         {
  743.             $tipo=$ordenes->getTiposervicios();
  744.             $cliente=$ordenes->getClientes();
  745.             $usuario=$ordenes->getUsuarios();
  746.             $contratos=$ordenes->getContratos();
  747.             $data[$i]['title']=$tipo->getDescripcion();
  748.             $data[$i]['descripcion']=$ordenes->getCertificados()->getTipoid()."-".$ordenes->getCertificados()->getNumid();
  749.             $data[$i]['cliente']=$cliente->getNombresrazonsocial();
  750.             $data[$i]['abogado']=$usuario->getNombres();
  751.             $data[$i]['tribunal']=$contratos->getId();
  752.             $data[$i]['id']=$ordenes->getId();
  753.             $data[$i]['estatus']=$ordenes->getEstatusordenes()->getDescripcion();
  754.             $data[$i]['usuarioid']=$usuario->getId();
  755.             $data[$i]['usuarioconectado']=$usuario;
  756.             if($tipo->getId()%2==0)
  757.                 $colorrand($tipo->getId(), 150);
  758.             else
  759.                 $colorrand(150 250);
  760.             $color=$color;
  761.             $data[$i]['color']=$color;
  762.             $data[$i]['hora']=$ordenes->getFechaservicio()->format('H:i:s');
  763.             $data[$i]['start']=$ordenes->getFechaservicio()->format('Y-m-d H:i:s');
  764.             $i++;
  765.         }
  766.         $response $data;
  767.   return new Response(json_encode($response)); 
  768.     }
  769.     /**
  770.      * @Route("/new", name="ordenes_new", methods={"GET", "POST"})
  771.      */
  772.     public function new(Request $requestEntityManagerInterface $entityManager): Response
  773.     {
  774.         $tipoid=null;
  775.         $numid=null;
  776.         $contratos="";
  777.         $session=$request->getSession();
  778.         $ordene = new Ordenes();
  779.         $form $this->createForm(OrdenesType::class, $ordene);
  780.         $form->handleRequest($request);
  781.         $ordene->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  782.         $ordene->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
  783.         $usuarioconectado=$session->get('userid');
  784.         $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  785.         $ordene->setUsuarios($usuario);
  786.         if ($form->isSubmitted() && $form->isValid()) {
  787.             $entityManager->persist($ordene);
  788.             $entityManager->flush();
  789.             return $this->redirectToRoute('ordenes_index', [], Response::HTTP_SEE_OTHER);
  790.         }
  791.         return $this->renderForm('ordenes/new.html.twig', [
  792.             'ordene' => $ordene,
  793.             'form' => $form,
  794.             'numid' =>$numid,
  795.             'tipoid' =>$tipoid,
  796.             'clienteid'=>null,
  797.             'contratos' =>$contratos,
  798.         ]);
  799.     }
  800.     public function asignar(Request $requestEntityManagerInterface $entityManager,MailerInterface $mailer): Response
  801.     {
  802.         
  803.         $session=$request->getSession();
  804.         
  805.         if($request->request->get("ordenid")!="" && $request->request->get("usuarios")!="" )
  806.         {
  807.             $ordenid=$request->request->get("ordenid");
  808.             $orden $entityManager->getRepository(Ordenes::class)->find($ordenid);
  809.             $traza = new Trazas();
  810.             $traza->setOrdenes($orden);
  811.             $traza->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  812.             $usuarioconectado=$session->get('userid');
  813.             $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  814.             $traza->setUsuarios($usuario);
  815.             $traza->setEstatus(1);
  816.             $usuarioasignado $entityManager->getRepository(Usuarios::class)->find($request->request->get("usuarios"));
  817.             $traza->setObservaciones("La orden se asignó a: ".$usuarioasignado->getNombres());
  818.             
  819.             $entityManager->persist($traza);
  820.             $entityManager->flush();
  821.             
  822.             $orden->setAnalista($usuarioasignado);
  823.             $entityManager->persist($orden);
  824.             $entityManager->flush();
  825.             if ($usuarioasignado->getEmail()!="")
  826.             {
  827.                 $asunto="CSL: Orden de servicio de salud asignada !";
  828.                 $mensaje="Se le asignó la orden N°:".$orden->getId().", por favor procesar lo antes posible";
  829.                 EnvioEmail::EnviarEmail($usuarioasignado->getEmail(),$asunto,$mensaje,$mailer);
  830.             }
  831.         }
  832.         
  833.         
  834.             return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
  835.         
  836.     }
  837.     public function enviaradjunto(Ordenes $ordeneEntityManagerInterface $entityManager,Request $request,MailerInterface $mailer
  838.     {
  839.         $pdfOptions = new Options();
  840.         $pdfOptions->setIsRemoteEnabled(true);
  841.         $pdfOptions->set('defaultFont''Arial');
  842.         $servicios=null;
  843.         try
  844.         {
  845.         if ($ordene->getTipo()=="APS")
  846.         {
  847.            $servicios $entityManager->getRepository(Ordenservicios::class)
  848.                 ->findBy(array('ordenes'=>$ordene)); 
  849.         }
  850.         // Crea una instancia de Dompdf con nuestras opciones
  851.         $dompdf = new Dompdf($pdfOptions);
  852.         $session $request->getSession();
  853.         $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.";
  854.         $qrCode = new QrCode($data); 
  855.         header('Content-Type: '.$qrCode->getContentType());
  856.         $salida=base64_encode($qrCode->writeString());
  857.         $html$this->renderView('ordenes/impresa.html.twig', [
  858.             'ordene' => $ordene,
  859.             'serviciosorden' =>$servicios,
  860.             'qr'=>$salida,
  861.         ]);
  862.         // Cargar HTML en Dompdf
  863.         $dompdf->loadHtml($html);
  864. //        $dompdf->getOptions()->setChroot($this->projectDir . DIRECTORY_SEPARATOR . 'www');
  865.         
  866.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  867.         $dompdf->setPaper('A4''portrait');
  868.         // Renderiza el HTML como PDF
  869.         $dompdf->render();
  870.         // Store PDF Binary Data
  871.         $output $dompdf->output();
  872.         
  873.        // $publicDirectory =$request->getHttpHost();
  874.         $publicDirectory $this->getParameter('archivos_directory_ordenes');
  875.         // e.g /var/www/project/public/mypdf.pdf
  876.         $pdfFilepath =  $publicDirectory '/orden_'.$ordene->getId().'.pdf';
  877.         
  878.         file_put_contents($pdfFilepath$output);
  879.         $emailconsultores=trim($this->getParameter('app.emailconsultores'));
  880.         $emailrrhh=trim($this->getParameter('app.emailrrhh'));
  881.         $emailoperaciones1=trim($this->getParameter('app.emailoperaciones1'));
  882.         $emailemisor=trim($this->getParameter('app.emailemisor'));
  883.         
  884.         $asunto="CSL: Orden N° ".$ordene->getId()." asociada al Afiliado ".$ordene->getClientes().", N° de Identificación ".$ordene->getClientes()->getTipoId()."-".$ordene->getClientes()->getNumId().".";
  885.         $mensaje="Se envió la orden N° ".$ordene->getId()." asociada al Afiliado ".$ordene->getClientes().", N° de Identificación ".$ordene->getClientes()->getTipoId()."-".$ordene->getClientes()->getNumId().".";
  886.         $mensaje.="<br/><br/> Esta es una cuenta de correo no monitoreada, por favor no responder.";
  887.         $arrayemails=array($emailconsultores,$emailrrhh,$emailoperaciones1);
  888.         if (count($arrayemails)>0)
  889.         {
  890.             if($ordene->getUnidades()->getId()!=20 and $ordene->getUnidades()->getId()!=23)
  891.                 EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemails,$asunto,$pdfFilepath,$mensaje,$mailer);
  892.             else
  893.             {
  894.                 // Search value and delete
  895.                 if(($key array_search($emailoperaciones1$arrayemails)) !== false) {
  896.                     unset($arrayemails[$key]);
  897.                 }
  898.                 EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemails,$asunto,$pdfFilepath,$mensaje,$mailer);
  899.             }
  900.                 
  901.         }
  902.         if (trim($ordene->getUnidades()->getEmail())!="")
  903.         {
  904.               $arrayemailsunidad=array(trim($ordene->getUnidades()->getEmail()));
  905.               EnvioEmail::EnviarEmailConAdjunto($emailemisor,$arrayemailsunidad,$asunto,$pdfFilepath,$mensaje,$mailer);
  906.         }
  907.             $session->getFlashBag()->add('success','Se envió la orden de forma correcta !');
  908.          }
  909.  catch (\Exception $e)
  910.  {
  911.      $session->getFlashBag()->add('warning','Se generó un error al enviar la Orden por email. !'.$e->getMessage());
  912.  }
  913.              return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordene->getId())));
  914.     }
  915.     public function guardargastos(Request $requestEntityManagerInterface $entityManager): Response
  916.     {
  917.         $session=$request->getSession();
  918.         
  919.         if($request->request->get("ordenid")!="" && $request->request->get("presupuesto")!="" && $request->request->get("gastosc")!="" )
  920.         {
  921.             $ordenid=$request->request->get("ordenid");
  922.             $monto=$request->request->get("gastosc");
  923.             $montonocubierto=$request->request->get("gastoscnc");
  924.             $montopresupuesto=$request->request->get("presupuesto");
  925.             $nropresupuesto=$request->request->get("nropresupuesto");
  926.             $orden $entityManager->getRepository(Ordenes::class)->find($ordenid);
  927.               if($orden->getTasacambio()==0)
  928.         {
  929.         $tipotasascambio $entityManager->getRepository(Tipotasascambio::class)->find(1);
  930.         $monedas $entityManager->getRepository(Monedas::class)->find(2);
  931.         $fechaorden=new \DateTime($orden->getFecharegistro()->format('Y-m-d'));
  932.         $existe $entityManager->getRepository(Tasascambio::class)
  933.         ->findOneBy(array('fechatasa'=>$fechaorden,'tipotasascambio'=>$tipotasascambio,'monedas'=>$monedas));
  934.       
  935.         if(!$existe)
  936.         {
  937.             $session->getFlashBag()->add('warning','No existe la tasa de cambio para la fecha de Registro de la Orden '.$fechaorden->format('d/m/Y').'.! ');
  938.             return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
  939.         }
  940.         $orden->setTasacambio($existe->getMonto());
  941.         }
  942.             $orden->setMontopresupuesto($montopresupuesto);
  943.             $orden->setMonto($monto);
  944.             $orden->setMontonocubierto($montonocubierto);
  945.             $orden->setNroprepupuesto($nropresupuesto);
  946.             $entityManager->persist($orden);
  947.             $entityManager->flush();
  948.         }
  949.         return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
  950.     }
  951.     public function ajustarorden(Request $requestEntityManagerInterface $entityManager): Response
  952.     {
  953.         $session=$request->getSession();
  954.         $usuarioconectado=$session->get('userid');
  955.         
  956.         
  957.         if($request->query->get("ordenid")!="" && $request->query->get("montodisponible")!="" && $request->query->get("idcertificado")!="")
  958.         {
  959.             $ordenid=$request->query->get("ordenid");
  960.             $idcertificado=$request->query->get("idcertificado");
  961.             $montodisponible=$request->query->get("montodisponible");
  962.             $orden $entityManager->getRepository(Ordenes::class)->find($ordenid);
  963.             $montoautorizado=$orden->getMontoautorizado();
  964.             $montocubierto=$orden->getMonto();
  965.             $montoajuste=$montocubierto-$montoautorizado;
  966.             echo $montoajuste."Monto Ajuste $<br>";
  967.             echo $montodisponible." Disponible $ <br>";
  968.             
  969.             //Convierto Monto disponible de dolares a Bolivares
  970.             if ($montodisponible>0)
  971.             {
  972.             $montodisponible=$montodisponible*$orden->getTasacambio();
  973.             echo $montodisponible." Disponible Bs <br>";
  974.             if ($montodisponible>$montoajuste)
  975.                 $montoajuste=$montoajuste;
  976.             else
  977.                 $montoajuste=$montodisponible;
  978.             
  979.             $montoparaagotar=$montoautorizado+$montoajuste;
  980.             /***************/
  981.             $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  982.             $certificado $entityManager->getRepository(Certificados::class)->find($idcertificado);
  983.             $ordenagotamiento=new Ordenesagotamiento();
  984.             $ordenagotamiento->setOrdenes($orden);
  985.             $ordenagotamiento->setMonto($montoajuste);
  986.             $ordenagotamiento->setUsuarios($usuario);
  987.             $ordenagotamiento->setTiposervicios($orden->getTiposervicios());
  988.             $ordenagotamiento->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  989.             $ordenagotamiento->setCertificados($certificado);
  990.             $entityManager->persist($ordenagotamiento);
  991.             $entityManager->flush();
  992.             /***************/
  993.             
  994.             $orden->setMontoautorizado($montoparaagotar);
  995.             $entityManager->persist($orden);
  996.             $entityManager->flush();
  997.             }
  998.             else
  999.             {
  1000.               $session->getFlashBag()->add(
  1001.                 'warning',
  1002.                 'No tiene monto disponible en el Servicio !'
  1003.             );  
  1004.             }
  1005.         }
  1006.         return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
  1007.     }
  1008.    
  1009.          public function borrarajusterorden(Request $requestEntityManagerInterface $entityManager): Response
  1010.     {
  1011.         $session=$request->getSession();
  1012.         
  1013.         if($request->query->get("ordenid")!="" && $request->query->get("idcertificado")!="" && $request->query->get("idconsumo")!="")
  1014.         {
  1015.             $ordenid=$request->query->get("ordenid");
  1016.             $idcertificado=$request->query->get("idcertificado");
  1017.             $idconsumo=$request->query->get("idconsumo");
  1018.             $montodisponible=$request->query->get("montodisponible");
  1019.             $orden $entityManager->getRepository(Ordenes::class)->find($ordenid);
  1020.             $consumo $entityManager->getRepository(Ordenesagotamiento::class)->find($idconsumo);
  1021.             $montoconsumido=$consumo->getMonto();
  1022.             $ordenservicio=null;
  1023.             if ($consumo->getOrdenservicios())
  1024.             {
  1025.                  $ordenservicio $entityManager->getRepository(Ordenservicios::class)
  1026.                          ->find($consumo->getOrdenservicios()->getId());
  1027.               
  1028.             }
  1029.             // Borro de Ordenesagotamiento
  1030.             $entityManager->remove($consumo);
  1031.             $entityManager->flush();
  1032.             // Borro de Ordenservicios si existe
  1033.             if ($ordenservicio)
  1034.             {
  1035.             $entityManager->remove($ordenservicio);
  1036.             $entityManager->flush();
  1037.             }
  1038.             
  1039.             $montoconsumido=$orden->getMontoautorizado()-$montoconsumido;
  1040.             $orden->setMontoautorizado($montoconsumido);
  1041.             $entityManager->persist($orden);
  1042.             $entityManager->flush();
  1043.         }
  1044.         return $this->redirect($this->generateUrl('ordenes_show', array('id' => $ordenid)));
  1045.     }
  1046.      public function create(Request $requestEntityManagerInterface $entityManager,MailerInterface $mailer)
  1047.     {
  1048.         $entity = new Ordenes();
  1049.        
  1050.         $session $request->getSession();
  1051.         $entity->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  1052.         $entity->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
  1053.         $form $this->createForm(OrdenesType::class, $entity);
  1054.         $form->handleRequest($request);
  1055.         $tipoid=null;
  1056.         $numid=null;
  1057.         $contratos=null;
  1058.         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")!="")
  1059.         {
  1060.             $ncertificado=$request->request->get("certificado");
  1061.             $entity->setFechaservicio(new \DateTime(date("Y-m-d H:i:s")));
  1062.             $usuarioconectado $session->get('userid');
  1063.             $proveedorid $request->request->get("proveedor");
  1064.             $motivoid $request->request->get("motivo");
  1065.             $unidadid $request->request->get("unidad");
  1066.             $referidoid $request->request->get("referido");
  1067.             $tipo $request->request->get("tipo");
  1068.             $npresupuesto $request->request->get("npresupuesto");
  1069.             $montopresupuesto $request->request->get("montopresupuesto");
  1070.             
  1071.             $proveedor $entityManager->getRepository(Proveedores::class)->find($proveedorid);
  1072.             $entity->setProveedores($proveedor);
  1073.             $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  1074.             $entity->setUsuarios($usuario);
  1075.             $entity->setAnalista($usuario);
  1076.             
  1077.             $estatus $entityManager->getRepository(Estatusordenes::class)->find(1);
  1078.             $entity->setEstatusordenes($estatus);
  1079.             
  1080.             $entity->setTipo($tipo);
  1081.             
  1082.              $motivo$entityManager->getRepository(Motivosconsulta::class)->find($motivoid);
  1083.             $entity->setMotivoscosulta($motivo);
  1084.             
  1085.             $unidad$entityManager->getRepository(Unidades::class)->find($unidadid);
  1086.             $entity->setUnidades($unidad);
  1087.             $referido$entityManager->getRepository(\App\Entity\Referidos::class)->find($referidoid);
  1088.             $entity->setReferidos($referido);
  1089.             
  1090.             $moneda $entityManager->getRepository(Monedas::class)->find(1);
  1091.             $entity->setMonedas($moneda);
  1092.             
  1093.             $contrato $entityManager->getRepository(Contratos::class)->find($request->request->get("radiocontrato"));
  1094.             $entity->setContratos($contrato);
  1095.             
  1096.             $tiposervicios $entityManager->getRepository(Tiposervicios::class)->find($request->request->get("radioservicio"));
  1097.             $entity->setTiposervicios($tiposervicios);
  1098.             
  1099.             $clientes $entityManager->getRepository(Clientes::class)->find($request->request->get("clienteid"));
  1100.             $entity->setClientes($clientes);
  1101.             
  1102.             $afiliado $entityManager->getRepository(Afiliados::class)
  1103.                     ->findOneBy(array('clientes'=>$clientes,'contratos'=>$contrato));
  1104.             if ($afiliado->getFechaingreso())
  1105.             {
  1106.                 $fechaactual=new \DateTime(date("Y-m-d"));
  1107.                 $dias=\date_diff($fechaactual,$afiliado->getFechaingreso());
  1108.                 if($dias->days<=90
  1109.                 {
  1110.                 $entity->setIndplazosespera("1");
  1111.                 $entity->setDiasplazosespera($dias->days);
  1112.                 }
  1113.             }
  1114.             $entity->setClientes($clientes);
  1115.             
  1116.             $certificado $entityManager->getRepository(Certificados::class)
  1117.                     ->findOneBy(array('contratos'=>$contrato,'ncertificado'=>$ncertificado));
  1118.             $entity->setCertificados($certificado);
  1119.             
  1120.             $entity->setMontopresupuesto($montopresupuesto);
  1121.             $entity->setNroprepupuesto($npresupuesto);
  1122.             $entity->setTasacambio(0);
  1123.             $entity->setMontonocubierto(0);
  1124.             $entity->setMontoautorizado(0);
  1125.             $entity->setMonto(0);
  1126.           
  1127.             
  1128. ////            $validacion = $entityManager->getRepository(Riesgoscubiertos::class)
  1129. ////                    ->findOneBy(array('contratos'=>$contrato,'clientes'=>$clientes,'tiposervicios'=>$tiposervicios,'ncertificado'=>$ncertificado));
  1130. //            $cantidadmaxserviciospermitidos=$validacion->getCantidadmaxservicios();
  1131.  
  1132.             
  1133.             $fechaservicio=strtotime($entity->getFecharegistro()->format('d-m-Y'));
  1134.             $fechadesde=strtotime($certificado->getFechadesde()->format('d-m-Y'));
  1135.             $fechahasta=strtotime($certificado->getFechahasta()->format('d-m-Y'));
  1136.             
  1137.             if ($fechaservicio $fechadesde or $fechaservicio $fechahasta)
  1138.             {
  1139.                 $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'));
  1140.                 return $this->redirect($this->generateUrl('ordenes_new'));  
  1141.             }
  1142. //            
  1143.             $em $this->getDoctrine()->getManager();
  1144.             $em->persist($entity);
  1145.             $em->flush();
  1146.             
  1147.             if ($clientes->getEmail()!="")
  1148.             {
  1149.                 $asunto="Orden de servicio registrada !";
  1150.                 $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.";
  1151.                //EnvioEmail::EnviarEmail($clientes->getEmail(),$asunto,$mensaje,$mailer);
  1152.             }
  1153.             return $this->redirect($this->generateUrl('ordenes_show', array('id' => $entity->getId())));
  1154.         }
  1155.         else
  1156.         {
  1157.             $session $request->getSession();
  1158.             $session->getFlashBag()->add('warning','Debe seleccionar un contrato y un servicio!');
  1159.             return $this->redirect($this->generateUrl('ordenes_new'));
  1160.         }
  1161.         return $this->render('ordenes/new.html.twig', array(
  1162.             'entity' => $entity,
  1163.             'form'   => $form->createView(),
  1164.             'clienteid'=>null,
  1165.             'numid'=>$numid,
  1166.             'tipoid'=>$tipoid,
  1167.             'contratos'=>$contratos,
  1168.         ));
  1169.     }
  1170.     /**
  1171.      * @Route("/{id}", name="ordenes_show", methods={"GET"})
  1172.      */
  1173.     public function show(Ordenes $ordeneEntityManagerInterface $entityManager,Request $request): Response
  1174.     {
  1175.         if ($ordene->getTipo()=="APS")
  1176.             return $this->redirect($this->generateUrl('ordenes_showaps', array('id' => $ordene->getId())));
  1177.         $historiacargada=0;
  1178.         $trazaslist $entityManager->getRepository(Trazas::class)
  1179.                 ->findBy(array('ordenes'=>$ordene),array('fecharegistro'=>'DESC'));
  1180.         $facturaslist $entityManager->getRepository(Facturasordenes::class)
  1181.                 ->findBy(array('ordenes'=>$ordene));
  1182.         $causasrechazos $entityManager->getRepository(\App\Entity\Causasrechazos::class)
  1183.                 ->findBy(array('estatus'=>'1'));
  1184.         $consumos=null;
  1185. //        $usuariosasignar = $entityManager->getRepository(Usuarios::class)
  1186. //                ->findBy(array('estatus'=>1,));
  1187.          if ($ordene->getContratos()->getVip()=='1')
  1188.          {
  1189.          $query $entityManager->createQuery(
  1190.               "select U
  1191.               FROM App\Entity\Usuarios U
  1192.               inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
  1193.               where U.estatus=1
  1194.               and U.tipousuarios not in (6)
  1195.               and U.proveedores =?2
  1196.               and (U.atiendevip=?1)
  1197.               order by U.nombres asc");
  1198.          $query->setParameter(1$ordene->getContratos()->getVip());
  1199.          $query->setParameter(2$ordene->getProveedores());
  1200.          }
  1201.          else
  1202.          {
  1203.              $query $entityManager->createQuery(
  1204.               "select U
  1205.               FROM App\Entity\Usuarios U
  1206.               inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
  1207.               where U.estatus=1
  1208.               and U.tipousuarios not in (6)
  1209.               and (U.tipousuarios in (4) or (U.tipousuarios in (1,7) and U.proveedores =?1))
  1210.               order by U.nombres asc");
  1211.              $query->setParameter(1$ordene->getProveedores());
  1212.          }
  1213.         $usuariosasignar=$query->execute();
  1214.          
  1215.         $traza= new Trazas();
  1216.         $form $this->createForm(TrazasType::class, $traza);
  1217.         
  1218.         $facturaorden= new Facturasordenes();
  1219.         $formfacturaorden $this->createForm(FacturasordenesType::class, $facturaorden);
  1220.         if ($facturaslist)
  1221.         {
  1222.         $formfacturaorden $this->createForm(FacturasordenesType::class, $facturaslist[0]);
  1223.         }
  1224.         
  1225.         
  1226.         $form->handleRequest($request);
  1227.         
  1228.  
  1229.         $cliente=$ordene->getClientes();
  1230.         $serviciosdisponibles=null;
  1231.         if ($ordene->getMonto()>0)
  1232.         {
  1233. //            $serviciosdisponibles=  $entityManager->getRepository(Riesgoscubiertos::class)
  1234. //                    ->findBy(array('clientes'=>$cliente,'contratos'=>$ordene->getContratos(),
  1235. //                        'tiposervicios'=>$ordene->getTiposervicios()));
  1236.             $query $entityManager->createQuery(
  1237.               "select R,(select sum(OA.monto/O.tasacambio)
  1238.               FROM App\Entity\Ordenes O
  1239.               inner join App\Entity\Ordenesagotamiento OA WITH OA.ordenes = O.id
  1240.               inner join App\Entity\Certificados C WITH C.id = OA.certificados
  1241.               where O.clientes=?1
  1242.               and O.contratos = ?2
  1243.               and O.tiposervicios =?3
  1244.               and C.ncertificado =R.ncertificado
  1245.               and O.estatusordenes in (1,2,3)
  1246.               ) consumido,
  1247.               (select (sum(OA2.monto)/O2.tasacambio)
  1248.               FROM App\Entity\Ordenes O2
  1249.               inner join App\Entity\Ordenesagotamiento OA2 WITH OA2.ordenes = O2.id
  1250.               inner join App\Entity\Certificados C2 WITH C2.id = OA2.certificados
  1251.               where O2.clientes=?1
  1252.               and O2.contratos = ?2
  1253.               and O2.tiposervicios =?3
  1254.               and O2.id =?4
  1255.               and C2.ncertificado =R.ncertificado
  1256.               and O2.estatusordenes in (1,2,3)
  1257.               ) consumidoorden,CE.id certificadoid
  1258.               FROM App\Entity\Riesgoscubiertos R
  1259.               inner join App\Entity\Contratos CO WITH CO.id = R.contratos
  1260.               inner join App\Entity\Certificados CE WITH CE.ncertificado = R.ncertificado and CE.contratos = R.contratos
  1261.               where R.clientes=?1
  1262.               and R.contratos = ?2
  1263.               and CO.estatuscontratos = 2
  1264.               and CE.fechaanulacion is null
  1265.               and CE.estatus = 1
  1266.               and R.tiposervicios =?3
  1267.               order by R.cantidadmaxservicios asc");
  1268.          $query->setParameter(1$cliente);
  1269.          $query->setParameter(2$ordene->getContratos());
  1270.          $query->setParameter(3$ordene->getTiposervicios());
  1271.          $query->setParameter(4$ordene->getId());
  1272.           $serviciosdisponibles=$query->execute();
  1273.           
  1274.           $consumos $entityManager->getRepository(Ordenesagotamiento::class)
  1275.                 ->findBy(array('ordenes'=>$ordene));
  1276.         }
  1277.         
  1278.   
  1279.         return $this->render('ordenes/show.html.twig', [
  1280.             'ordene' => $ordene,
  1281.             'trazaslist' => $trazaslist,
  1282.             'facturaslist' =>$facturaslist,
  1283.             'form' => $form->createView(),
  1284.             'formfacturaorden' =>$formfacturaorden->createView(),
  1285.             'usuariosasignar' => $usuariosasignar,
  1286.             'serviciosdisponibles' =>$serviciosdisponibles,
  1287.             'consumos' =>$consumos,
  1288.             'causasrechazos' =>$causasrechazos,
  1289.         ]);
  1290.     }
  1291.     public function showaps(Ordenes $ordeneEntityManagerInterface $entityManager,Request $request): Response
  1292.     {
  1293.         $historiacargada=0;
  1294.         $trazaslist $entityManager->getRepository(Trazas::class)
  1295.                 ->findBy(array('ordenes'=>$ordene),array('fecharegistro'=>'DESC'));
  1296.         $facturaslist $entityManager->getRepository(Facturasordenes::class)
  1297.                 ->findBy(array('ordenes'=>$ordene));
  1298.         $causasrechazos $entityManager->getRepository(\App\Entity\Causasrechazos::class)
  1299.                 ->findBy(array('estatus'=>'1'));
  1300.         $consumos=null;
  1301.         $serviciosorden=null;
  1302. //        $usuariosasignar = $entityManager->getRepository(Usuarios::class)
  1303. //                ->findBy(array('estatus'=>1,));
  1304.          if ($ordene->getContratos()->getVip()=='1')
  1305.          {
  1306.          $query $entityManager->createQuery(
  1307.               "select U
  1308.               FROM App\Entity\Usuarios U
  1309.               inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
  1310.               where U.estatus=1
  1311.               and U.tipousuarios not in (6)
  1312.               and U.proveedores =?2
  1313.               and (U.atiendevip=?1)
  1314.               order by U.nombres asc");
  1315.          $query->setParameter(1$ordene->getContratos()->getVip());
  1316.          $query->setParameter(2$ordene->getProveedores());
  1317.          }
  1318.          else
  1319.          {
  1320.              $query $entityManager->createQuery(
  1321.               "select U
  1322.               FROM App\Entity\Usuarios U
  1323.               inner join App\Entity\Tipousuarios TU WITH U.tipousuarios = TU.id
  1324.               where U.estatus=1
  1325.               and U.tipousuarios not in (6)
  1326.               and (U.tipousuarios in (4) or (U.tipousuarios in (1,7) and U.proveedores =?1))
  1327.               order by U.nombres asc");
  1328.              $query->setParameter(1$ordene->getProveedores());
  1329.          }
  1330.         $usuariosasignar=$query->execute();
  1331.          
  1332.         $traza= new Trazas();
  1333.         $form $this->createForm(TrazasType::class, $traza);
  1334.         
  1335.         $facturaorden= new Facturasordenes();
  1336.         $formfacturaorden $this->createForm(FacturasordenesType::class, $facturaorden);
  1337.         if ($facturaslist)
  1338.         {
  1339.         $formfacturaorden $this->createForm(FacturasordenesType::class, $facturaslist[0]);
  1340.         }
  1341.         
  1342.         
  1343.         $form->handleRequest($request);
  1344.         
  1345.  
  1346.         $cliente=$ordene->getClientes();
  1347.         $serviciosdisponibles=null;
  1348.         $query $entityManager->createQuery(
  1349.               "select R,(select sum(OA.monto/O.tasacambio)
  1350.               FROM App\Entity\Ordenes O
  1351.               inner join App\Entity\Ordenesagotamiento OA WITH OA.ordenes = O.id
  1352.               inner join App\Entity\Certificados C WITH C.id = OA.certificados
  1353.               where O.clientes=?1
  1354.               and O.contratos = ?2
  1355.               and O.tiposervicios =?3
  1356.               and C.ncertificado =R.ncertificado
  1357.               and O.estatusordenes in (1,2,3)
  1358.               ) consumido,
  1359.               (select (sum(OA2.monto)/O2.tasacambio)
  1360.               FROM App\Entity\Ordenes O2
  1361.               inner join App\Entity\Ordenesagotamiento OA2 WITH OA2.ordenes = O2.id
  1362.               inner join App\Entity\Certificados C2 WITH C2.id = OA2.certificados
  1363.               where O2.clientes=?1
  1364.               and O2.contratos = ?2
  1365.               and O2.tiposervicios =?3
  1366.               and O2.id =?4
  1367.               and C2.ncertificado =R.ncertificado
  1368.               and O2.estatusordenes in (1,2,3)
  1369.               ) consumidoorden,CE.id certificadoid
  1370.               FROM App\Entity\Riesgoscubiertos R
  1371.               inner join App\Entity\Contratos CO WITH CO.id = R.contratos
  1372.               inner join App\Entity\Certificados CE WITH CE.ncertificado = R.ncertificado and CE.contratos = R.contratos
  1373.               where R.clientes=?1
  1374.               and R.contratos = ?2
  1375.               and CO.estatuscontratos = 2
  1376.               and CE.fechaanulacion is null
  1377.               and CE.estatus = 1
  1378.               and R.tiposervicios =?3
  1379.               order by R.cantidadmaxservicios asc");
  1380.          $query->setParameter(1$cliente);
  1381.          $query->setParameter(2$ordene->getContratos());
  1382.          $query->setParameter(3$ordene->getTiposervicios());
  1383.          $query->setParameter(4$ordene->getId());
  1384.          $serviciosdisponibles=$query->execute();
  1385.       
  1386.             
  1387.           
  1388.          $consumos $entityManager->getRepository(Ordenesagotamiento::class)
  1389.                 ->findBy(array('ordenes'=>$ordene));
  1390.           $serviciosorden $entityManager->getRepository(Ordenservicios::class)
  1391.                 ->findBy(array('ordenes'=>$ordene));
  1392.         
  1393.         
  1394.   
  1395.         return $this->render('ordenes/showaps.html.twig', [
  1396.             'ordene' => $ordene,
  1397.             'trazaslist' => $trazaslist,
  1398.             'facturaslist' =>$facturaslist,
  1399.             'form' => $form->createView(),
  1400.             'formfacturaorden' =>$formfacturaorden->createView(),
  1401.             'usuariosasignar' => $usuariosasignar,
  1402.             'serviciosdisponibles' =>$serviciosdisponibles,
  1403.             'consumos' =>$consumos,
  1404.             'serviciosorden' =>$serviciosorden,
  1405.             'causasrechazos' =>$causasrechazos,
  1406.         ]);
  1407.     }
  1408.     public function imprimir(Ordenes $ordeneEntityManagerInterface $entityManager,Request $request): Response
  1409.     {
  1410.         $pdfOptions = new Options();
  1411.         $servicios null;
  1412.         $pdfOptions->setIsRemoteEnabled(true);
  1413.         echo $request->getHost();
  1414.    
  1415.         $pdfOptions->set('defaultFont''Arial');
  1416.         if ($ordene->getTipo()=="APS")
  1417.         {
  1418.            $servicios $entityManager->getRepository(Ordenservicios::class)
  1419.                 ->findBy(array('ordenes'=>$ordene)); 
  1420.         }
  1421.         // Crea una instancia de Dompdf con nuestras opciones
  1422.         $dompdf = new Dompdf($pdfOptions);
  1423.         $session $request->getSession();
  1424.         $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.";
  1425.         $qrCode = new QrCode($data); 
  1426. header('Content-Type: '.$qrCode->getContentType());
  1427. $salida=base64_encode($qrCode->writeString());
  1428.         
  1429.         $html$this->renderView('ordenes/impresa.html.twig', [
  1430.             'ordene' => $ordene,
  1431.             'serviciosorden' =>$servicios,
  1432.             'qr'=>$salida,
  1433.         ]);
  1434.         // Cargar HTML en Dompdf
  1435.         $dompdf->loadHtml($html);
  1436. //        $dompdf->getOptions()->setChroot($this->projectDir . DIRECTORY_SEPARATOR . 'www');
  1437.         
  1438.         // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  1439.         $dompdf->setPaper('A4''portrait');
  1440.         // Renderiza el HTML como PDF
  1441.         $dompdf->render();
  1442.         // Envíe el PDF generado al navegador (descarga forzada)
  1443.         $dompdf->stream("orden_".$ordene->getId().".pdf", [
  1444.             "Attachment" => false
  1445.         ]);
  1446.     }
  1447.     /**
  1448.      * @Route("/{id}/edit", name="ordenes_edit", methods={"GET", "POST"})
  1449.      */
  1450.     public function edit(Request $requestOrdenes $ordeneEntityManagerInterface $entityManager): Response
  1451.     {
  1452.         $form $this->createForm(OrdenesType::class, $ordene);
  1453.         $form->handleRequest($request);
  1454.         if ($form->isSubmitted() && $form->isValid()) {
  1455.             $entityManager->flush();
  1456.             return $this->redirectToRoute('ordenes_edit',array('id'=>$ordene->getId()));
  1457.         }
  1458.         return $this->renderForm('ordenes/edit.html.twig', [
  1459.             'ordene' => $ordene,
  1460.             'form' => $form,
  1461.         ]);
  1462.     }
  1463.     /**
  1464.      * @Route("/{id}", name="ordenes_delete", methods={"POST"})
  1465.      */
  1466.     public function delete(Request $requestOrdenes $ordeneEntityManagerInterface $entityManager): Response
  1467.     {
  1468.         if ($this->isCsrfTokenValid('delete'.$ordene->getId(), $request->request->get('_token'))) {
  1469.             $entityManager->remove($ordene);
  1470.             $entityManager->flush();
  1471.         }
  1472.         return $this->redirectToRoute('ordenes_index', [], Response::HTTP_SEE_OTHER);
  1473.     }
  1474. }