/** * Se encarga de validar que el valor de los grados se encuentre dentro del rango */ public function isValid($doctrine, $entidad) { $msg = array(); if ($this->getImpDetLitros()) { if ($this->getImpDetLitros() + 0 <= 0) { $msg[] = '- La cantidad en litros ingresados "' . $this->getImpDetLitros() . '" debe ser mayor a 0'; } else { $solImportacionDao = new SolImportacionDao($doctrine); $solImportacionDetDao = new SolImportacionDetDao($doctrine); $litrosInventario = $solImportacionDetDao->getLitrosInventarioXCuota($entidad->getEntId(), $this->getCuota()->getCuoId()); $litrosSolicitudesPendientes = $solImportacionDao->getLitrosSolicitudXCuota($entidad->getEntId(), $this->getCuota()->getCuoId()); $disponible = $this->getCuota()->getCuoLitros() - $litrosInventario - $litrosSolicitudesPendientes; if ($this->getImpDetLitros() > $disponible) { $msg[] = '- La cantidad en litros ingresados "' . $this->getImpDetLitros() . '" es mayor al saldo disponible de la cuota "' . $disponible . '"'; } } } else { $msg[] = '- El campo "Cantidad" se encuentra vacio'; } return $msg; }
/** * Actualiza el estado/transicion de la solicitud de importacion * * pendiente revisar a que pagina se redirecciona de forma dinamica * pendiente extraer la nueva transicion a la que se actualizara la solicitud * pendiente validar si la solicitud no ha sido previamente cambiada de estado y se quiere volver a cambiar. (submit + back + submit again) * * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function cambiarEstadoAction(Request $request, $impDetId, $traId) { $auditUser = $this->container->get('security.context')->getToken()->getUser(); $errorList = ''; $solImportacionDao = new SolImportacionDao($this->getDoctrine()); $solImportacionDetDao = new SolImportacionDetDao($this->getDoctrine()); $transicionDao = new TransicionDao($this->getDoctrine()); //Buscamos el encabezado para realizar la transicion $solImportacionDet = new SolImportacionDet(); $solImportacionDet = $solImportacionDao->getSolImportacionDet($impDetId); $roles = $auditUser->getRols(); $nextTransiciones = $transicionDao->getTransicionesSiguientes($solImportacionDet->getSolImportacion()->getTransicion()->getTraId()); //Validacion para asegurarse que el usuario que esta visualizando la solicitud tiene autorizacion para evaluarla y pasarla a la siguiente etapa foreach ($roles as $rol) { $transicionesRol = $rol->getTransiciones(); foreach ($transicionesRol as $transicionRol) { foreach ($nextTransiciones as $reg) { if ($reg->getFlujo()->getFluId() == Flujo::$IMPORTACION && $transicionRol->getTraId() == $reg->getTraId() && $traId == $reg->getTraId()) { $entidad = $solImportacionDet->getSolImportacion()->getEntidad(); $year = new \DateTime(); $listadoDNMDao = new ListadoDNMDao($this->getDoctrine()); $autorizadoDNM = $listadoDNMDao->estaAutorizado($year->format('Y') + 0, $entidad->getEntNrc(), $entidad->getEntNit()); if ($autorizadoDNM == true && $entidad->getEntHabilitado() == true) { if ($reg->getTraComentario()) { $solImpComentario = $request->get('solImpComentario'); if ($solImpComentario == null || $solImpComentario == '') { $errorList = $errorList . '- Es necesario detallar un comentario para pasar a la siguiente etapa'; } else { $solImportacionDet->getSolImportacion()->setSolImpComentario($solImpComentario); } } if ($reg->getTraLitrosLibera() || $reg->getTraLiberaTotal()) { $impDetLitrosLib = $solImportacionDet->getImpDetLitrosLib(); $impDetLitros = $solImportacionDet->getImpDetLitros(); $litrosLib = $request->get('impDetLitrosLib'); if ($reg->getTraLiberaTotal()) { $solImportacionDet->setImpDetLitrosLib($impDetLitros); $inventarioDet = $this->agregarInventario($solImportacionDet->getCuota(), $impDetLitros - $impDetLitrosLib); $inventarioDet->setSolImportacionDet($solImportacionDet); $solImportacionDet->addInventarioDet($inventarioDet); } else { if ($reg->getTraLitrosLibera()) { try { $litrosLib = (double) $litrosLib; $impDetLitrosLib = (double) $impDetLitrosLib; $impDetLitros = (double) $impDetLitros; if ($litrosLib == null || $litrosLib == '') { $errorList = $errorList . '- Debe ingresar los litros a liberar'; } else { if ($impDetLitros - $impDetLitrosLib - $litrosLib <= 0) { $errorList = $errorList . '- La cantidad de litros liberados debe ser menor a la cantidad pendiente por liberar ' . ($impDetLitros - $impDetLitrosLib); } else { if ($litrosLib <= 0) { $errorList = $errorList . '- Debe ingresar una cantidad mayor a 0'; } else { $solImportacionDet->setImpDetLitrosLib($impDetLitrosLib + $litrosLib); $inventarioDet = $this->agregarInventario($solImportacionDet->getCuota(), $litrosLib); $inventarioDet->setSolImportacionDet($solImportacionDet); $solImportacionDet->addInventarioDet($inventarioDet); } } } } catch (Exception $e) { $errorList = $errorList . '- Debe ingresar un número valido'; } } } } } else { $errorList = ' '; } if ($errorList == '') { $solImportacionDet->getSolImportacion()->setTransicion($reg); $solImportacionDet->getSolImportacion()->setAuditUserUpd($auditUser->getUsername()); $solImportacionDet->getSolImportacion()->setAuditDateUpd(new \DateTime()); $solImportacionDetDao->editSolImportacionDet($solImportacionDet); $this->generarEmailEtapaNotificacion($solImportacionDet, $reg); $this->get('session')->setFlash('notice', '#### El registro paso a etapa "' . $reg->getEtpFin()->getEtpNombre() . '" con estado "' . $reg->getEstado()->getEstNombre() . '" ####'); return $this->redirect($this->generateUrl('MinSalSCAProcesosBundle_mantSolImportacionVerSolicitudes')); } } } } } if ($errorList == '') { $this->get('session')->setFlash('notice', '#### AUDITORIA: Su usuario no tiene permisos para cambiar el estado en esta etapa "' . $solImportacionDet->getSolImportacion()->getTransicion()->getEtpFin()->getEtpNombre() . '" ####'); } else { $this->get('session')->setFlash('notice', $errorList); } return $this->redirect($this->generateUrl('MinSalSCAProcesosBundle_mantCargarSolImportacion', array('impDetId' => $impDetId))); }