forked from elmau/empresa-libre
Agregar tablas para Alumnos y Tickets
This commit is contained in:
parent
9e150a103e
commit
7bdcdab7da
|
@ -226,6 +226,86 @@ class Tags(BaseModel):
|
||||||
order_by = ('tag',)
|
order_by = ('tag',)
|
||||||
|
|
||||||
|
|
||||||
|
class TipoDireccion(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoTitulo(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoTelefono(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoCorreo(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoPariente(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoResponsable(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoMovimientoAlumno(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
|
class TipoMovimientoAlmacen(BaseModel):
|
||||||
|
nombre = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.nombre
|
||||||
|
|
||||||
|
|
||||||
class Usuarios(BaseModel):
|
class Usuarios(BaseModel):
|
||||||
usuario = TextField(unique=True)
|
usuario = TextField(unique=True)
|
||||||
nombre = TextField(default='')
|
nombre = TextField(default='')
|
||||||
|
@ -1074,6 +1154,45 @@ class SATBancos(BaseModel):
|
||||||
return {'ok': result}
|
return {'ok': result}
|
||||||
|
|
||||||
|
|
||||||
|
class SATNivelesEducativos(BaseModel):
|
||||||
|
name = TextField(index=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('name',)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class NivelesEducativos(BaseModel):
|
||||||
|
nombre = TextField()
|
||||||
|
autorizacion = TextField(default='')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
indexes = (
|
||||||
|
(('nombre', 'autorizacion'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return '{} ({})'.format(self.nombre, self.autorizacion)
|
||||||
|
|
||||||
|
|
||||||
|
class Grupos(BaseModel):
|
||||||
|
nivel = ForeignKeyField(NivelesEducativos)
|
||||||
|
grado = TextField(default='')
|
||||||
|
nombre = TextField(default='')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nivel', 'grado', 'nombre')
|
||||||
|
indexes = (
|
||||||
|
(('nivel', 'grado', 'nombre'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return '{} {} {}'.format(self.nivel.nombre, self.grado, self.nombre)
|
||||||
|
|
||||||
|
|
||||||
class CuentasBanco(BaseModel):
|
class CuentasBanco(BaseModel):
|
||||||
de_emisor = BooleanField(default=False)
|
de_emisor = BooleanField(default=False)
|
||||||
activa = BooleanField(default=True)
|
activa = BooleanField(default=True)
|
||||||
|
@ -1671,6 +1790,132 @@ class Socios(BaseModel):
|
||||||
return bool(q.execute())
|
return bool(q.execute())
|
||||||
|
|
||||||
|
|
||||||
|
class Contactos(BaseModel):
|
||||||
|
socio = ForeignKeyField(Socios)
|
||||||
|
titulo = ForeignKeyField(TipoTitulo)
|
||||||
|
foto = TextField(default='')
|
||||||
|
nombre = TextField(index=True)
|
||||||
|
paterno = TextField(index=True)
|
||||||
|
materno = TextField(default='')
|
||||||
|
fecha_nacimiento = DateField(null=True)
|
||||||
|
notas = TextField(default='')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('socio', 'nombre')
|
||||||
|
indexes = (
|
||||||
|
(('socio', 'nombre', 'paterno', 'materno'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ContactoDirecciones(BaseModel):
|
||||||
|
contacto = ForeignKeyField(Contactos)
|
||||||
|
tipo = ForeignKeyField(TipoDireccion)
|
||||||
|
direccion = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('contacto',)
|
||||||
|
indexes = (
|
||||||
|
(('contacto', 'tipo', 'direccion'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ContactoTelefonos(BaseModel):
|
||||||
|
contacto = ForeignKeyField(Contactos)
|
||||||
|
tipo = ForeignKeyField(TipoTelefono)
|
||||||
|
telefono = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('contacto',)
|
||||||
|
indexes = (
|
||||||
|
(('contacto', 'tipo', 'telefono'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ContactoCorreos(BaseModel):
|
||||||
|
contacto = ForeignKeyField(Contactos)
|
||||||
|
tipo = ForeignKeyField(TipoCorreo)
|
||||||
|
correo = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('contacto',)
|
||||||
|
indexes = (
|
||||||
|
(('contacto', 'tipo', 'correo'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Alumnos(BaseModel):
|
||||||
|
rfc = TextField(null=True)
|
||||||
|
curp = TextField(index=True, unique=True)
|
||||||
|
foto = TextField(default='')
|
||||||
|
nombre = TextField(index=True)
|
||||||
|
paterno = TextField(index=True)
|
||||||
|
materno = TextField(default='')
|
||||||
|
calle = TextField(default='')
|
||||||
|
no_exterior = TextField(default='')
|
||||||
|
no_interior = TextField(default='')
|
||||||
|
colonia = TextField(default='')
|
||||||
|
municipio = TextField(default='')
|
||||||
|
estado = TextField(default='')
|
||||||
|
pais = TextField(default='')
|
||||||
|
codigo_postal = TextField(default='')
|
||||||
|
notas = TextField(default='')
|
||||||
|
telefonos = TextField(default='')
|
||||||
|
correos = TextField(default='')
|
||||||
|
es_activo = BooleanField(default=True)
|
||||||
|
fecha_alta = DateField(default=util.now)
|
||||||
|
fecha_nacimiento = DateField(null=True)
|
||||||
|
factura = ForeignKeyField(Socios, null=True)
|
||||||
|
grupo = ForeignKeyField(Grupos, null=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
t = '{} {} {}'
|
||||||
|
return t.format(self.nombre, self.paterno, self.materno)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre', 'paterno')
|
||||||
|
|
||||||
|
|
||||||
|
class AlumnosParientes(BaseModel):
|
||||||
|
alumno = ForeignKeyField(Alumnos)
|
||||||
|
tipo_pariente = ForeignKeyField(TipoPariente)
|
||||||
|
foto = TextField(default='')
|
||||||
|
nombre = TextField(index=True)
|
||||||
|
paterno = TextField(index=True)
|
||||||
|
materno = TextField(default='')
|
||||||
|
fecha_nacimiento = DateField(null=True)
|
||||||
|
puede_recoger = BooleanField(default=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('alumno',)
|
||||||
|
|
||||||
|
|
||||||
|
class ParienteDirecciones(BaseModel):
|
||||||
|
pariente = ForeignKeyField(AlumnosParientes)
|
||||||
|
tipo = ForeignKeyField(TipoDireccion)
|
||||||
|
direccion = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('pariente',)
|
||||||
|
|
||||||
|
|
||||||
|
class ParienteTelefonos(BaseModel):
|
||||||
|
pariente = ForeignKeyField(AlumnosParientes)
|
||||||
|
tipo = ForeignKeyField(TipoTelefono)
|
||||||
|
telefono = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('pariente',)
|
||||||
|
|
||||||
|
|
||||||
|
class ParienteCorreos(BaseModel):
|
||||||
|
pariente = ForeignKeyField(AlumnosParientes)
|
||||||
|
tipo = ForeignKeyField(TipoCorreo)
|
||||||
|
correo = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('pariente',)
|
||||||
|
|
||||||
|
|
||||||
class Almacenes(BaseModel):
|
class Almacenes(BaseModel):
|
||||||
nombre = TextField(default='')
|
nombre = TextField(default='')
|
||||||
ubicacion = TextField(default='')
|
ubicacion = TextField(default='')
|
||||||
|
@ -3212,24 +3457,6 @@ class FacturasComplementos(BaseModel):
|
||||||
return {r.nombre: util.loads(r.valores) for r in query}
|
return {r.nombre: util.loads(r.valores) for r in query}
|
||||||
|
|
||||||
|
|
||||||
# ~ class CfdiPagosFacturas(BaseModel):
|
|
||||||
# ~ pago = ForeignKeyField(CfdiPagos)
|
|
||||||
# ~ factura = ForeignKeyField(Facturas)
|
|
||||||
# ~ numero = IntegerField(default=1)
|
|
||||||
# ~ saldo_anterior = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
|
||||||
# ~ auto_round=True)
|
|
||||||
# ~ importe = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
|
||||||
# ~ auto_round=True)
|
|
||||||
# ~ saldo = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
|
||||||
# ~ auto_round=True)
|
|
||||||
|
|
||||||
# ~ class Meta:
|
|
||||||
# ~ order_by = ('pago',)
|
|
||||||
# ~ indexes = (
|
|
||||||
# ~ (('pago', 'factura', 'numero'), True),
|
|
||||||
# ~ )
|
|
||||||
|
|
||||||
|
|
||||||
class PreFacturasRelacionadas(BaseModel):
|
class PreFacturasRelacionadas(BaseModel):
|
||||||
factura = ForeignKeyField(PreFacturas, related_name='original')
|
factura = ForeignKeyField(PreFacturas, related_name='original')
|
||||||
factura_origen = ForeignKeyField(PreFacturas, related_name='relacion')
|
factura_origen = ForeignKeyField(PreFacturas, related_name='relacion')
|
||||||
|
@ -3511,6 +3738,94 @@ class PreFacturasImpuestos(BaseModel):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class CamposPersonalizados(BaseModel):
|
||||||
|
nombre = TextField()
|
||||||
|
slug = TextField(unique=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('nombre',)
|
||||||
|
|
||||||
|
|
||||||
|
class FacturasPersonalizados(BaseModel):
|
||||||
|
factura = ForeignKeyField(Facturas)
|
||||||
|
campo = TextField()
|
||||||
|
valor = TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('factura',)
|
||||||
|
|
||||||
|
|
||||||
|
class Tickets(BaseModel):
|
||||||
|
cliente = ForeignKeyField(Socios, null=True)
|
||||||
|
serie = TextField(default='')
|
||||||
|
folio = IntegerField(default=0)
|
||||||
|
fecha = DateTimeField(default=util.now, formats=['%Y-%m-%d %H:%M:%S'])
|
||||||
|
forma_pago = TextField(default='')
|
||||||
|
subtotal = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
descuento = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
total = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
total_trasladados = DecimalField(
|
||||||
|
max_digits=20, decimal_places=6, auto_round=True, null=True)
|
||||||
|
estatus = TextField(default='Generado')
|
||||||
|
notas = TextField(default='')
|
||||||
|
factura = ForeignKeyField(Facturas, null=True)
|
||||||
|
cancelado = BooleanField(default=False)
|
||||||
|
vendedor = TextField(default='')
|
||||||
|
comision = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
cambio = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('fecha',)
|
||||||
|
|
||||||
|
|
||||||
|
class TicketsDetalle(BaseModel):
|
||||||
|
ticket = ForeignKeyField(Tickets)
|
||||||
|
producto = ForeignKeyField(Productos, null=True)
|
||||||
|
descripcion = TextField(default='')
|
||||||
|
cantidad = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
valor_unitario = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
descuento = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
precio_final = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
importe = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('ticket',)
|
||||||
|
|
||||||
|
|
||||||
|
class TicketsImpuestos(BaseModel):
|
||||||
|
ticket = ForeignKeyField(Tickets)
|
||||||
|
impuesto = ForeignKeyField(SATImpuestos)
|
||||||
|
base = DecimalField(default=0.0, max_digits=20, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
importe = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
|
auto_round=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('ticket',)
|
||||||
|
indexes = (
|
||||||
|
(('ticket', 'impuesto'), True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SeriesProductos(BaseModel):
|
||||||
|
factura = ForeignKeyField(FacturasDetalle, null=True)
|
||||||
|
ticket = ForeignKeyField(TicketsDetalle, null=True)
|
||||||
|
serie = TextField(default='')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
order_by = ('serie',)
|
||||||
|
|
||||||
|
|
||||||
def authenticate(args):
|
def authenticate(args):
|
||||||
respuesta = {'login': False, 'msg': 'No Autorizado', 'user': ''}
|
respuesta = {'login': False, 'msg': 'No Autorizado', 'user': ''}
|
||||||
values = util.get_con(args['rfc'])
|
values = util.get_con(args['rfc'])
|
||||||
|
@ -3626,15 +3941,22 @@ def _init_values(rfc):
|
||||||
|
|
||||||
def _crear_tablas(rfc):
|
def _crear_tablas(rfc):
|
||||||
tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion,
|
tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion,
|
||||||
Folios, Registro,
|
Folios, Registro, CamposPersonalizados,
|
||||||
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, FacturasPagos,
|
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, FacturasPagos,
|
||||||
FacturasRelacionadas, FacturasComplementos, Almacenes, Productos,
|
FacturasRelacionadas, FacturasComplementos, FacturasPersonalizados,
|
||||||
|
SeriesProductos, Almacenes, Productos,
|
||||||
PreFacturas, PreFacturasDetalle, PreFacturasImpuestos,
|
PreFacturas, PreFacturasDetalle, PreFacturasImpuestos,
|
||||||
PreFacturasRelacionadas,
|
PreFacturasRelacionadas, Tickets, TicketsDetalle, TicketsImpuestos,
|
||||||
SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes,
|
SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes,
|
||||||
SATTipoRelacion, SATUnidades, SATUsoCfdi, SATBancos,
|
SATTipoRelacion, SATUnidades, SATUsoCfdi, SATBancos,
|
||||||
Socios, Tags, Usuarios, CuentasBanco, TipoCambio, MovimientosBanco,
|
SATNivelesEducativos,
|
||||||
CfdiPagos,
|
Socios, Contactos, ContactoCorreos, ContactoDirecciones,
|
||||||
|
ContactoTelefonos,
|
||||||
|
Tags, Usuarios, CuentasBanco, TipoCambio, MovimientosBanco,
|
||||||
|
TipoCorreo, TipoDireccion, TipoPariente, TipoResponsable, TipoTelefono,
|
||||||
|
TipoTitulo, TipoMovimientoAlumno, TipoMovimientoAlmacen,
|
||||||
|
CfdiPagos, NivelesEducativos, Alumnos, AlumnosParientes, Grupos,
|
||||||
|
ParienteDirecciones, ParienteTelefonos, ParienteCorreos,
|
||||||
Emisor.regimenes.get_through_model(),
|
Emisor.regimenes.get_through_model(),
|
||||||
Socios.tags.get_through_model(),
|
Socios.tags.get_through_model(),
|
||||||
Productos.impuestos.get_through_model(),
|
Productos.impuestos.get_through_model(),
|
||||||
|
|
|
@ -21,7 +21,7 @@ except ImportError:
|
||||||
|
|
||||||
|
|
||||||
DEBUG = DEBUG
|
DEBUG = DEBUG
|
||||||
VERSION = '0.2.1'
|
VERSION = '1.2.0'
|
||||||
EMAIL_SUPPORT = ('soporte@empresalibre.net',)
|
EMAIL_SUPPORT = ('soporte@empresalibre.net',)
|
||||||
|
|
||||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
|
@ -27,6 +27,16 @@
|
||||||
{"key": "ACT", "name": "Actividad", "activo": false}
|
{"key": "ACT", "name": "Actividad", "activo": false}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"tabla": "SATNivelesEducativos",
|
||||||
|
"datos": [
|
||||||
|
{"name": "Preescolar"},
|
||||||
|
{"name": "Primaria"},
|
||||||
|
{"name": "Secundaria"},
|
||||||
|
{"name": "Profesional técnico"},
|
||||||
|
{"name": "Bachillerato o su equivalente"}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"tabla": "SATTipoRelacion",
|
"tabla": "SATTipoRelacion",
|
||||||
"datos": [
|
"datos": [
|
||||||
|
|
Loading…
Reference in New Issue