diff --git a/source/app/models/main.py b/source/app/models/main.py index edae9fa..cc9916f 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -528,6 +528,29 @@ class Sucursales(BaseModel): order_by = ('nombre',) +class Roles(BaseModel): + nombre = TextField(default='') + + class Meta: + order_by = ('nombre',) + + +class Permisos(BaseModel): + rol = ForeignKeyField(Roles) + modulo = TextField(default='') + ver = BooleanField(default=False) + agregar = BooleanField(default=False) + editar = BooleanField(default=False) + eliminar = BooleanField(default=False) + especiales = TextField(default='') + + class Meta: + order_by = ('rol', 'modulo') + indexes = ( + (('rol', 'modulo'), True), + ) + + class Usuarios(BaseModel): usuario = TextField(unique=True) nombre = TextField(default='') @@ -540,6 +563,7 @@ class Usuarios(BaseModel): fecha_ingreso = DateTimeField(default=util.now) ultimo_ingreso = DateTimeField(null=True) sucursal = ForeignKeyField(Sucursales, null=True) + rol = ForeignKeyField(Roles, null=True) def __str__(self): t = '{} {} ({})' @@ -897,6 +921,7 @@ class Folios(BaseModel): inicio = IntegerField(default=1) default = BooleanField(default=False) usarcon = TextField(default='') + plantilla = TextField(default='') class Meta: order_by = ('-default', 'serie', 'inicio') @@ -2305,6 +2330,7 @@ class Addendas(BaseModel): class Socios(BaseModel): tipo_persona = IntegerField(default=1) rfc = TextField(index=True) + id_fiscal = TextField(default='') nombre = TextField(index=True) slug = TextField(default='') nombre_comercial = TextField(index=True, default='') @@ -2338,6 +2364,7 @@ class Socios(BaseModel): addenda = ForeignKeyField(Addendas, null=True) uso_cfdi = ForeignKeyField(SATUsoCfdi, null=True) tags = ManyToManyField(Tags, related_name='socios_tags') + plantilla = TextField(default='') def __str__(self): t = '{} ({})' @@ -4782,6 +4809,7 @@ class PreFacturasDetalle(BaseModel): nivel = TextField(default='') autorizacion = TextField(default='') cuenta_predial = TextField(default='') + unidad = TextField(default='') class Meta: order_by = ('factura',) @@ -7057,7 +7085,7 @@ def _init_values(rfc): def _crear_tablas(rfc): tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion, - Folios, Registro, CamposPersonalizados, + Folios, Registro, CamposPersonalizados, Permisos, Emisor, Facturas, FacturasDetalle, FacturasImpuestos, FacturasPagos, FacturasRelacionadas, FacturasComplementos, FacturasPersonalizados, SeriesProductos, Almacenes, Productos, RangosPrecios, Sucursales, @@ -7071,7 +7099,7 @@ def _crear_tablas(rfc): SATTipoPercepcion, SATTipoRegimen, Socios, Contactos, ContactoCorreos, ContactoDirecciones, Empleados, ContactoTelefonos, Departamentos, Puestos, - Tags, Usuarios, CuentasBanco, TipoCambio, MovimientosBanco, + Tags, Roles, Usuarios, CuentasBanco, TipoCambio, MovimientosBanco, TipoCorreo, TipoDireccion, TipoPariente, TipoResponsable, TipoTelefono, TipoTitulo, TipoMovimientoAlumno, TipoMovimientoAlmacen, CfdiPagos, NivelesEducativos, Alumnos, AlumnosParientes, Grupos, @@ -7133,7 +7161,7 @@ def _migrate_tables(): CfdiNominaHorasExtra, CfdiNominaIncapacidad, CfdiNominaJubilacion, CfdiNominaOtroPago, CfdiNominaOtros, CfdiNominaPercepciones, CfdiNominaRelacionados, CfdiNominaSeparacion, CfdiNominaSubcontratos, - CfdiNominaTotales, SATNivelesEducativos + CfdiNominaTotales, SATNivelesEducativos, Roles, Permisos ] log.info('Creando tablas nuevas...') database_proxy.create_tables(tablas, True) @@ -7148,6 +7176,10 @@ def _migrate_tables(): sucursal = ForeignKeyField(Sucursales, null=True, to_field=Sucursales.id) migrations.append( migrator.add_column('usuarios', 'sucursal_id', sucursal)) + if not 'rol_id' in columns: + rol = ForeignKeyField(Roles, null=True, to_field=Roles.id) + migrations.append( + migrator.add_column('usuarios', 'rol_id', rol)) columns = [c.name for c in database_proxy.get_columns('emisor')] if not 'registro_patronal' in columns: @@ -7160,6 +7192,29 @@ def _migrate_tables(): migrations.append( migrator.add_column('emisor', 'curp', curp)) + columns = [c.name for c in database_proxy.get_columns('socios')] + if not 'id_fiscal' in columns: + id_fiscal = TextField(default='') + migrations.append( + migrator.add_column( + 'socios', 'id_fiscal', id_fiscal)) + if not 'plantilla' in columns: + plantilla = TextField(default='') + migrations.append( + migrator.add_column('socios', 'plantilla', plantilla)) + + columns = [c.name for c in database_proxy.get_columns('folios')] + if not 'plantilla' in columns: + plantilla = TextField(default='') + migrations.append( + migrator.add_column('folios', 'plantilla', plantilla)) + + columns = [c.name for c in database_proxy.get_columns('prefacturasdetalle')] + if not 'unidad' in columns: + unidad = TextField(default='') + migrations.append( + migrator.add_column('prefacturasdetalle', 'unidad', unidad)) + if migrations: with database_proxy.atomic() as txn: migrate(*migrations) diff --git a/source/db/valores_iniciales.json b/source/db/valores_iniciales.json index 5f21429..2067cd5 100644 --- a/source/db/valores_iniciales.json +++ b/source/db/valores_iniciales.json @@ -102,7 +102,7 @@ {"key": "610", "name": "Residentes en el Extranjero sin Establecimiento Permanente en México", "fisica": true, "moral": true, "activo": false}, {"key": "611", "name": "Ingresos por Dividendos (socios y accionistas)", "fisica": true, "activo": false}, {"key": "612", "name": "Personas Físicas con Actividades Empresariales y Profesionales", "fisica": true, "activo": true, "default": true}, - {"key": "614", "name": "Ingresos por intereses", "fisica": true, "activo": false}, + {"key": "614", "name": "Ingresos por intereses", "fisica": true, "activo": true}, {"key": "616", "name": "Sin obligaciones fiscales", "fisica": true, "activo": false}, {"key": "620", "name": "Sociedades Cooperativas de Producción que optan por diferir sus ingresos", "moral": true, "activo": false}, {"key": "621", "name": "Incorporación Fiscal", "fisica": true, "activo": true},