# encoding:utf-8 from django.db import models from dependencias.models import * from datetime import datetime # Create your models here. # categoria = ( # ('Computo','Computo: Laptops - Computadoras de Escritorio - Tabletas - Notebook'), # ('Almacenamiento','Almacenamiento: SAN - NAS - Discos Duros - Usb - CD - DVD'), # ('Procesamiento','Procesamiento: Servidores - Blades - Workstation'), # ('Comunicaciones','Comunicaciones: Switch - Routers - DBX - Teléfonos - Acces Point - UTM'), # ('Cableado','Cableado: UTP - Fibra.Óptica - Jumpers - Jack - Patch Panel - Racks'), # ('Energia','Energía: UPS - Plantas de Energía - Supresores de Transición - Tierra Física'), # ('H-Back','H-Back: Mini Split - Aires de Presión - Aires Industriales'), # ('Impresión','Impresión: Scaners - Impresoras - Multifuncionales - Copiadoras'),) class categoria(models.Model): clave = models.CharField(max_length=100) descripcion = models.CharField(max_length=500) class Meta: ordering = ['clave'] verbose_name = 'Categorias' verbose_name_plural = 'Estatus' def __unicode__(self): return u'%s :: %s' % (self.clave, self.descripcion) class bitacora(models.Model): fecha_registro = models.DateField('fecha registro', help_text='fecha de registro del elemento', auto_now_add=False, ) fecha_ultimo_cambio = models.DateTimeField('fecha del ultimo cambio', help_text='fecha de la ultima modificación registrada', auto_now=False, ) activo = models.BooleanField('activo', help_text='estado del registro', default=True, ) usuario = models.ForeignKey(User) class Meta: abstract = True class catalogo(bitacora): clave = models.CharField('clave', max_length=10, help_text='Clave de identificación', blank=True, ) nombre = models.CharField('nombre', max_length=150, help_text='nombre del elemento', ) descripcion = models.CharField('descripción', max_length=100, help_text='descripción breve del elemento', blank=True, ) class Meta: abstract = True ordering = ['clave', 'nombre'] def __unicode__(self): return u'%s - %s' % (self.clave, self.nombre,) class estatus(catalogo): color = models.CharField('color', max_length=17, help_text='color de identificacion') secuencia = models.IntegerField() class Meta: ordering = ['secuencia'] verbose_name = 'Estatus' verbose_name_plural = 'Estatus' def color_(self): return '%s' % (self.color, self.nombre) color_.allow_tags = True def asigna_icono(extension): r = None if extension != '': r = extension else: r = 'TXT' if r == 'BMP' or r == 'GIF': r = '%s icol-image-1' % (extension) elif r == 'JPG' or r == 'JPEG': r = '%s icol-images' % (extension) elif r == 'PDF': r = '%s icol-doc-pdf' % (extension) elif r == 'XLS' or r == 'DOC' or r == 'XLSX' or r == 'DOCX': r = '%s icol-doc-offlice' % (extension) elif r == 'ZIP' or r == 'RAR': r = '%s icol-compress' % (extension) elif r == 'TXT': r = '%s icol-doc-text-image' % (extension) else: r = 'S.EX icol-doc-text-image' return r class catalogoDependencias(models.Model): clave = models.CharField(max_length=150) nombre = models.CharField(max_length=150) ejercicio = models.IntegerField() def __unicode__(self): return u'%s - %s' % (self.clave, self.nombre) class usuario_dependencia(models.Model): usuario = models.ForeignKey(User) dependencia = models.ForeignKey(catalogoDependencias) def __unicode__(self): return u'%s--%s' % (self.usuario.first_name, self.dependencia.nombre) class anuencia_datos(bitacora): fecha_solicitud = models.DateField('Fecha de solicitud', blank=False, null=False) fecha_recepcion = models.DateTimeField('Fecha de recepción', blank=True, null=True, ) dependencias = models.ForeignKey(catalogoDependencias, help_text='Selecione el proyecto y la partida a la que pertenece', blank=False, null=False) no_oficio = models.CharField('Número de Oficio', max_length=120, help_text='Ingrese la clave de dependencia/departamento/consecutivo/año', blank=False, null=False) contacto_tecnico = models.CharField('Contacto Técnico', help_text='Nombre de la persona Responsable', max_length=150, blank=False, null=False) telefono_fax = models.CharField('Teléfono / fax', max_length=15, help_text='Teléfono o fax', blank=False, null=False) extension = models.CharField('Extensión', max_length=6, help_text='Extensión', blank=True, null=True) correo_electronico = models.EmailField('Correo electrónico', max_length=150, help_text='Correo electrónico', blank=False, null=True) no_requisicion = models.CharField('Número de requisición', max_length=25, help_text='Número de requisición, si ya cuenta con ella',blank=True, null=True) estatus = models.ForeignKey(estatus, default=1, help_text='Estatus de la anuencia') autorizacion_presupuesto = models.FileField('Autorización Presupuesto', upload_to='cargas', help_text='Digitalización de autorización presupuestal', blank=True, null=True) autorizacion_tecnica = models.FileField(upload_to='cargas', help_text='Digitalización de autorización técnica', blank=True, null=True) cotizaciones = models.FileField(upload_to='cargas', help_text='Digitalización de cotizaciones; ZIP o RAR de ser varias', blank=True, null=True) justificacion = models.TextField('Justificación', max_length=300, help_text='Justificación técnica', blank=False, null=True) puesto_responsable = models.CharField('Puesto del Responsable', max_length=150, null=True, blank=False) oficio_dgtic = models.CharField('NO de Oficio de SA', max_length=25, help_text='Ingrese El Folio de la Secretaria de Administracion', null=True, blank=True) rstatus = models.CharField(max_length=12, null=True, blank=True) fecha_calificacion = models.DateField(null=True,blank=True) fecha_validacion = models.DateField(null=True,blank=True) fecha_validacion_precio = models.DateField(null=True,blank=True) fecha_autorizacion = models.DateField(null=True,blank=True) documentacion = models.BooleanField(default = False) lineamientos = models.BooleanField(default = False) precio_mercado = models.BooleanField(default=None) analisis_factibilidad = models.BooleanField(default=False) requisicion = models.FileField(upload_to='cargas', help_text='Digitalización de la Requisicion', null=True, blank=True) no_revision = models.IntegerField(default=0) observacion_data = models.TextField('observacion', max_length=300, help_text='Observacion', blank=False,null=True) fecha_modificacion_dependencia = models.DateTimeField() se_imprimio = models.BooleanField(default=True) def __unicode__(self): return u'%s' % (self.id) def estatus_(self): return '
    
