Skip to content
models.py 9.34 KiB
Newer Older

# Create your models here.

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
#   * Remove `managed = True` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
#from django_fsm import FSMField, transition
from django_xworkflows import models as xwf_models

class AcquistiWorkflow(xwf_models.Workflow):
    states = (
        ('nuova', (u"Nuova")),
        ('sottomessa', (u"Sottomessa")),
        ('inviatoemailRF', (u"InviatoEmailRF")),
        ('inviatoemailRC', (u"Inviato Email RC")),
        ('approvatoRF', (u"ApprovatoRF")),
        ('approvatoRC', (u"ApprovatoRC")),
        ('nonapprovatoRF', (u"NonApprovatoRF")),
        ('nonapprovatoRC', (u"NonApprovatoRC")),
        ('emailnonapprovatoRC', (u"EmailNonApprovatoRC")),
        ('emailnonapprovatoRF', (u"EmailNonApprovatoRF")),
        ('presaincaricoUA', (u"PresaInCaricoUA")),
        ('emailpresaincaricoUA', (u"EmailPresaInCaricoUA")),
        ('emailrifiutoUA', (u"EmailRifiutoUA")),
        ('emailnonapprovatoRC', (u"new")),
        ('emailnonapprovatoRF', (u"new")),
        ('emailnonapprovatoRC', (u"Delete")),
        ('emailnonapprovatoRF', (u"Delete")),       
       
        
        
    )
        
    transitions = (
        ('sottomessa', 'nuova', 'sottomessa'),
        ('inviatoemailRF', 'sottomessa', 'inviatoemailRF'),
        ('approvatoRF', 'inviatoemailRF', 'approvatoRF'),
        ('inviatoemailRC', 'approvatoRF', 'inviatoemailRC'),
        #('get_sottomessa', 'new', 'sottomessa'),
        
        #('get_old', 'new', 'old'),
    )
    initial_state = 'nuova'

