86 lines
3.3 KiB
Python
86 lines
3.3 KiB
Python
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})" |