Ejemplo n.º 1
0
 /**
  * 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;
 }
 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;
 }