public function mantInventarioDetEdicionAction(Request $request)
 {
     $inventarioDetTmp = new InventarioDet();
     $inventarioDet = new InventarioDet();
     $form = $this->createForm(new InventarioDetType($this->getDoctrine()), $inventarioDetTmp);
     $form->bindRequest($request);
     $inventarioDao = new InventarioDao($this->getDoctrine());
     $inventarioDetDao = new InventarioDetDao($this->getDoctrine());
     $alcoholDao = new AlcoholDao($this->getDoctrine());
     $user = $this->get('security.context')->getToken()->getUser();
     $errores = $inventarioDetTmp->isValid();
     $eliminar = $request->get("eliminar");
     if ($eliminar === 'true') {
         $inventarioDet = $inventarioDetDao->getInventarioDet($inventarioDetTmp->getInvDetId());
         return $this->eliminarAction($inventarioDet);
     }
     if ($form->isValid() && count($errores) == 0) {
         if ($inventarioDetTmp->getInvDetId()) {
             $inventarioDet = $inventarioDetDao->getInventarioDet($inventarioDetTmp->getInvDetId());
             //Primero es de revisar si ha cambiado la información de la tabla encabezado.
             if ($inventarioDetTmp->getAlcId() != $inventarioDet->getAlcId() || $inventarioDetTmp->getInvGrado() != $inventarioDet->getInvGrado() || $inventarioDetTmp->getInvNombreEsp() != $inventarioDet->getInvNombreEsp()) {
                 //Si alguno de los campos es diferente, se debe actualizar los registros encabezados antiguos
                 $inventarioOld = $inventarioDao->findInventario($user->getEntidad()->getEntId(), $inventarioDet->getAlcId(), $inventarioDet->getInvGrado(), $inventarioDet->getInvNombreEsp());
                 $invLitros = $inventarioOld->getInvLitros();
                 $inventarioOld->setInvLitros($invLitros - $inventarioDet->getInvDetLitros());
                 $inventarioOld->setAuditUserUpd($user->getUsername());
                 $inventarioOld->setAuditDateUpd(new \DateTime());
                 //$inventarioDao->editInventario($inventarioOld);
                 //Buscamos si existe el NUEVO encabezado en la tabla de "Inventario"
                 $inventario = $inventarioDao->findInventario($user->getEntidad()->getEntId(), $inventarioDetTmp->getAlcId(), $inventarioDetTmp->getInvGrado(), $inventarioDetTmp->getInvNombreEsp());
                 if ($inventario != null) {
                     $invLitros = $inventario->getInvLitros();
                     $inventario->setInvLitros($invLitros + $inventarioDetTmp->getInvDetLitros());
                     $inventario->setAuditUserUpd($user->getUsername());
                     $inventario->setAuditDateUpd(new \DateTime());
                     $inventarioDet->setInventario($inventario);
                 } else {
                     //#### Encabezado de Inventario
                     $inventarioDet->setInventario(new Inventario());
                     $inventarioDet->getInventario()->setEntidad($user->getEntidad());
                     $inventarioDet->getInventario()->setAlcohol($alcoholDao->getAlcohol($inventarioDetTmp->getAlcId()));
                     $inventarioDet->getInventario()->setInvLitros($inventarioDetTmp->getInvDetLitros());
                     $inventarioDet->getInventario()->setAuditUserIns($user->getUsername());
                     $inventarioDet->getInventario()->setAuditDateIns(new \DateTime());
                     $inventarioDet->getInventario()->setInvGrado($inventarioDetTmp->getInvGrado());
                     $inventarioDet->getInventario()->setInvNombreEsp($inventarioDetTmp->getInvNombreEsp());
                 }
                 //## Detalle de inventario
                 $inventarioDet->getInventario()->addInventarioDet($inventarioDet);
                 $inventarioDet->setInvDetFecha(new \DateTime());
             } else {
                 //Si el encabezado no cambia
                 $invLitros = $inventarioDet->getInventario()->getInvLitros();
                 $inventarioDet->getInventario()->setInvLitros($invLitros + $inventarioDetTmp->getInvDetLitros() - $inventarioDet->getInvDetLitros());
                 $inventarioDet->getInventario()->setAuditUserUpd($user->getUsername());
                 $inventarioDet->getInventario()->setAuditDateUpd(new \DateTime());
             }
             //#### Auditoría
             $inventarioDet->setAuditUserUpd($user->getUsername());
             $inventarioDet->setAuditDateUpd(new \DateTime());
         } else {
             //Buscamos si el encabezado en la tabla de "Inventario" existe
             $inventario = $inventarioDao->findInventario($user->getEntidad()->getEntId(), $inventarioDetTmp->getAlcId(), $inventarioDetTmp->getInvGrado(), $inventarioDetTmp->getInvNombreEsp());
             if ($inventario != null) {
                 $invLitros = $inventario->getInvLitros();
                 $inventario->setInvLitros($invLitros + $inventarioDetTmp->getInvDetLitros());
                 $inventario->setAuditUserUpd($user->getUsername());
                 $inventario->setAuditDateUpd(new \DateTime());
                 $inventarioDet->setInventario($inventario);
             } else {
                 //#### Encabezado de Inventario
                 $inventarioDet->setInventario(new Inventario());
                 $inventarioDet->getInventario()->setEntidad($user->getEntidad());
                 $inventarioDet->getInventario()->setAlcohol($alcoholDao->getAlcohol($inventarioDetTmp->getAlcId()));
                 $inventarioDet->getInventario()->setInvLitros($inventarioDetTmp->getInvDetLitros());
                 $inventarioDet->getInventario()->setAuditUserIns($user->getUsername());
                 $inventarioDet->getInventario()->setAuditDateIns(new \DateTime());
                 $inventarioDet->getInventario()->setInvGrado($inventarioDetTmp->getInvGrado());
                 $inventarioDet->getInventario()->setInvNombreEsp($inventarioDetTmp->getInvNombreEsp());
             }
             //## Detalle de inventario
             $inventarioDet->getInventario()->addInventarioDet($inventarioDet);
             $inventarioDet->setInvDetFecha(new \DateTime());
             //#### Auditoría
             $inventarioDet->setAuditUserIns($user->getUsername());
             $inventarioDet->setAuditDateIns(new \DateTime());
         }
         //##################################################################################################
         $form = $this->createForm(new InventarioDetType($this->getDoctrine()), $inventarioDet);
         $form->bindRequest($request);
         $inventarioDetDao->editInventarioDet($inventarioDet);
         $this->get('session')->setFlash('notice', 'Los datos se han guardado con éxito!!!');
         return $this->redirect($this->generateUrl('MinSalSCAProcesosBundle_mantInventariosDet'));
     } else {
         $listaErrores = '';
         foreach ($errores as $error) {
             $listaErrores = $listaErrores . $error;
         }
         if ($listaErrores != '') {
             $this->get('session')->setFlash('notice', $listaErrores);
         } else {
             $this->get('session')->setFlash('notice', '**** ERROR **** Existen errores con el formulario, por favor revise los valores ingresados');
         }
         $opciones = $this->getRequest()->getSession()->get('opciones');
         return $this->render('MinSalSCAProcesosBundle:InventarioDet:showInventarioDet.html.twig', array('opciones' => $opciones, 'form' => $form->createView(), 'invDetId' => $inventarioDet->getInvDetId(), 'entNombComercial' => $user->getEntidad()->getEntNombComercial()));
     }
 }