from django.db import models from vergabe_teilnahme.apps.core.models import FlexibleModel class Dienstleistertyp(FlexibleModel): name = models.CharField(max_length=200) beschreibung = models.TextField(blank=True) typische_leistungen = models.TextField(blank=True) typische_nachweise = models.TextField(blank=True) relevante_standards = models.TextField(blank=True) typische_preisbestandteile = models.TextField(blank=True) bemerkungen = models.TextField(blank=True) class Meta: verbose_name = 'Dienstleistertyp' verbose_name_plural = 'Dienstleistertypen' ordering = ['name'] def __str__(self): return self.name class Subunternehmer(FlexibleModel): PRAEFERENZ_CHOICES = [ ('bevorzugt', 'Bevorzugt'), ('zugelassen', 'Zugelassen'), ('gesperrt', 'Gesperrt'), ] name = models.CharField(max_length=300) kurzname = models.CharField(max_length=100, blank=True) dienstleistertyp = models.ForeignKey( Dienstleistertyp, on_delete=models.SET_NULL, null=True, blank=True, related_name='subunternehmer' ) praeferenz = models.CharField(max_length=20, choices=PRAEFERENZ_CHOICES, default='zugelassen') strasse = models.CharField(max_length=200, blank=True) plz = models.CharField(max_length=10, blank=True) ort = models.CharField(max_length=100, blank=True) land = models.CharField(max_length=100, default='Deutschland') telefon = models.CharField(max_length=50, blank=True) mobilnummer = models.CharField(max_length=50, blank=True) email = models.EmailField(blank=True) website = models.URLField(blank=True) ansprechpartner = models.CharField(max_length=200, blank=True) ansprechpartner_email = models.EmailField(blank=True) ansprechpartner_telefon = models.CharField(max_length=50, blank=True) leistungsprofil = models.TextField(blank=True) bewertung = models.TextField(blank=True) bisherige_ausschreibungen = models.ManyToManyField( 'ausschreibungen.Ausschreibung', blank=True, through='SubunternehmerZuordnung', related_name='subunternehmer', ) class Meta: verbose_name = 'Subunternehmer' verbose_name_plural = 'Subunternehmer' ordering = ['name'] def __str__(self): return self.name class SubunternehmerZuordnung(models.Model): subunternehmer = models.ForeignKey( Subunternehmer, on_delete=models.CASCADE, related_name='zuordnungen' ) ausschreibung = models.ForeignKey( 'ausschreibungen.Ausschreibung', on_delete=models.CASCADE ) los = models.ForeignKey( 'lose.Los', on_delete=models.SET_NULL, null=True, blank=True ) konkrete_leistung = models.CharField(max_length=300, blank=True) zusage_vorhanden = models.BooleanField(default=False) nachweis_eingegangen = models.BooleanField(default=False) preis_vorhanden = models.BooleanField(default=False) kommentar = models.TextField(blank=True) class Meta: verbose_name = 'Subunternehmer-Zuordnung' verbose_name_plural = 'Subunternehmer-Zuordnungen' def __str__(self): return f'{self.subunternehmer} → {self.ausschreibung}'