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',)
|
||||
|
||||
|
||||
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):
|
||||
usuario = TextField(unique=True)
|
||||
nombre = TextField(default='')
|
||||
|
@ -1074,6 +1154,45 @@ class SATBancos(BaseModel):
|
|||
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):
|
||||
de_emisor = BooleanField(default=False)
|
||||
activa = BooleanField(default=True)
|
||||
|
@ -1671,6 +1790,132 @@ class Socios(BaseModel):
|
|||
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):
|
||||
nombre = TextField(default='')
|
||||
ubicacion = TextField(default='')
|
||||
|
@ -3212,24 +3457,6 @@ class FacturasComplementos(BaseModel):
|
|||
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):
|
||||
factura = ForeignKeyField(PreFacturas, related_name='original')
|
||||
factura_origen = ForeignKeyField(PreFacturas, related_name='relacion')
|
||||
|
@ -3511,6 +3738,94 @@ class PreFacturasImpuestos(BaseModel):
|
|||
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):
|
||||
respuesta = {'login': False, 'msg': 'No Autorizado', 'user': ''}
|
||||
values = util.get_con(args['rfc'])
|
||||
|
@ -3626,15 +3941,22 @@ def _init_values(rfc):
|
|||
|
||||
def _crear_tablas(rfc):
|
||||
tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion,
|
||||
Folios, Registro,
|
||||
Folios, Registro, CamposPersonalizados,
|
||||
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, FacturasPagos,
|
||||
FacturasRelacionadas, FacturasComplementos, Almacenes, Productos,
|
||||
FacturasRelacionadas, FacturasComplementos, FacturasPersonalizados,
|
||||
SeriesProductos, Almacenes, Productos,
|
||||
PreFacturas, PreFacturasDetalle, PreFacturasImpuestos,
|
||||
PreFacturasRelacionadas,
|
||||
PreFacturasRelacionadas, Tickets, TicketsDetalle, TicketsImpuestos,
|
||||
SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes,
|
||||
SATTipoRelacion, SATUnidades, SATUsoCfdi, SATBancos,
|
||||
Socios, Tags, Usuarios, CuentasBanco, TipoCambio, MovimientosBanco,
|
||||
CfdiPagos,
|
||||
SATNivelesEducativos,
|
||||
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(),
|
||||
Socios.tags.get_through_model(),
|
||||
Productos.impuestos.get_through_model(),
|
||||
|
|
|
@ -21,7 +21,7 @@ except ImportError:
|
|||
|
||||
|
||||
DEBUG = DEBUG
|
||||
VERSION = '0.2.1'
|
||||
VERSION = '1.2.0'
|
||||
EMAIL_SUPPORT = ('soporte@empresalibre.net',)
|
||||
|
||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||
|
|
|
@ -27,6 +27,16 @@
|
|||
{"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",
|
||||
"datos": [
|
||||
|
|
Loading…
Reference in New Issue