src/Controller/ContratosController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contratos;
  4. use App\Entity\Estatuscontratos;
  5. use App\Entity\Clientes;
  6. use App\Entity\Tiporiesgo;
  7. use App\Entity\Movimientosrecibos;
  8. use App\Entity\Insumosservicios;
  9. use App\Entity\Afiliados;
  10. use App\Entity\Descuentos;
  11. use App\Entity\Planseleccionado;
  12. use App\Entity\Estatusrecibos;
  13. use App\Entity\Movimientosporfacturar;
  14. use App\Entity\Planeserviciostarifas;
  15. use App\Entity\Planes;
  16. use App\Entity\Cotizaciones;
  17. use App\Entity\Planesservicios;
  18. use App\Entity\Planesserviciostarifas;
  19. use App\Entity\Usuarios;
  20. use App\Entity\Recibos;
  21. use App\Model\Cliente;
  22. use App\Model\Afiliado;
  23. use App\Model\Descuento;
  24. use App\Model\Recibo;
  25. use App\Model\Riesgocubierto;
  26. use App\Model\Certificado;
  27. use App\Model\Contrato;
  28. use App\Entity\Certificados;
  29. use App\Form\ContratosType;
  30. use App\Form\LoadFileTxt;
  31. use Doctrine\ORM\EntityManagerInterface;
  32. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  33. use Symfony\Component\HttpFoundation\Request;
  34. use Symfony\Component\HttpFoundation\Response;
  35. use Symfony\Component\Routing\Annotation\Route;
  36. use Dompdf\Dompdf;
  37. use Dompdf\Options;
  38. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  39. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  40. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  41. class ContratosController extends AbstractController
  42. {
  43. /**
  44.  * @Route("/", name="contratos_index", methods={"GET"})
  45.  */
  46. public function index(EntityManagerInterface $entityManager,Request $request): Response
  47. {
  48. $tipoid=trim($request->request->get('tipoid'));
  49. $cedula=trim($request->request->get('cedula'));
  50. $ncontrato=trim($request->request->get('ncontrato'));
  51. $arreglo = array();
  52. $where="";
  53. $querybase="select CO.id,CO.fecharegistro,CO.fechaestatus,TC.descripcion tipocontrato,
  54.     TF.descripcion tipofacturacion, CL.nombresrazonsocial clientes,
  55.     CL.tipoid tipoid,CL.numid numid,EC.descripcion estatuscontratos ,CO.vip
  56.               FROM App\Entity\Contratos CO
  57.               JOIN App\Entity\Clientes CL WITH CL.id = CO.clientes
  58.               JOIN App\Entity\Tipocontrato TC WITH TC.id = CO.tipocontrato
  59.               JOIN App\Entity\Tipofacturacion TF WITH TF.id = CO.tipofacturacion
  60.               JOIN App\Entity\Estatuscontratos EC WITH EC.id = CO.estatuscontratos";
  61.         $arreglo = array();
  62.         $where="";
  63. if ($request->getMethod()=="POST")
  64. {
  65.     if($tipoid!="-")
  66.     {
  67.         $arreglo array_merge($arreglo, array('tipoid' => $tipoid));
  68.         if($where=="")
  69.             $where=" where CL.tipoid=:tipoid";
  70.         else
  71.             $where=$where.=" and CL.tipoid=:tipoid";
  72.     }
  73.     if($cedula!="")
  74.     {
  75.         $arreglo array_merge($arreglo, array('numid' => $cedula));
  76.         if($where=="")
  77.             $where=" where CL.numid=:numid";
  78.         else
  79.             $where=$where.=" and CL.numid=:numid";
  80.     }
  81.     if($ncontrato!="")
  82.     {
  83.         $arreglo array_merge($arreglo, array('ncontrato' => $ncontrato));
  84.         if($where=="")
  85.             $where=" where CO.id=:ncontrato";
  86.         else
  87.             $where=$where.=" and CO.id=:ncontrato";
  88.     }
  89. }
  90.  $where=$where.=" order by CO.fecharegistro DESC";
  91.         $query $entityManager->createQuery($querybase.=$where)
  92.               ->setParameters($arreglo);
  93.         $contratos=$query->execute();
  94. return $this->render('contratos/index.html.twig', [
  95. 'contratos' => $contratos,
  96. 'tipoid' => $tipoid,
  97. 'cedula' => $cedula,
  98. 'ncontrato' =>  $ncontrato,
  99. ]);
  100. }
  101. public function indicadores(Contratos $contrato,EntityManagerInterface $entityManager,Request $request): Response
  102. {
  103. $tipoid=trim($request->request->get('tipoid'));
  104. $cedula=trim($request->request->get('cedula'));
  105. $ncontrato=$contrato->getId();
  106. $querybase="select CO.id,CO.fecharegistro,CO.fechaestatus,TC.descripcion tipocontrato,
  107.     TF.descripcion tipofacturacion, CL.nombresrazonsocial clientes,
  108.     CL.tipoid tipoid,CL.numid numid,EC.descripcion estatuscontratos ,CO.vip
  109.               FROM App\Entity\Contratos CO
  110.               JOIN App\Entity\Certificados CER WITH CER.contratos = CO.id
  111.               JOIN App\Entity\Clientes CL WITH CO.clientes = CL.id
  112.               JOIN App\Entity\Tipocontrato TC WITH TC.id = CO.tipocontrato
  113.               JOIN App\Entity\Tipofacturacion TF WITH TF.id = CO.tipofacturacion
  114.               JOIN App\Entity\Estatuscontratos EC WITH EC.id = CO.estatuscontratos
  115.               where CER.ncertificado=0
  116.               and CO.id=".$contrato->getId();
  117.             $querybaseresumen="select EST.descripcion as estatus ,count(O.id) as cantidad,ROUND(SUM(O.montoautorizado/O.tasacambio),2) as totaldolar
  118.               FROM App\Entity\Ordenes O
  119.               JOIN App\Entity\Estatusordenes EST WITH O.estatusordenes = EST.id
  120.               where EST.id in (1,2,3)
  121.               and O.contratos=".$contrato->getId().
  122.               " GROUP BY O.estatusordenes";
  123.         $query $entityManager->createQuery($querybase);
  124.         $contratos=$query->execute();
  125.         
  126.         $query2 $entityManager->createQuery($querybaseresumen);
  127.         $resumen=$query2->execute();
  128.         
  129.         $querybasetipoorden="select O.tipo as tipoorden ,count(O.id) as cantidad,ROUND(SUM(O.montoautorizado/O.tasacambio),2) as totaldolar
  130.               FROM App\Entity\Ordenes O
  131.               where O.estatusordenes in (1,2,3)
  132.               and O.contratos=".$contrato->getId().
  133.               " GROUP BY O.tipo";
  134.         $query3 $entityManager->createQuery($querybasetipoorden);
  135.         $resumentipoordenes=$query3->execute();
  136.         $querybasetiposervicios="select TS.descripcion as tiposervicio ,count(O.id) as cantidad,ROUND(SUM(O.montoautorizado/O.tasacambio),2) as totaldolar
  137.               FROM App\Entity\Ordenes O
  138.               JOIN App\Entity\Tiposervicios TS WITH O.tiposervicios = TS.id
  139.               where O.estatusordenes in (1,2,3)
  140.               and O.contratos=".$contrato->getId().
  141.               " GROUP BY O.tiposervicios";
  142.         $query4 $entityManager->createQuery($querybasetiposervicios);
  143.         $resumentiposervicios=$query4->execute();
  144. return $this->render('contratos/indicadores.html.twig', [
  145. 'contratos' => $contratos,
  146. 'tipoid' => $tipoid,
  147. 'cedula' => $cedula,
  148. 'ncontrato' =>  $ncontrato,
  149. 'resumenordenes' => $resumen,
  150. 'resumentipoordenes' => $resumentipoordenes,
  151. 'resumentiposervicios' => $resumentiposervicios
  152.     
  153. ]);
  154. }
  155.    public function serviciosporordenesexcel(Contratos $contrato,Request $request,EntityManagerInterface $entityManager)
  156.     {
  157.         $session=$request->getSession();
  158.         $spreadsheet = new Spreadsheet();
  159.         
  160.         /* @var $sheet \PhpOffice\PhpSpreadsheet\Writer\Xlsx\Worksheet */
  161.         $sheet $spreadsheet->getActiveSheet();
  162.         $sheet->setCellValue('A1''Cod Proveedor');
  163.         $sheet->setCellValue('B1''Proveedor');
  164.         $sheet->setCellValue('C1''Afiliado');
  165.         $sheet->setCellValue('D1''Tipo Id');
  166.         $sheet->setCellValue('E1''Numid');
  167.         $sheet->setCellValue('F1''Sexo');
  168.         $sheet->setCellValue('G1''N° Orden');
  169.         $sheet->setCellValue('H1''Monto Autorizado Bs');
  170.         $sheet->setCellValue('I1''Tasa');
  171.         $sheet->setCellValue('J1''Fecha Orden');
  172.         $sheet->setCellValue('K1''Monto Autorizado $');
  173.         $sheet->setCellValue('L1''Tipo Orden');
  174.         $sheet->setCellValue('m1''Cod servicio');
  175.         $sheet->setCellValue('n1''Servicio');
  176.         $sheet->setCellValue('o1''Cod Diagnóstico');
  177.         $sheet->setCellValue('p1''Diagnóstico');
  178.         $sheet->setCellValue('q1''Cod Unidad');
  179.         $sheet->setCellValue('r1''Unidad');
  180.         $sheet->setCellValue('s1''Cod Motivo');
  181.         $sheet->setCellValue('t1''Motivo');
  182.         $sheet->setCellValue('u1''Servicio Bs');
  183.         $sheet->setCellValue('v1''Servicio $');
  184.         $sheet->setCellValue('w1''Estatus');
  185.         $spreadsheet->getActiveSheet()->getStyle('A1:W1')->getFont()->setBold(true)->setSize(12);
  186.          $spreadsheet->setActiveSheetIndex(0)
  187.        ->getStyle('A1')
  188.        ->getFill()
  189.        ->getStartColor()
  190.        ->setRGB('808080');
  191.         $spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
  192.         $spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
  193.         $spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
  194.         $spreadsheet->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
  195.         $spreadsheet->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
  196.         $spreadsheet->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
  197.         $spreadsheet->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
  198.         $spreadsheet->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
  199.         $spreadsheet->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
  200.         $spreadsheet->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
  201.         $spreadsheet->getActiveSheet()->getColumnDimension('K')->setAutoSize(true);
  202.         $spreadsheet->getActiveSheet()->getColumnDimension('L')->setAutoSize(true);
  203.         $spreadsheet->getActiveSheet()->getColumnDimension('M')->setAutoSize(true);
  204.         
  205.          $spreadsheet->getActiveSheet()->getColumnDimension('N')->setAutoSize(true);
  206.         $spreadsheet->getActiveSheet()->getColumnDimension('O')->setAutoSize(true);
  207.         $spreadsheet->getActiveSheet()->getColumnDimension('P')->setAutoSize(true);
  208.         $spreadsheet->getActiveSheet()->getColumnDimension('Q')->setAutoSize(true);
  209.         $spreadsheet->getActiveSheet()->getColumnDimension('R')->setAutoSize(true);
  210.         $spreadsheet->getActiveSheet()->getColumnDimension('S')->setAutoSize(true);
  211.         $spreadsheet->getActiveSheet()->getColumnDimension('T')->setAutoSize(true);
  212.         $spreadsheet->getActiveSheet()->getColumnDimension('U')->setAutoSize(true);
  213.         
  214.         $spreadsheet->getActiveSheet()->getColumnDimension('V')->setAutoSize(true);
  215.         $spreadsheet->getActiveSheet()->getColumnDimension('W')->setAutoSize(true);
  216.         $sheet->setTitle("Resumen de Órdenes de Servicio");
  217.         $querybase="select PR.id as codproveedor,
  218. PR.nombresrazonsocial as proveedor, 
  219. C.nombresrazonsocial  as cliente,
  220. C.tipoid,C.numid,C.sexo,O.id as norden, 
  221. ROUND(O.montoautorizado,2) as montoautorizadoordenbs, 
  222. ROUND(O.tasacambio ,2)  as tasacambio, 
  223. DATE_FORMAT(O.fechaservicio,'%d-%m-%Y') as fechaorden,
  224. ROUND((O.montoautorizado/O.tasacambio),2)  as montoautorizadoordendolares ,
  225. O.tipo as tipoorden,
  226. OS.codservicio,
  227. BC.descripcion as descservicio,
  228. PA.id as coddiagnostico,
  229. PA.descripcion as descdiagnostico,
  230. UN.id as codunidad,
  231. UN.descripcion as descunidad,
  232. MC.id as codmotivoconsulta,
  233. MC.descripcion as descmotivoconsulta,
  234. ROUND((OS.monto),2) as montoserviciobolivares,
  235. ROUND((OS.monto/O.tasacambio),2) as montoserviciodolares,
  236. EO.descripcion as estatusorden
  237. ,EO.id, CO.id as ncontrato
  238.               FROM App\Entity\Ordenes O
  239.               JOIN App\Entity\Contratos CO WITH O.contratos = CO.id
  240.               JOIN App\Entity\Ordenservicios OS WITH OS.ordenes = O.id
  241.               JOIN App\Entity\Baremocatalogoaps BC WITH OS.codservicio = BC.id
  242.               JOIN App\Entity\Clientes C WITH O.clientes = C.id
  243.               JOIN App\Entity\Estatusordenes EO WITH EO.id = O.estatusordenes
  244.               JOIN App\Entity\Patologias PA WITH PA.id = O.patologias
  245.               JOIN App\Entity\Unidades UN WITH UN.id = O.unidades
  246.               JOIN App\Entity\Proveedores PR WITH PR.id = O.proveedores
  247.               JOIN App\Entity\Motivosconsulta MC WITH MC.id = O.motivoscosulta
  248.               where O.contratos=".$contrato->getId();
  249.         $query3 $entityManager->createQuery($querybase);
  250.         $afiliados $query3->getResult();
  251.         $index=2;
  252.         foreach ($afiliados as $afiliado)
  253.         {
  254.            $sheet->setCellValue('A'.$index$afiliado['codproveedor']);
  255.            $sheet->setCellValue('B'.$index$afiliado['proveedor']);
  256.            $sheet->setCellValue('C'.$index$afiliado['cliente']);
  257.            $sheet->setCellValue('D'.$index$afiliado['tipoid']);
  258.            $sheet->setCellValue('E'.$index$afiliado['numid']);
  259.            $sheet->setCellValue('F'.$index$afiliado['sexo']);
  260.            $sheet->setCellValue('G'.$index$afiliado['norden']);
  261.            $sheet->setCellValue('H'.$index$afiliado['montoautorizadoordenbs']);
  262.            $sheet->setCellValue('I'.$index$afiliado['tasacambio']);
  263.            $sheet->setCellValue('J'.$index$afiliado['fechaorden']);
  264.            $sheet->setCellValue('K'.$index$afiliado['montoautorizadoordendolares']);
  265.            $sheet->setCellValue('L'.$index$afiliado['tipoorden']);
  266.            $sheet->setCellValue('M'.$index$afiliado['codservicio']);
  267.            $sheet->setCellValue('N'.$index$afiliado['descservicio']);
  268.            $sheet->setCellValue('O'.$index$afiliado['coddiagnostico']);
  269.            $sheet->setCellValue('P'.$index$afiliado['descdiagnostico']);
  270.            $sheet->setCellValue('Q'.$index$afiliado['codunidad']);
  271.            $sheet->setCellValue('R'.$index$afiliado['descunidad']);
  272.            $sheet->setCellValue('S'.$index$afiliado['codmotivoconsulta']);
  273.            $sheet->setCellValue('T'.$index$afiliado['descmotivoconsulta']);
  274.            $sheet->setCellValue('U'.$index$afiliado['montoserviciobolivares']);
  275.            $sheet->setCellValue('V'.$index$afiliado['montoserviciodolares']);
  276.            $sheet->setCellValue('W'.$index$afiliado['estatusorden']);
  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 'resumen_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. /**
  294.  * @Route("/new", name="contratos_new", methods={"GET", "POST"})
  295.  */
  296. public function new(Request $requestEntityManagerInterface $entityManager): Response
  297. {
  298. $contrato = new Contratos();
  299. $session=$request->getSession();
  300. $form $this->createForm(ContratosType::class, $contrato);
  301. $form->handleRequest($request);
  302. $estatuscontratos $entityManager->getRepository(Estatuscontratos::class)->find(1);
  303. $riesgo $entityManager->getRepository(Tiporiesgo::class)->find(1);
  304. $contrato->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  305. $contrato->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
  306. $contrato->setEstatuscontratos($estatuscontratos);
  307. $contrato->setTiporiesgo($riesgo);
  308. $contrato->setVip(0);
  309. $session $request->getSession();
  310. $usuarioconectado $session->get('userid');
  311. $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  312. $contrato->setUsuarios($usuario);
  313. $tipoid=trim($request->request->get('tipoid'));
  314. $cedula=trim($request->request->get('numid'));
  315. $plan=trim($request->request->get('valorseleccionado'));
  316.       $planes $entityManager
  317.             ->getRepository(Planes::class)
  318.             ->findBy(array('estatus'=>'1'));
  319.         $planesservicios $entityManager
  320.             ->getRepository(Planesservicios::class)
  321.             ->findBy(array('estatus'=>'1'));
  322.       
  323. if ($form->isSubmitted() && $form->isValid()) 
  324. {
  325. $cliente $entityManager->getRepository(Clientes::class)
  326.             ->findOneBy(array('tipoid'=>$tipoid,'numid'=>$cedula));
  327. if(!$cliente)
  328. {
  329.    $session->getFlashBag()->add('warning','No existe el cliente. Debe crear el cliente y luego el contrato  !.');
  330.    return $this->renderForm('contratos/new.html.twig', [
  331. 'contrato' => $contrato,
  332. 'form' => $form,
  333. 'planesservicios' => $planesservicios,
  334.  'planes' => $planes,
  335. ]);
  336. }
  337. $contrato->setClientes($cliente);
  338. $entityManager->persist($contrato);
  339. $entityManager->flush();
  340. Certificado::CrearCertificadoCero($contrato$entityManager);
  341. if($plan)
  342. {   
  343.         $plan $entityManager->getRepository(Planes::class)->find($plan);
  344.         $planesservicios $entityManager->getRepository(Planesservicios::class)
  345.                 ->findBY(array('planes'=>$plan->getId()));
  346.         foreach ($planesservicios as $planserv)
  347.         {
  348.         $planseleccionado= new Planseleccionado();
  349.         $planseleccionado->setPlanesservicios($planserv);
  350.         $planseleccionado->setContratos($contrato);
  351.         $planseleccionado->setUsuarios($usuario);
  352.         $planseleccionado->setMontoprima(1);
  353.         $entityManager->persist($planseleccionado);
  354.         $entityManager->flush();
  355.         }
  356.  }
  357.  else
  358.  {
  359.      $session->getFlashBag()->add('warning','Debe seleccionar un Plan  !.');
  360.    return $this->renderForm('contratos/new.html.twig', [
  361. 'contrato' => $contrato,
  362. 'form' => $form,
  363. 'planesservicios' => $planesservicios,
  364.  'planes' => $planes,
  365. ]);
  366.  }
  367.             
  368.         
  369. return $this->redirectToRoute('contratos_index', [], Response::HTTP_SEE_OTHER);
  370. }
  371. return $this->renderForm('contratos/new.html.twig', [
  372. 'contrato' => $contrato,
  373. 'form' => $form,
  374.      'planesservicios' => $planesservicios,
  375.             'planes' => $planes,
  376. ]);
  377. }
  378. public function cargamasiva(Contratos $contratoRequest $requestEntityManagerInterface $entityManager): Response
  379. {
  380. $entityManager $this->getDoctrine()->getManager();
  381. $form $this->createForm(LoadFileTxt::class, null, array('csrf_protection' => true,
  382.  'action' => $this->generateUrl('contratos_loadfiletxt', array('id' => $contrato->getId())),
  383.  'method' => 'POST'));
  384. $recibos $entityManager
  385. ->getRepository(Recibos::class)->findBy(array('contratos' => $contrato));
  386. $certificados $entityManager
  387. ->getRepository(Certificados::class)->findBy(array('contratos' => $contrato));
  388. $afiliados $entityManager
  389. ->getRepository(Afiliados::class)->findBy(array('contratos' => $contrato));
  390. $query "select  sum(PLS.montoprima) prima,PL.id planid
  391.               FROM App\Entity\Planseleccionado PLS
  392.               JOIN App\Entity\Planesservicios PS WITH PS.id = PLS.planesservicios
  393.               JOIN App\Entity\Planes PL WITH PL.id = PS.planes
  394.               where PLS.contratos=?1
  395.               group by PL.id";
  396. $query3 $entityManager->createQuery($query);
  397. $query3->setParameter(1$contrato);
  398. $plansuma $query3->getResult();
  399. $planseleccionado $plansuma[0]['planid'];
  400. if ($planseleccionado!="")
  401. {
  402. $planseleccionado $planseleccionado;
  403. $plan $entityManager
  404. ->getRepository(Planes::class)
  405. ->find($planseleccionado);
  406. $planesservicios $entityManager
  407. ->getRepository(Planesservicios::class)
  408. ->findBy(array('planes' => $plan));
  409. }
  410. return $this->render('contratos/cargamasiva.html.twig', [
  411. 'contrato' => $contrato,
  412.  'afiliados' => $afiliados,
  413.  'form' => $form->createView(),
  414. ]);
  415. }
  416. public function exclusiones(Contratos $contratoRequest $requestEntityManagerInterface $entityManager): Response
  417. {
  418. $entityManager $this->getDoctrine()->getManager();
  419. $afiliados $entityManager
  420. ->getRepository(Afiliados::class)->findBy(array('contratos' => $contrato));
  421. $certificados $entityManager
  422. ->getRepository(Certificados::class)->findBy(array('contratos' => $contrato));
  423. return $this->render('contratos/exclusiones.html.twig', [
  424. 'contrato' => $contrato,
  425.  'afiliados' => $afiliados,
  426.  'certificados' => $certificados,
  427. ]);
  428. }
  429. /**
  430.  * @Route("/{id}", name="contratos_show", methods={"GET"})
  431.  */
  432. public function show(Contratos $contrato): Response
  433. {
  434. $entityManager $this->getDoctrine()->getManager();
  435. $afiliados null;
  436. $certificados null;
  437. $plan null;
  438. $planesservicios null;
  439. $plansuma null;
  440. $insumosservicios null;
  441. $movimientosporfacturar null;
  442. $descuentos null;
  443. $recibos $entityManager
  444. ->getRepository(Recibos::class)->findBy(array('contratos' => $contrato));
  445. if ($contrato->getTipocontrato()->getId()!="3")
  446. {
  447. $certificados $entityManager
  448. ->getRepository(Certificados::class)->findBy(array('contratos' => $contrato));
  449. $afiliados $entityManager
  450. ->getRepository(Afiliados::class)->findBy(array('contratos' => $contrato));
  451. $query "select  sum(PLS.montoprima) prima,PL.id planid,PL.descripcion nombreplan
  452.               FROM App\Entity\Planseleccionado PLS
  453.               JOIN App\Entity\Planesservicios PS WITH PS.id = PLS.planesservicios
  454.               JOIN App\Entity\Planes PL WITH PL.id = PS.planes
  455.               where PLS.contratos=?1
  456.               group by PL.id";
  457. $query3 $entityManager->createQuery($query);
  458. $query3->setParameter(1$contrato);
  459. $plansuma $query3->getResult();
  460. $plansuma $plansuma[0];
  461. $planseleccionado $plansuma['planid'];
  462. $descripcionplan $plansuma['nombreplan'];
  463. if ($planseleccionado!="")
  464. {
  465. $planseleccionado $planseleccionado;
  466. $plan $entityManager
  467. ->getRepository(Planes::class)
  468. ->find($planseleccionado);
  469. $planesservicios $entityManager
  470. ->getRepository(Planesservicios::class)
  471. ->findBy(array('planes' => $plan));
  472. $movimientosporfacturar $entityManager
  473. ->getRepository(Movimientosporfacturar::class)
  474. ->findBy(array('contratos' => $contrato));
  475. $descuentos $entityManager
  476. ->getRepository(Descuentos::class)
  477. ->findBy(array('contratos' => $contrato));
  478. }
  479. }
  480. else
  481. {
  482. $insumosservicios $entityManager
  483. ->getRepository(Insumosservicios::class)
  484. ->findBy(array('contratos' => $contrato));
  485. $query "select  TB.id,TB.descripcion,INS.cantidad as cantidad ,SUM(INS.preciounitario) as precio,(SUM(INS.preciounitario)*INS.cantidad)total
  486.               FROM App\Entity\Insumosservicios INS
  487.               JOIN App\Entity\Tipobaremos TB WITH TB.id = INS.tipobaremos
  488.               where TB.estatus=1
  489.               and INS.contratos=?1
  490.               group by TB.id,TB.descripcion,INS.cantidad";
  491. $query3 $entityManager->createQuery($query);
  492. $query3->setParameter(1$contrato);
  493. $insumosservicios $query3->getResult();
  494. }
  495. return $this->render('contratos/show.html.twig', [
  496. 'contrato' => $contrato,
  497.  'recibos' => $recibos,
  498.  'afiliados' => $afiliados,
  499.  'certificados' => $certificados,
  500.  'plan' => $plan,
  501.  'planesservicios' => $planesservicios,
  502.  'plansuma' => $plansuma,
  503.  'insumosservicios' => $insumosservicios,
  504.  'movimientosporfacturar' => $movimientosporfacturar,
  505.  'descuentos' => $descuentos,
  506. ]);
  507. }
  508. public function printpdf(Contratos $contratoRequest $request): Response
  509. {
  510. $pdfOptions = new Options();
  511. $pdfOptions->setIsRemoteEnabled(true);
  512. $pdfOptions->set('defaultFont''Arial');
  513. $entityManager $this->getDoctrine()->getManager();
  514. $afiliados null;
  515. $certificados null;
  516. $plan null;
  517. $planesservicios null;
  518. $plansuma null;
  519. $insumosservicios null;
  520. // Crea una instancia de Dompdf con nuestras opciones
  521. $dompdf = new Dompdf($pdfOptions);
  522. $session $request->getSession();
  523. $recibos $entityManager
  524. ->getRepository(Recibos::class)->findBy(array('contratos' => $contrato));
  525. if ($contrato->getTipocontrato()->getId()!="3")
  526. {
  527. $certificados $entityManager
  528. ->getRepository(Certificados::class)->findBy(array('contratos' => $contrato));
  529. $afiliados $entityManager
  530. ->getRepository(Afiliados::class)->findBy(array('contratos' => $contrato));
  531. $query "select  sum(PLS.montoprima) prima,PL.id planid
  532.               FROM App\Entity\Planseleccionado PLS
  533.               JOIN App\Entity\Planesservicios PS WITH PS.id = PLS.planesservicios
  534.               JOIN App\Entity\Planes PL WITH PL.id = PS.planes
  535.               where PLS.contratos=?1
  536.               group by PL.id";
  537. $query3 $entityManager->createQuery($query);
  538. $query3->setParameter(1$contrato);
  539. $plansuma $query3->getResult();
  540. $plansuma $plansuma[0];
  541. $planseleccionado $plansuma['planid'];
  542. if ($planseleccionado!="")
  543. {
  544. $planseleccionado $planseleccionado;
  545. $plan $entityManager
  546. ->getRepository(Planes::class)
  547. ->find($planseleccionado);
  548. $planesservicios $entityManager
  549. ->getRepository(Planesservicios::class)
  550. ->findBy(array('planes' => $plan));
  551. }
  552. }
  553. else
  554. {
  555. $insumosservicios $entityManager
  556. ->getRepository(Insumosservicios::class)
  557. ->findBy(array('contratos' => $contrato));
  558. $query "select  TB.id,TB.descripcion,INS.cantidad as cantidad ,SUM(INS.preciounitario) as precio,(SUM(INS.preciounitario)*INS.cantidad)total
  559.               FROM App\Entity\Insumosservicios INS
  560.               JOIN App\Entity\Tipobaremos TB WITH TB.id = INS.tipobaremos
  561.               where TB.estatus=1
  562.               and INS.contratos=?1
  563.               group by TB.id,TB.descripcion,INS.cantidad";
  564. $query3 $entityManager->createQuery($query);
  565. $query3->setParameter(1$contrato);
  566. $insumosservicios $query3->getResult();
  567. }
  568. $html $this->renderView('contratos/printcontrato.html.twig', [
  569. 'contrato' => $contrato,
  570.  'recibos' => $recibos,
  571.  'afiliados' => $afiliados,
  572.  'certificados' => $certificados,
  573.  'plan' => $plan,
  574.  'planesservicios' => $planesservicios,
  575.  'plansuma' => $plansuma,
  576.  'insumosservicios' => $insumosservicios,
  577. ]);
  578. // Cargar HTML en Dompdf
  579. $dompdf->loadHtml($html);
  580. //        $dompdf->getOptions()->setChroot($this->projectDir . DIRECTORY_SEPARATOR . 'www');
  581. // (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
  582. $dompdf->setPaper('A4''portrait');
  583. // Renderiza el HTML como PDF
  584. $dompdf->render();
  585. // Envíe el PDF generado al navegador (descarga forzada)
  586. $dompdf->stream("contrato_".$contrato->getId().".pdf", [
  587. "Attachment" => false
  588. ]);
  589. }
  590. public function loadfile(Contratos $contratoRequest $request): Response
  591. {
  592. $fechaefectiva = new \DateTime(date("Y-m-d"));
  593. $form $this->createForm(LoadFileTxt::class, null, array('csrf_protection' => true));
  594. $session $request->getSession();
  595. $form->handleRequest($request);
  596. if ($form->isSubmitted()) {
  597. //            var_dump($form);
  598. if ($form->isValid()) {
  599. $entityManager $this->getDoctrine()->getManager();
  600. $cot $entityManager
  601. ->getRepository(Cotizaciones::class)->find(53);
  602. $fileData $form->getData()['upload_file'];
  603. if ($fileData) {
  604. $file file_get_contents($fileData->getPathname());
  605. $rows explode("\n"$file);
  606. array_shift($rows);
  607. $certificadocero$entityManager
  608. ->getRepository(Certificados::class)
  609. ->findOneby(array('contratos' => $contrato));
  610. foreach($rows as $row => $data)
  611. {
  612. $row_data explode(';'$data);
  613. if (count($row_data)==16)
  614. {
  615. echo $row_data[0]."-".$row_data[1]." Nombres: ".$row_data[2]." ".$row_data[3]."<br>";
  616. $existecliente Cliente::existe($row_data[0], $row_data[1], $entityManager);
  617. $ncertificado $row_data[14];
  618. $indtitular $row_data[15];
  619. $fechaingreso =$row_data[5];
  620. if(!$existecliente)
  621. {
  622. $nombres =  utf8_encode($row_data[2]) ;
  623. $apellidos =utf8_encode($row_data[3]) ;
  624. $fechanacimiento =$row_data[4] ;
  625. $date = \DateTime::createFromFormat('d/m/Y'$fechanacimiento);
  626. $fechanacimiento=$date;
  627. $direccion =utf8_encode($row_data[13]);
  628. $email=utf8_encode($row_data[8]);
  629. $cliente Cliente::CrearClienteDetalle($row_data[0], $row_data[1], $nombres$apellidos,$fechanacimiento$row_data[9], $row_data[10], $row_data[11], $row_data[12], $email$direccion$row_data[7], $row_data[6], $entityManager);
  630. }
  631. else
  632. {
  633. $cliente $existecliente;
  634. }
  635. if ($cliente)
  636. {
  637. if ($indtitular==1)
  638. {
  639. $existe Certificado::existe($contrato$cliente->getTipoid(), $cliente->getNumid(), $entityManager);
  640. if (!$existe)
  641. $certificado Certificado::CrearCertificado($contrato$cliente->getTipoid(), $cliente->getNumid(),$certificadocero$entityManager);
  642. else
  643. $certificado $existe;
  644. $ncertificado $certificado->getNcertificado();
  645. }
  646. $existeafiliado Afiliado::existe($contrato$cliente$ncertificado$entityManager);
  647. if (!$existeafiliado)
  648. {
  649. $afiliado = new Afiliados();
  650. $afiliado->setContratos($contrato);
  651. $afiliado->setClientes($cliente);
  652. $afiliado->setPatologia("N/A");
  653. $afiliado->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  654. $afiliado->setNcertificado($ncertificado);
  655. $afiliado->setIndtitular($indtitular==$indtitular null);
  656. $afiliado->setEstatus("1");
  657. $afiliado->setCotizaciones($cot);
  658. $afiliado->setSessionid($session->getId());
  659.   $date = \DateTime::createFromFormat('d/m/Y'$fechaingreso);
  660.                 $fechaingreso=$date;
  661.                 $afiliado->setFechaingreso($fechaingreso);
  662. $entityManager->persist($afiliado);
  663. $entityManager->flush();
  664. }
  665. $planseleccionado $entityManager
  666. ->getRepository(Planseleccionado::class)
  667. ->findBy(array('contratos' => $contrato));
  668. if (isset($planseleccionado))
  669. {
  670. foreach ($planseleccionado as $planselecc)
  671. {
  672. $existeriesgo Riesgocubierto::existe($contrato$cliente$ncertificado$planselecc->getPlanesservicios()->getTiposervicios(), $entityManager);
  673. if (!$existeriesgo)
  674. $riesgo Riesgocubierto::CrearRiesgo($cliente$contrato$certificado$planselecc$fechaefectiva$entityManager);
  675. }
  676. }
  677. }
  678. }
  679. }
  680. $this->generarmovimientosporfacturar($contrato$session->get("userid"),$request);
  681. } else {
  682. return new Response("filedata is null"400);
  683. }
  684. } else {
  685. //return new Response("No valid ".$form->getErrors(), 400);
  686.     $session->getFlashBag()->add(
  687. 'warning',
  688.  'El formato del archivo no es válido. Debe cargar un archivo en formato (.CSV) delimitado por (;).');
  689. return $this->redirect($this->generateUrl('contratos_cargamasiva', array('id' => $contrato->getId())));
  690. }
  691. } else {
  692. return new Response("not submitted"400);
  693. }
  694. //        return new Response("OK", 200);
  695. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId())));
  696. }
  697. private function generarmovimientosporfacturar(Contratos $contrato$usuarioconectado,$request)
  698. {
  699. $session $request->getSession();
  700. $entityManager $this->getDoctrine()->getManager();
  701. $entityManager->getConnection()->beginTransaction();
  702. try {
  703.     
  704. $planesserviciosselecionados $entityManager
  705. ->getRepository(Planseleccionado::class)
  706. ->findby(array('contratos' => $contrato));
  707. $afiliados $entityManager
  708. ->getRepository(Afiliados::class)
  709. ->findby(array('contratos' => $contrato));
  710. $cantidadafiliados count($afiliados);
  711. $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  712. if ($contrato->getTipofacturacion()->getId()=="1"$divisorprima 1;
  713. elseif ($contrato->getTipofacturacion()->getId()=="2"$divisorprima 2;
  714. else $divisorprima 12;
  715. $porcentajedescuento 0;
  716. $descuento Descuento::BuscarDescuentos($contrato->getTipocontrato(), $cantidadafiliados$entityManager);
  717. if ($descuento$porcentajedescuento $descuento[0]["descuento"];
  718. $montoprimasindescuentos 0;
  719. $montoprimacondescuento 0;
  720. foreach ($planesserviciosselecionados as $planesserviciosselecionado)
  721. {
  722. $movimientosporfacturar = new Movimientosporfacturar();
  723. $movimientosporfacturar->setContratos($contrato);
  724. $movimientosporfacturar->setPlanesservicios($planesserviciosselecionado->getPlanesservicios());
  725. $movimientosporfacturar->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  726. $planesserviciostarifa $entityManager
  727. ->getRepository(Planesserviciostarifas::class)
  728. ->findOneBy(array('planesservicios' => $planesserviciosselecionado->getPlanesservicios()));
  729. if($planesserviciostarifa)
  730. {
  731. $movimientosporfacturar->setMontoprima($planesserviciostarifa->getMontoprima());
  732. $movimientosporfacturar->setCantidadafiliados($cantidadafiliados);
  733. $movimientosporfacturar->setUsuarios($usuario);
  734. $montoprima $planesserviciostarifa->getMontoprima()/$divisorprima;
  735. $montoprimatotal $montoprima*$cantidadafiliados;
  736. $montoprimasindescuentos $montoprimasindescuentos+$montoprimatotal;
  737. if ($porcentajedescuento!=0)
  738. {
  739. $montoprimatotal $montoprimatotal-(($montoprimatotal*$porcentajedescuento)/100);
  740. $montoprimacondescuento $montoprimacondescuento+$montoprimatotal;
  741. }
  742. $movimientosporfacturar->setMontoprimatotal($montoprimatotal);
  743. $entityManager->persist($movimientosporfacturar);
  744. $entityManager->flush();
  745. }
  746. else
  747. {
  748. $entityManager->getConnection()->rollback();
  749. // Añadir mensajes flash
  750. $session->getFlashBag()->add(
  751. 'warning',
  752.  'No se encontro la tarifa para el servicio: '.$planesserviciosselecionado->getPlanesservicios()->getTiposervicios());
  753. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId())));
  754. }
  755. }
  756. if ($descuento)
  757. {
  758. $movdescuento = new Descuentos();
  759. $movdescuento->setContratos($contrato);
  760. $movdescuento->setPorcentajeaplicado($porcentajedescuento);
  761. $movdescuento->setMontooriginal($montoprimasindescuentos);
  762. $movdescuento->setMontofinal($montoprimacondescuento);
  763. $movdescuento->setCantidadafiliados($cantidadafiliados);
  764. $movdescuento->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  765. $entityManager->persist($movdescuento);
  766. $entityManager->flush();
  767. }
  768. $entityManager->getConnection()->commit();
  769. } catch (Exception $e)
  770. {
  771. $entityManager->getConnection()->rollback();
  772. }
  773. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId())));
  774. }
  775. public function facturarpoliza(Contratos $contratoRequest $requestEntityManagerInterface $entityManager): Response
  776. {
  777. $session $request->getSession();
  778.     $movimientosporfacturar $entityManager
  779. ->getRepository(Movimientosporfacturar::class)
  780. ->findby(array('contratos' => $contrato));
  781. if ($movimientosporfacturar)
  782. {
  783.    $session->getFlashBag()->add(
  784. 'warning',
  785.  'El contrato tiene movimientos pendientes por facturar, debe generar el recibo !');
  786. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId()))); 
  787. }
  788. $this->generarmovimientosporfacturar($contrato$session->get("userid"),$request);
  789. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId())));
  790. }
  791. public function excluircertificado(Request $requestEntityManagerInterface $entityManager): Response
  792. {
  793. $session $request->getSession();
  794. $clienteid $request->query->get("clienteid");
  795. $contratoid $request->query->get("contratoid");
  796. $ncertificado $request->query->get("ncertificado");
  797. //    var_dump($request->query);
  798. //    exit();
  799. $contrato $entityManager->getRepository(Contratos::class)->find($contratoid);
  800. $cliente $entityManager->getRepository(Clientes::class)->find($clienteid);
  801. $certificado $entityManager
  802. ->getRepository(Certificados::class)
  803. ->findOneBy(array('contratos' => $contrato'ncertificado' => $ncertificado'numid' => $ncertificado));
  804. if ($certificado)
  805. {
  806. $certificado->setEstatus("2");
  807. $certificado->setFechaanulacion(new \DateTime(date("Y-m-d H:i:s")));
  808. $certificado->setFechaestatus(new \DateTime(date("Y-m-d H:i:s")));
  809. $certificado->setCausaanulacion("01");
  810. $entityManager->persist($certificado);
  811. $entityManager->flush();
  812. $afiliados $entityManager
  813. ->getRepository(Afiliados::class)
  814. ->findBy(array('contratos' => $contrato'ncertificado' => $ncertificado));
  815. if ($afiliados)
  816. {
  817. foreach ($afiliados as $afiliado)
  818. {
  819. $afiliado->setEstatus("2");
  820. $afiliado->setFechaexclusion(new \DateTime(date("Y-m-d H:i:s")));
  821. $entityManager->persist($afiliado);
  822. $entityManager->flush();
  823. }
  824. }
  825. }
  826. $session->getFlashBag()->add(
  827.     'success',
  828.     'Se realizó la exclusión del Certificado y su grupo Afiliado de forma correcta !'
  829. );
  830. return $this->redirect($this->generateUrl('contratos_exclusiones', array('id' => $contrato->getId())));
  831. }
  832. public function excluirafiliado(Request $requestEntityManagerInterface $entityManager): Response
  833. {
  834. $session $request->getSession();
  835. $clienteid $request->query->get("clienteid");
  836. $contratoid $request->query->get("contratoid");
  837. $ncertificado $request->query->get("ncertificado");
  838. $nafiliado $request->query->get("nafiliado");
  839. $contrato $entityManager->getRepository(Contratos::class)->find($contratoid);
  840. $cliente $entityManager->getRepository(Clientes::class)->find($clienteid);
  841. $certificado $entityManager
  842. ->getRepository(Certificados::class)
  843. ->findOneBy(array('contratos' => $contrato'ncertificado' => $ncertificado'numid' => $ncertificado));
  844. if ($certificado)
  845. {
  846. $afiliados $entityManager
  847. ->getRepository(Afiliados::class)
  848. ->findBy(array('contratos' => $contrato'ncertificado' => $ncertificado,'clientes'=>$cliente,'id'=>$nafiliado));
  849. if ($afiliados)
  850. {
  851. foreach ($afiliados as $afiliado)
  852. {
  853. $afiliado->setEstatus("2");
  854. $afiliado->setFechaexclusion(new \DateTime(date("Y-m-d H:i:s")));
  855. $entityManager->persist($afiliado);
  856. $entityManager->flush();
  857. }
  858. }
  859. }
  860. $session->getFlashBag()->add(
  861.     'success',
  862.     'Se realizó la exclusión del Afiliado de forma correcta !'
  863. );
  864. return $this->redirect($this->generateUrl('contratos_exclusiones', array('id' => $contrato->getId())));
  865. }
  866. public function generarrecibo(Contratos $contratoRequest $request): Response
  867. {
  868. $indrenovarcontrato 0;
  869. $entityManager $this->getDoctrine()->getManager();
  870. $session $request->getSession();
  871. $entityManager->getConnection()->beginTransaction();
  872. try {
  873. $movimientosporfacturar $entityManager
  874. ->getRepository(Movimientosporfacturar::class)
  875. ->findby(array('contratos' => $contrato));
  876. $usuarioconectado $session->get('userid');
  877. $usuario $entityManager->getRepository(Usuarios::class)->find($usuarioconectado);
  878. $primarecibo 0;
  879. foreach ($movimientosporfacturar as $movimientoporfacturar)
  880. {
  881. $movimientosrecibos = new Movimientosrecibos();
  882. $movimientosrecibos->setContratos($contrato);
  883. $movimientosrecibos->setPlanesservicios($movimientoporfacturar->getPlanesservicios());
  884. $movimientosrecibos->setFecharegistro(new \DateTime(date("Y-m-d H:i:s")));
  885. $movimientosrecibos->setMontoprima($movimientoporfacturar->getMontoprima());
  886. $movimientosrecibos->setCantidadafiliados($movimientoporfacturar->getCantidadafiliados());
  887. $movimientosrecibos->setUsuarios($usuario);
  888. $movimientosrecibos->setMontoprimatotal($movimientoporfacturar->getMontoprimatotal());
  889. $entityManager->persist($movimientosrecibos);
  890. $entityManager->flush();
  891. $primarecibo $primarecibo+$movimientoporfacturar->getMontoprimatotal();
  892. }
  893. $moneda $contrato->getMonedas();
  894. $estatusrrecibos $entityManager->getRepository(Estatusrecibos::class)->find(1);
  895. $fechadefacturacion $entityManager
  896. ->getRepository(Certificados::class)
  897. ->findOneby(array('contratos' => $contrato,
  898.     'estatus' => '1'), 
  899. array('fechahasta' => 'DESC'));
  900. if ($fechadefacturacion)
  901. {
  902. $fechadesde $fechadefacturacion->getFechaproximafacturacion();
  903. //Si la fecha hasta es igual a la fecha de la proxima facturacion se debe renovar el contrat0
  904. if($fechadefacturacion->getFechahasta()->format('d-m-Y')==$fechadefacturacion->getFechaproximafacturacion()->format('d-m-Y'))
  905. {
  906. $indrenovarcontrato 1;
  907. if ($contrato->getTipovigencias()->getId()=="1")
  908. $nuevafechahastacertificados date('Y-m-d'strtotime($fechadefacturacion->getFechahasta()->format('Y-m-d') .'+ 1 year'));
  909. elseif($contrato->getTipovigencias()->getId()=="2")
  910. $nuevafechahastacertificados date('Y-m-d'strtotime($fechadefacturacion->getFechahasta()->format('Y-m-d') .'+ 6 months'));
  911. else
  912. $nuevafechahastacertificados date('Y-m-d'strtotime($fechadefacturacion->getFechahasta()->format('Y-m-d') .'+ 1 months'));
  913. }
  914. }
  915. else
  916. $fechadesde = new \DateTime(date("Y-m-d H:i:s"));
  917. $recibo Recibo::CrearRecibo($contrato$moneda$fechadesde$primarecibo$estatusrrecibos$entityManager);
  918. $movimientosrecibos $entityManager
  919. ->getRepository(Movimientosrecibos::class)
  920. ->findby(array('contratos' => $contrato'recibos' => null));
  921. foreach ($movimientosrecibos as $movimientorecibo)
  922. {
  923. $movimientorecibo->setRecibos($recibo);
  924. $entityManager->persist($movimientorecibo);
  925. $entityManager->flush();
  926. }
  927. foreach ($movimientosporfacturar as $movimientoporfacturar)
  928. {
  929. $entityManager->remove($movimientoporfacturar);
  930. $entityManager->flush();
  931. }
  932. $certificadosactivos $entityManager
  933. ->getRepository(Certificados::class)
  934. ->findBy(array('contratos' => $contrato'estatus' => '1'));
  935. foreach ($certificadosactivos as $certificado)
  936. {
  937. if ($indrenovarcontrato==1)
  938. {
  939. $certificado->setFechadesde($fechadesde);
  940. $certificado->setFechahasta(new \DateTime($nuevafechahastacertificados));
  941. }
  942. $certificado->setFechaproximafacturacion($recibo->getFechahasta());
  943. $entityManager->persist($certificado);
  944. $entityManager->flush();
  945. }
  946. $entityManager->getConnection()->commit();
  947. } catch (Exception $e)
  948. {
  949. $entityManager->getConnection()->rollback();
  950. }
  951. return $this->redirect($this->generateUrl('contratos_show', array('id' => $contrato->getId())));
  952. }
  953. /**
  954.  * @Route("/{id}/edit", name="contratos_edit", methods={"GET", "POST"})
  955.  */
  956. public function edit(Request $requestContratos $contratoEntityManagerInterface $entityManager): Response
  957. {
  958. $form $this->createForm(ContratosType::class, $contrato);
  959. $form->remove("clientes");
  960. $form->handleRequest($request);
  961. $planes $entityManager
  962.             ->getRepository(Planes::class)
  963.             ->findBy(array('estatus'=>'1'));
  964.         $planesservicios $entityManager
  965.             ->getRepository(Planesservicios::class)
  966.             ->findBy(array('estatus'=>'1'));
  967. if ($form->isSubmitted() && $form->isValid()) {
  968. $entityManager->flush();
  969. return $this->redirectToRoute('contratos_index', [], Response::HTTP_SEE_OTHER);
  970. }
  971. return $this->renderForm('contratos/edit.html.twig', [
  972. 'contrato' => $contrato,
  973.  'form' => $form,
  974.     'planesservicios' => $planesservicios,
  975.  'planes' => $planes,
  976. ]);
  977. }
  978. /**
  979.  * @Route("/{id}", name="contratos_delete", methods={"POST"})
  980.  */
  981. public function delete(Request $requestContratos $contratoEntityManagerInterface $entityManager): Response
  982. {
  983. if ($this->isCsrfTokenValid('delete'.$contrato->getId(), $request->request->get('_token'))) {
  984. $entityManager->remove($contrato);
  985. $entityManager->flush();
  986. }
  987. return $this->redirectToRoute('contratos_index', [], Response::HTTP_SEE_OTHER);
  988. }
  989. }