from django.db import models class Cliente(models.Model): STATO_CHOICES = [ ('Cliente', 'Cliente'), ('Prospect', 'Prospect'), ('Ex-Cliente', 'Ex-Cliente'), ] CATEGORIA_CHOICES = [ ('Privato', 'Privato'), ('Azienda', 'Azienda'), ] Nome = models.CharField(max_length=100) Cognome = models.CharField(max_length=100) Codice_Fiscale = models.CharField(max_length=16, unique=True) Email = models.EmailField() Telefono = models.CharField(max_length=20) Data_di_Nascita = models.DateField() Lavoro = models.CharField(max_length=100) Stato = models.CharField(max_length=20, choices=STATO_CHOICES) Categoria = models.CharField(max_length=20, choices=CATEGORIA_CHOICES) Importo_Portafoglio_Attuale = models.DecimalField(max_digits=15, decimal_places=2, default=0.00, editable=False) def __str__(self): return f"{self.Nome} {self.Cognome}" class Portafoglio(models.Model): PROFILO_RISCHIO_CHOICES = [ ('Conservativo', 'Conservativo'), ('Bilanciato', 'Bilanciato'), ('Aggressivo', 'Aggressivo'), ] cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='portafogli') Nome_Portafoglio = models.CharField(max_length=100) Profilo_di_Rischio = models.CharField(max_length=20, choices=PROFILO_RISCHIO_CHOICES) Composizione_Asset_Allocation = models.TextField(blank=True, null=True) Data_Inizio = models.DateField() Valore_Iniziale = models.DecimalField(max_digits=15, decimal_places=2) Valore_Corrente = models.DecimalField(max_digits=15, decimal_places=2) Note = models.TextField(blank=True, null=True) def __str__(self): return f"{self.Nome_Portafoglio} ({self.cliente})" class Attivita(models.Model): TIPO_CHOICES = [ ('Chiamata', 'Chiamata'), ('Riunione', 'Riunione'), ('Email', 'Email'), ('To-Do', 'To-Do'), ('Avviso Cedola', 'Avviso Cedola'), ('Scadenza Obbligazione', 'Scadenza Obbligazione'), ('Revisione Annuale', 'Revisione Annuale'), ] STATO_CHOICES = [ ('Pianificato', 'Pianificato'), ('Completato', 'Completato'), ] cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='attivita') Data = models.DateField() Ora = models.TimeField(blank=True, null=True) Tipo = models.CharField(max_length=30, choices=TIPO_CHOICES) Stato = models.CharField(max_length=20, choices=STATO_CHOICES, default='Pianificato') Note = models.TextField(blank=True, null=True) def __str__(self): return f"{self.Tipo} - {self.Data} - {self.cliente}" class Documento(models.Model): TIPO_CHOICES = [ ('Contratto', 'Contratto'), ('KYC', 'KYC'), ('Report', 'Report'), ('Altro', 'Altro'), ] cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='documenti') Nome_Documento = models.CharField(max_length=100) Tipo = models.CharField(max_length=20, choices=TIPO_CHOICES) Data_Caricamento = models.DateField(auto_now_add=True) Data_di_Scadenza = models.DateField(blank=True, null=True) File = models.FileField(upload_to='documenti/') # Placeholder, will be configured for S3 Condivisibile = models.BooleanField(default=False) def __str__(self): return f"{self.Nome_Documento} ({self.cliente})"