from django.db import models from django.utils import timezone from django.core.validators import MinValueValidator, MaxValueValidator class Institute(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Betriebskosten(models.Model): KOSTENTYP_CHOICES = [ ('sach', 'Sachkostöen'), ('ln2', 'LN2'), ('helium', 'Helium'), ('inv', 'Inventar'), ] buchungsdatum = models.DateField('Buchungsdatum') rechnungsnummer = models.CharField('Rechnungsnummer', max_length=50) kostentyp = models.CharField('Kostentyp', max_length=10, choices=KOSTENTYP_CHOICES) gas_volume = models.DecimalField('Gasvolumen (Liter)', max_digits=10, decimal_places=2, null=True, blank=True) betrag = models.DecimalField('Betrag (€)', max_digits=10, decimal_places=2) beschreibung = models.TextField('Beschreibung', blank=True) @property def price_per_liter(self): if self.kostentyp == 'helium' and self.gas_volume: return self.betrag / self.gas_volume return None def __str__(self): return f"{self.buchungsdatum} - {self.get_kostentyp_display()} - {self.betrag}€" # Fixed the missing quote class Client(models.Model): name = models.CharField(max_length=100) address = models.TextField() institute = models.ForeignKey(Institute, on_delete=models.CASCADE) # Remove null=True, blank=True def __str__(self): return f"{self.name} ({self.institute.name})" class ExcelEntry(models.Model): client = models.ForeignKey(Client, on_delete=models.CASCADE) date = models.DateField(default=timezone.now) pressure = models.DecimalField( max_digits=10, decimal_places=2, validators=[MinValueValidator(0)], default=0.00 ) purity = models.DecimalField( max_digits=5, decimal_places=2, validators=[MinValueValidator(0), MaxValueValidator(100)], default=0.00 ) notes = models.TextField(blank=True, null=True) date_joined = models.DateField(auto_now_add=True) # Manual input lhe_zus = models.DecimalField( max_digits=10, decimal_places=3, validators=[MinValueValidator(0)], default=0.0 ) druckkorrektur = models.DecimalField( max_digits=10, decimal_places=3, validators=[MinValueValidator(0)], default=1.0 ) # Auto-calculated values (saved) constant_300 = models.DecimalField( max_digits=10, decimal_places=3, default=300.0 ) korrig_druck = models.DecimalField( max_digits=12, decimal_places=6, default=0.0 ) nm3 = models.DecimalField( max_digits=12, decimal_places=6, default=0.0 ) lhe = models.DecimalField( max_digits=12, decimal_places=6, default=0.0 ) lhe_ges = models.DecimalField( max_digits=12, decimal_places=6, default=0.0 ) class SecondTableEntry(models.Model): client = models.ForeignKey(Client, on_delete=models.CASCADE) date = models.DateField(default=timezone.now) is_warm = models.BooleanField(default=False) lhe_delivery = models.CharField(max_length=100, blank=True, null=True) lhe_output = models.DecimalField( max_digits=10, decimal_places=2, validators=[MinValueValidator(0)], blank=True, null=True ) notes = models.TextField(blank=True, null=True) date_joined = models.DateField(auto_now_add=True) def __str__(self): return f"{self.client.name} - {self.date}"