%s
' % ( self.estatus.color, self.estatus.color, self.estatus.nombre) estatus_.allow_tags = True def dependencia_(self): d = Perfil.objects.get(usuario_id=self.usuario) return u'%s' % (d.direccion.nombre) def clave(self): d = Perfil.objects.get(usuario_id=self.usuario) return u'%s' % (d.direccion.clave) def autorizacion_presupuesto_tipo(self): r = None if self.autorizacion_presupuesto != '': r = u'%s' % (self.autorizacion_presupuesto) if '.' in r: r = r.split('.')[1].upper() r = asigna_icono(r) else: r = asigna_icono(None) return u'%s' % (r) def autorizacion_tecnica_tipo(self): r = None if self.autorizacion_tecnica != '': r = u'%s' % (self.autorizacion_tecnica) if '.' in r: r = r.split('.')[1].upper() r = asigna_icono(r) else: r = asigna_icono(None) return u'%s' % (r) def cotizaciones_tipo(self): r = None if self.cotizaciones != '': r = u'%s' % (self.cotizaciones) if '.' in r: r = r.split('.')[1].upper() r = asigna_icono(r) else: r = asigna_icono(None) return u'%s' % (r) def requisision(self): r = None if self.requisision != '': r = u'%s' % (self.requisision) if '.' in r: r = r.split('.')[1].upper() r = asigna_icono(r) else: r = asigna_icono(None) return u'%s' % (r) def total_articulos(self): d = anuencia_detalle.objects.filter(anuencia_id=self.id) return u'%s' % (d.count()) class Meta: verbose_name = 'anuencia' verbose_name_plural = 'anuencias' class addProyectos(models.Model): dependencia = models.ForeignKey(catalogoDependencias) clave = models.CharField(max_length=100) nombre = models.CharField(max_length=800) ejercicio = models.IntegerField() def __unicode__(self): return u'%s - %s' % (self.clave, self.nombre) class addPartidas(models.Model): clave = models.CharField(max_length=100) nombre = models.CharField(max_length=200) ejercicio = models.IntegerField() proyectos = models.ManyToManyField(addProyectos, blank=True, null=True) def __unicode__(self): return u'%s - %s' % (self.clave, self.nombre) class anuencia_detalle(bitacora): anuencia = models.ForeignKey(anuencia_datos) proyecto = models.ForeignKey(addProyectos, help_text='Selecione el proyecto y la partida a la que pertenece') # proyecto = models.ForeignKey(addProyectos, help_text = 'Selecione el proyecto y la partida a la que pertenece') partida = models.ForeignKey(addPartidas, help_text='Selecione el proyecto y la partida a la que pertenece') no_lote = models.CharField(max_length=3, blank=True, null=True, help_text='Número de lote al que pertenece el artículo') articulo = models.CharField(max_length=300, help_text='Nombre del artículo') categoria = models.ForeignKey(categoria, help_text='Categoria a la que pertenece el articulo') descripcion = models.TextField(max_length=500, help_text='Descripción breve') cantidad = models.IntegerField(help_text='Número de piezas') precio = models.DecimalField(decimal_places=4, max_digits=20, help_text='Precio unitario') iva = models.IntegerField(max_length=3) total = models.DecimalField(decimal_places=2, max_digits=20, help_text='Precio con Iva') sin_iva = models.BooleanField(default=False) url = models.URLField(help_text='Página web del artículo', blank=True, null=True, ) autorizado = models.BooleanField(default=False) observaciones = models.TextField('Observaciones', max_length=300, blank=True, null=True, help_text='Escriba aquí si desea agregar alguna Observacion') def __unicode__(self): return u'%s - %s' % (self.anuencia.id, self.id) def subtotal(self): r = None if self.precio != '' and self.cantidad != '': r = u'%s' % (self.total * self.cantidad) return u'%s' % (r) class Meta: verbose_name = 'detalle' verbose_name_plural = 'detalles' # def save(self, *args, **kwargs): # for field_name in ['articulo', 'descripcion']: # val = getattr(self, field_name, False) # if val: # setattr(self, field_name, val.upper()) # for field_name in ['nombre']: # val = getattr(self, field_name, False) # if val: # setattr(self, field_name, val.capitalize()) # super(anuencia_detalle, self).save(*args, **kwargs) class revision(bitacora): anuencia = models.ForeignKey(anuencia_datos) def __unicode__(self): return u'%s' % (self.anuencia) class Meta: verbose_name = 'revision' verbose_name_plural = 'revisiones' class autorizacion(bitacora): anuencia = models.ForeignKey(anuencia_datos) # usuario = quien autoriza la anuencia # fecha_registro = fecha en que se registra la autorizacion def __unicode__(self): return u'%s' % (self.anuencia) class Meta: verbose_name = 'autorizacion' verbose_name_plural = 'autorizaciones' class tipo_usuario(models.Model): clave = models.CharField('clave', max_length=10, help_text='Clave de identificación', blank=True, ) nombre = models.CharField('nombre', max_length=50, help_text='nombre del elemento', ) def __unicode__(self): return u'%s - %s' % (self.clave, self.nombre) class Perfil(models.Model): tipo = models.ForeignKey(tipo_usuario) usuario = models.ForeignKey(User) direccion = models.ForeignKey(catalogoDependencias) # direccion = models.ForeignKey( adscripcion, verbose_name = 'Adscripcion', null = True, blank = True ) def __unicode__(self): return u'%s - %s' % (self.usuario.id, self.usuario.username) class Meta: ordering = ['-id'] verbose_name_plural = 'Perfiles' unique_together = ['usuario'] ##MAPEADO DE LA VISTA DE PROVEEDORES## class ProveedorView(models.Model): id = models.IntegerField(primary_key=True) numero_finanzas = models.IntegerField() razon_social = models.CharField(max_length=100) razon_comercial = models.CharField(max_length=100) rfc = models.CharField(max_length=15) fecha_inicio = models.DateField() representante_legal = models.CharField(max_length=80) tipo_representante = models.IntegerField() numero_protocolo = models.CharField(max_length=200) status_id = models.IntegerField() descripcion = models.CharField(max_length=50) prioridad = models.IntegerField() class Meta: verbose_name = 'Proveedor' verbose_name_plural = 'Proveedores' db_table = 'proveedores_vw' managed = False def __unicode__(self): return '%s' % (self.razon_social) class anuencia_proveedor(models.Model): anuencia = models.ForeignKey(anuencia_datos) proveedor_id=models.IntegerField(max_length=10) def __unicode__(self): return u'%s - %s' % (self.anuencia, self.proveedor_id) class proveedor_proveedorview(models.Model): id = models.IntegerField(primary_key=True) anuencia_id = models.IntegerField() proveedor_id = models.IntegerField() razon_social = models.CharField(max_length=200) class Meta: verbose_name = 'proveedor_proveedorview' verbose_name_plural = 'proveedores_proveedorviews' db_table = 'proveedor_proveedorview' managed = False def __unicode__(self): return '%s, %s' % (self.anuencia_id,self.razon_social) class observaciones(models.Model): observacion = models.TextField('Observacion', max_length=300, help_text='Observaciones', blank=False,null=True) lote = models.IntegerField(blank=True, null=True) fecha = models.DateField() anuencia = models.ForeignKey(anuencia_datos) usuario = models.ForeignKey(User) estatus = models.ForeignKey(estatus) def __unicode__(self): return '%s, %s' % self.anuencia_id