from django.db import models
class Insumo(models.Model):
nombre = models.CharField(max_length=100)
categoria = models.CharField(max_length=100)
marca = models.CharField(max_length=100)
punto_pedido = models.IntegerField()
def get_stock(self):
# Retorna la suma de stock de todos los InsumoDeposito relacionados
return sum([insumo_deposito.cantidad for insumo_deposito in self.insumodeposito_set.all()])
class InsumoDeposito(models.Model):
insumo = models.ForeignKey(Insumo, on_delete=models.CASCADE)
deposito = models.ForeignKey('Deposito', on_delete=models.CASCADE)
cantidad = models.IntegerField()
class Deposito(models.Model):
nombre = models.CharField(max_length=100)
def add_stock(self, insumo, cantidad):
# Añade cantidad al stock del insumo en este deposito
insumo_deposito, created = InsumoDeposito.objects.get_or_create(insumo=insumo, deposito=self)
insumo_deposito.cantidad += cantidad
insumo_deposito.save()
def remove_stock(self, insumo, cantidad):
# Remueve cantidad del stock del insumo en este deposito
insumo_deposito, created = InsumoDeposito.objects.get_or_create(insumo=insumo, deposito=self)
insumo_deposito.cantidad -= cantidad
insumo_deposito.save()
def get_stock(self, insumo=None):
# Retorna el stock de todos los insumos o de un insumo específico si se especifica
insumos_deposito = self.insumodeposito_set.all()
if insumo:
insumos_deposito = insumos_deposito.filter(insumo=insumo)
return sum([insumo_deposito.cantidad for insumo_deposito in insumos_deposito])