Files
he-database/sheets/models.py
2026-01-06 11:52:03 +01:00

122 lines
3.6 KiB
Python

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}"