/**
  * Se encarga de validar que el valor de los grados se encuentre dentro del rango
  */
 public function isValid($doctrine, $entidad, $invId, $productor)
 {
     $msg = array();
     if ($this->getLocalDetLitros() && $invId) {
         if ($this->getLocalDetLitros() + 0 <= 0) {
             $msg[] = '- La cantidad en litros ingresados "' . $this->getLocalDetLitros() . '" debe ser mayor a 0';
         } else {
             $solLocalDao = new SolLocalDao($doctrine);
             $solLocalDetDao = new SolLocalDetDao($doctrine);
             $inventarioDao = new InventarioDao($doctrine);
             $litrosInventario = $solLocalDetDao->getLitrosInventarioXCuota($entidad->getEntId(), $this->getCuota()->getCuoId());
             $litrosSolicitudesPendientes = $solLocalDao->getLitrosSolicitudXCuota($entidad->getEntId(), $this->getCuota()->getCuoId());
             $disponible = $this->getCuota()->getCuoLitros() - $litrosInventario - $litrosSolicitudesPendientes;
             if ($this->getLocalDetLitros() > $disponible) {
                 $msg[] = '- La cantidad en litros ingresados "' . $this->getLocalDetLitros() . '" es mayor al saldo disponible de la cuota "' . $disponible . '"';
             }
             if ($productor == false) {
                 $inventario = $inventarioDao->getInventario($invId);
                 $litrosDisponiblesProveedor = $inventario->getInvLitros() - $inventario->getInvReservado();
                 if ($this->getLocalDetLitros() > $litrosDisponiblesProveedor) {
                     $msg[] = '- No se puede ingresar la solicitud debido a que las existencias del proveedor no pueden cubrir la cantidad a solicitar';
                 }
             }
         }
     } else {
         if (!$this->getLocalDetLitros()) {
             $msg[] = '- El campo "Cantidad" se encuentra vacio';
         }
         if (!$invId && $productor == false) {
             $msg[] = '- Debe seleccionar un proveedor';
         }
     }
     return $msg;
 }
 /**
  * Eliminacion logica del registro en la tabla. Se encargada colocar el flag audit_deleted =true
  * 
  * @param Request $request
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function eliminarAction(InventarioDet $inventarioDet)
 {
     $auditUser = $this->container->get('security.context')->getToken()->getUser();
     $inventarioDetDao = new InventarioDetDao($this->getDoctrine());
     $inventarioDao = new InventarioDao($this->getDoctrine());
     //Buscamos el encabezado para quitarle la cantidad a eliminar
     $inventarioOld = $inventarioDao->findInventario($inventarioDet->getInventario()->getEntidad()->getEntId(), $inventarioDet->getAlcId(), $inventarioDet->getInvGrado(), $inventarioDet->getInvNombreEsp());
     //$inventarioOld = $inventarioDet->getInventario();
     $invLitros = $inventarioOld->getInvLitros();
     $invReservado = $inventarioOld->getInvReservado();
     if ($inventarioDet->getInvDetAccion() == '+') {
         $inventarioOld->setInvLitros($invLitros - $inventarioDet->getInvDetLitros());
     } else {
         if ($inventarioDet->getInvDetAccion() == 'R') {
             //$inventarioOld->setInvLitros($invLitros - $inventarioDet->getInvDetLitros());
             $inventarioOld->setInvReservado($invReservado - $inventarioDet->getInvDetLitros());
         } else {
             if ($inventarioDet->getInvDetAccion() == '-') {
                 $inventarioOld->setInvLitros($invLitros + $inventarioDet->getInvDetLitros());
             }
         }
     }
     $inventarioOld->setAuditUserUpd($auditUser->getUsername());
     $inventarioOld->setAuditDateUpd(new \DateTime());
     $inventarioDetDao->delInventarioDet($inventarioDet->getInvDetId(), $auditUser->getUsername());
     $this->get('session')->setFlash('notice', '#### El registro ha sido eliminado ####');
     return $this->redirect($this->generateUrl('MinSalSCAProcesosBundle_mantInventariosDet'));
 }
 /**
  * 
  * @param Cuota $cuota
  * @param double $litros
  * @return InventarioDet
  */
 private function agregarInventario(Cuota $cuota, $litros)
 {
     $user = $this->get('security.context')->getToken()->getUser();
     $inventarioDao = new InventarioDao($this->getDoctrine());
     //$inventarioDetDao = new InventarioDetDao($this->getDoctrine());
     $alcoholDao = new AlcoholDao($this->getDoctrine());
     $inventarioDet = new InventarioDet();
     //Buscamos si el encabezado en la tabla de "Inventario" existe
     $inventario = $inventarioDao->findInventario($cuota->getEntidad()->getEntId(), $cuota->getAlcohol()->getAlcId(), $cuota->getCuoGrado(), $cuota->getCuoNombreEsp());
     if ($inventario != null) {
         $invLitros = $inventario->getInvLitros();
         $inventario->setInvLitros($invLitros + $litros);
         $inventario->setAuditUserUpd($user->getUsername());
         $inventario->setAuditDateUpd(new \DateTime());
         $inventarioDet->setInventario($inventario);
     } else {
         //#### Encabezado de Inventario
         $inventarioDet->setInventario(new Inventario());
         $inventarioDet->getInventario()->setEntidad($cuota->getEntidad());
         $inventarioDet->getInventario()->setAlcohol($alcoholDao->getAlcohol($cuota->getAlcohol()->getAlcId()));
         $inventarioDet->getInventario()->setInvLitros($litros);
         $inventarioDet->getInventario()->setAuditUserIns($user->getUsername());
         $inventarioDet->getInventario()->setAuditDateIns(new \DateTime());
         $inventarioDet->getInventario()->setInvGrado($cuota->getCuoGrado());
         $inventarioDet->getInventario()->setInvNombreEsp($cuota->getCuoNombreEsp());
     }
     //## Detalle de inventario
     $inventarioDet->getInventario()->addInventarioDet($inventarioDet);
     $inventarioDet->setInvDetFecha(new \DateTime());
     //#### Auditoría
     $inventarioDet->setAuditUserIns($user->getUsername());
     $inventarioDet->setAuditDateIns(new \DateTime());
     $inventarioDet->setInvDetAccion("+");
     $inventarioDet->setInvDetLitros($litros);
     //$inventarioDetDao->editInventarioDet($inventarioDet);
     //$this->getDoctrine()->getEntityManager()->persist($inventarioDet);
     return $inventarioDet;
 }
 private function crearInvIdProductor(Inventario $inventarioDetalle, Entidad $provEntidad)
 {
     $user = $this->get('security.context')->getToken()->getUser();
     $inventarioDao = new InventarioDao($this->getDoctrine());
     //Buscamos si el encabezado en la tabla de "Inventario" existe
     $inventario = $inventarioDao->findInventario($provEntidad->getEntId(), $inventarioDetalle->getAlcohol()->getAlcId(), $inventarioDetalle->getInvGrado(), $inventarioDetalle->getInvNombreEsp());
     if ($inventario == null) {
         //#### Encabezado de Inventario
         $inventario = new Inventario();
         $inventario->setEntidad($provEntidad);
         $inventario->setAlcohol($inventarioDetalle->getAlcohol());
         $inventario->setInvLitros(0);
         $inventario->setInvGrado($inventarioDetalle->getInvGrado());
         $inventario->setInvNombreEsp($inventarioDetalle->getInvNombreEsp());
         $inventario->setAuditUserIns($user->getUsername());
         $inventario->setAuditDateIns(new \DateTime());
     }
     $inventarioDao->addInventario($inventario);
     return $inventario->getInvId();
 }