Saltar a contenido

Modelos de Tickets

class Ticket(models.Model):
    titulo = models.CharField(max_length=200)
    descripcion = models.TextField()
    servicio = models.ForeignKey('Servicio', on_delete=models.PROTECT)

    creador = models.ForeignKey(User, related_name='tickets_creados')
    asignado = models.ForeignKey(User, related_name='tickets_asignados')

    PRIORIDAD_CHOICES = [
        ('BAJA', 'Baja'),
        ('MEDIA', 'Media'),
        ('ALTA', 'Alta'),
        ('URGENTE', 'Urgente'),
    ]
    prioridad = models.CharField(max_length=20, choices=PRIORIDAD_CHOICES)

    ESTATUS_CHOICES = [
        ('PENDIENTE', 'Pendiente'),
        ('EN_PROCESO', 'En Proceso'),
        ('COMPLETADO', 'Completado'),
        ('CANCELADO', 'Cancelado'),
    ]
    estatus = models.CharField(max_length=20, choices=ESTATUS_CHOICES)

    fecha_limite = models.DateField()
    plaza = models.CharField(max_length=50)

class Acuerdo(models.Model):
    titulo = models.CharField(max_length=200)
    descripcion = models.TextField()
    fecha_limite = models.DateField()

class SubtareaTicket(models.Model):
    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
    descripcion = models.CharField(max_length=200)
    completada = models.BooleanField(default=False)
    dependencias = models.ManyToManyField('self', blank=True)

class TareaProgramada(models.Model):
    nombre = models.CharField(max_length=200)
    frecuencia = models.CharField(max_length=20)  # DIARIA, SEMANAL, MENSUAL
    activa = models.BooleanField(default=True)

class ChatTicket(models.Model):
    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
    usuario = models.ForeignKey(User, on_delete=models.PROTECT)
    mensaje = models.TextField()
    fecha = models.DateTimeField(auto_now_add=True)

Ver: Módulo Tickets