class Flusso(models.Model):
    idacquisti = models.ForeignKey('Aquisti', models.DO_NOTHING, db_column='idacquisti',blank=True, null=True)
    stato = models.IntegerField()
    idaffidamento = models.ForeignKey('Affidamento', models.DO_NOTHING, db_column='idaffidamento',blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'Flusso'


class Flussolog(models.Model):
#    id = models.IntegerField(primary_key=True)
    data = models.DateTimeField()
    azione = models.CharField(max_length=1000,blank=True, null=True)
    statoprimaazione = models.IntegerField(db_column='statoPrimaAzione', blank=True, null=True)  # Field name made lowercase.
    idflusso = models.ForeignKey(Flusso, models.DO_NOTHING, db_column='idflusso',blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'FlussoLog'


class Affidamento(models.Model):
#    id = models.IntegerField(primary_key=True)
    idflusso = models.IntegerField()
    stato = models.IntegerField()
    auth_r_f = models.IntegerField(db_column='auth_R_F', blank=True, null=True)  # Field name made lowercase.
    auth_r_a = models.IntegerField(db_column='auth_R_A', blank=True, null=True)  # Field name made lowercase.
    auth_direttore = models.IntegerField(db_column='auth_Direttore', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = True
        db_table = 'affidamento'

class Settore(models.IntegerChoices):
    ricerca_tecnologia = 0
    didattica = 1
    funzionamento =2
class Tipologia(models.IntegerChoices):
    informatici = 0
    largo_consumo = 1
    altro = 2

class Aquisti(models.Model):
    datacreazione= models.DateField(auto_now_add=True)
    datainvio= models.DateField(auto_now_add=True,blank=True, null=True)
    descrizione = models.CharField( max_length=1000,blank=True, null=True)
    motivazioneuso = models.CharField( max_length=1000,blank=True, null=True) 
    protocollo = models.CharField( max_length=1000,blank=True, null=True)
    idrichiedente = models.IntegerField(blank=True, null=True)
    idrup = models.IntegerField(blank=True, null=True)
    tipologia = models.IntegerField(choices=Tipologia.choices,default=0) 
    settore = models.IntegerField(choices=Settore.choices,default=0)
    importototale =  models.DecimalField(max_digits=10, decimal_places=2,db_column='importoTotale', blank=True, null=True) 
    convenzione = models.IntegerField(blank=True, null=True)
    nomeconvenzione = models.CharField(max_length=100, blank=True, null=True)
    motivazionenonconvenzione = models.CharField( max_length=1000,blank=True, null=True) 
    mepa = models.IntegerField(blank=True, null=True)
    """
    class StatoAcquisto(models.IntegerChoices):
         NEW = 0
         INSERITA= 1
         EMAIL_CONTABILITA = 2
         FONDI_DISPONIMBILI = 3
         FONDI_NON_DISPONIBILI = 4
         EMAIL_RESPONSABILE_FONDI = 5
         EMAIL_UTENTE_FONDI_NON_DISPONIBILE = 6
         RESPONSABILE_FONDI_APPROVA = 7
         EMAIL_UFFICIO_ACQUISTI_APPROVAZIONE = 8
         RESPONSABILE_FONDI_NON_APPROVA = 9
         EMAIL_UTENTE_CONTABILITA_NON_APPROVAZIONE = 10
         PRESA_IN_CARICO = 11
         RICHIESTA_RIFIUTATA_ACQUISTI = 12
         EMAIL_UTENTE_PRESA_IN_CARICO = 13
         EMAIL_UTENTE_MOTIVO_RIFIUTO = 14

    stato = models.IntegerField(choices=StatoAcquisto.choices,default=0)
    """

    class Meta:
        managed = True
        db_table = 'aquisti'

    @property
    def getObiettiviFunzione(self):
        suddiobfuns = SuddivisioneObiettivi.objects.filter(idacquisto=self.id)
        return obfuns

class Obiettivofunzione(models.Model):
    obiettivofunzione = models.CharField(max_length=100,blank=True, null=True)
    cup = models.CharField(max_length=100,db_column='CUP',blank=True, null=True)  # Field name made lowercase. This field type is a guess.
    descrizione = models.CharField(max_length=255,blank=True, null=True)
    scadenza = models.DateField(blank=True, null=True)
    tipologia = models.CharField(max_length=100,blank=True, null=True)
    idsede = models.ForeignKey('Sede', models.DO_NOTHING, db_column='idsede', blank=True, null=True)
    emailresponsabile = models.CharField(max_length=100,blank=True, null=True)
    nomeresponsabile = models.CharField(max_length=100,blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'obiettivofunzione'


class Articoli(models.Model):
    quantita = models.IntegerField(blank=True, null=True)
    descrizione = models.CharField(max_length=1000, blank=True, null=True)
    codice = models.CharField(max_length=1000, blank=True, null=True)
    prezzo = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
    idacquisti = models.ForeignKey(Aquisti, models.DO_NOTHING, db_column='idacquisti',blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'articoli'

class SuddivisioneObiettivi(models.Model):
        idacquisto = models.ForeignKey(Aquisti, models.DO_NOTHING, db_column='idacquisto')
        idobiettivofunzione = models.ForeignKey(Obiettivofunzione, models.DO_NOTHING, db_column='idobiettivofunzione')
        prezzosuobiettivo = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)

        class Meta:
            managed = True
            db_table = 'suddivisioneobiettivi'



class Responsabilefondi(models.Model):
    email = models.CharField(max_length=1000, blank=True, null=True)
    cognome = models.CharField( max_length=1000,blank=True, null=True)
    nome = models.CharField(max_length=1000, blank=True, null=True)
    idobiettivofunzione = models.ForeignKey('Obiettivofunzione', models.DO_NOTHING, db_column='idobiettivofunzione', blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'responsabilefondi'


class Sede(models.Model):
    idsede = models.IntegerField(primary_key=True)
    emaildirettore = models.TextField(db_column='emailDirettore')  # Field name made lowercase. This field type is a guess.
    emailresponsabileamministrazione = models.TextField(db_column='emailResponsabileAmministrazione')  # Field name made lowercase. This field type is a guess.
    partitaiva = models.TextField(db_column='partitaIVA', blank=True, null=True)  # Field name made lowercase. This field type is a guess.
    nome = models.CharField(max_length=1000,blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'sede'

FLUSSOACQUISTO= ( 
         'NUOVA', 
         'CREATA',
         'INOLTRATA',
         'EMAIL_CONTABILITA',
         'CONTABILITA_FONDI_DISPONIMBILI',
         'CONTABILITA_FONDI_NON_DISPONIBILI',
         'EMAIL_RESPONSABILE_FONDI',
         #'CONTABILITA_EMAIL_RICHIEDENTE_FONDI_NON_DISPONIBILE',
         'CONTABILITA_REVISIONE',
         'RESPONSABILE_FONDI_APPROVA',
         'NOTIFICATO_UA',
         'RESPONSABILE_FONDI_NON_APPROVA',
         #'EMAIL_RICHIEDENTE_CONTABILITA_NON_APPROVAZIONE',
         'REVISIONE_NON_APPROVAZIONE_RESPONSABILE',
         'UA_PRESA_IN_CARICO',
         'UA_RICHIESTA_NON_CONGRUA',
         'UA_EMAIL_RICHIEDENTE_PRESA_IN_CARICO'
         )
FLUSSOACQUISTO = list(zip(FLUSSOACQUISTO, FLUSSOACQUISTO))
class Statoaquisto(xwf_models.WorkflowEnabled,models.Model):
    aquisti = models.OneToOneField(
        Aquisti,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    data = models.DateTimeField(blank=True, null=True)
    #stato = FSMField(default=STATOACQUISTO[0], choices=STATOACQUISTO)
    state = xwf_models.StateField(AcquistiWorkflow)


    class Meta:
        managed = True
        db_table = 'statoaquisto'