private function agregarInventarioProveedor(SolLocalDet $solLocalDet, $invId, $litros, $grados, $reserva, $liberarParcial) { $user = $this->get('security.context')->getToken()->getUser(); $inventarioDao = new InventarioDao($this->getDoctrine()); $inventarioDetDao = new InventarioDetDao($this->getDoctrine()); //$inventarioDetDao = new InventarioDetDao($this->getDoctrine()); //$alcoholDao = new AlcoholDao($this->getDoctrine()); $inventarioDet = null; $localDetId = $solLocalDet->getLocalDetId(); //Buscamos si el encabezado en la tabla de "Inventario" existe $inventario = $inventarioDao->getInventario($invId); if ($inventario != null) { $invLitros = $inventario->getInvLitros(); $invReservado = $inventario->getInvReservado(); $invGrado = $inventario->getInvGrado(); if ($reserva) { //Esta formula es para convertir los litros en el grado del inventario del proveedor $inventario->setInvReservado($invReservado + $litros * $grados / $invGrado); $inventarioDet = new InventarioDet(); $inventarioDet->setInvDetFecha(new \DateTime()); $inventarioDet->setAuditUserIns($user->getUsername()); $inventarioDet->setAuditDateIns(new \DateTime()); $inventarioDet->setInvDetLitros($litros * $grados / $invGrado); $inventarioDet->setInvDetAccion("R"); } else { $inventario->setInvLitros($invLitros - $litros * $grados / $invGrado); $inventario->setInvReservado($invReservado - $litros * $grados / $invGrado); $inventarioDet = $inventarioDetDao->findInventarioDet($invId, $localDetId, 'R'); $inventarioDet->setAuditUserUpd($user->getUsername()); $inventarioDet->setAuditDateUpd(new \DateTime()); if ($liberarParcial) { $inventarioDetParcial = new InventarioDet(); $inventarioDetParcial->setInvDetFecha(new \DateTime()); $inventarioDetParcial->setAuditUserIns($user->getUsername()); $inventarioDetParcial->setAuditDateIns(new \DateTime()); $inventarioDetParcial->setInvDetLitros($litros * $grados / $invGrado); $inventarioDetParcial->setInvDetAccion("-"); $inventarioDetParcial->setSolLocalDet($solLocalDet); $inventarioDetParcial->setInventario($inventario); $inventarioDetParcial->getInventario()->addInventarioDet($inventarioDetParcial); $inventarioDet->setInvDetLitros($inventarioDet->getInvDetLitros() - $litros * $grados / $invGrado); } else { $inventarioDet->setInvDetAccion("-"); } } $inventario->setAuditUserUpd($user->getUsername()); $inventario->setAuditDateUpd(new \DateTime()); $inventarioDet->setInventario($inventario); //## Detalle de inventario $inventarioDet->getInventario()->addInventarioDet($inventarioDet); } else { throw new Exception('No existe inventario de Proveedor'); } return $inventarioDet; }