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())); } }