Agregar tablas para facturar
This commit is contained in:
parent
85c0804ecd
commit
e57001db56
|
@ -32,7 +32,7 @@ def conectar():
|
|||
|
||||
class Configuracion(BaseModel):
|
||||
clave = TextField()
|
||||
valor = TextField()
|
||||
valor = TextField(default='')
|
||||
|
||||
class Meta:
|
||||
order_by = ('clave',)
|
||||
|
@ -86,8 +86,25 @@ class SATRegimenes(BaseModel):
|
|||
class Emisor(BaseModel):
|
||||
rfc = TextField(index=True)
|
||||
nombre = TextField()
|
||||
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='')
|
||||
moral = BooleanField(default=False)
|
||||
cp_expedicion = TextField(default='')
|
||||
es_moral = BooleanField(default=False)
|
||||
es_ong = BooleanField(default=False)
|
||||
es_escuela = BooleanField(default=False)
|
||||
autorizacion = TextField(default='')
|
||||
fecha_autorizacion = DateField(null=True)
|
||||
fecha_dof = DateField(null=True)
|
||||
telefono = TextField(default='')
|
||||
correo = TextField(default='')
|
||||
web = TextField(default='')
|
||||
curp = TextField(default='')
|
||||
regimenes = ManyToManyField(SATRegimenes, related_name='emisores')
|
||||
|
||||
def __str__(self):
|
||||
|
@ -114,51 +131,263 @@ class Certificado(BaseModel):
|
|||
return self.serie
|
||||
|
||||
|
||||
class Clients(BaseModel):
|
||||
person_type = IntegerField(default=0)
|
||||
rfc = FixedCharField(max_length=13, index=True)
|
||||
name = CharField(max_length=1000, index=True)
|
||||
street = FixedCharField(max_length=200, default='')
|
||||
num_ext = FixedCharField(max_length=25, default='')
|
||||
num_int = FixedCharField(max_length=25, default='')
|
||||
postal_code = FixedCharField(max_length=15, default='')
|
||||
colonia = FixedCharField(max_length=100, default='')
|
||||
municipio = FixedCharField(max_length=100, default='')
|
||||
state = FixedCharField(max_length=100, default='')
|
||||
country = FixedCharField(max_length=100, default='')
|
||||
conditions_pay = FixedCharField(max_length=250, default='')
|
||||
days_pay = IntegerField(default=0)
|
||||
business_days = BooleanField(default=False)
|
||||
is_active = BooleanField(default=True)
|
||||
commercial_name = CharField(max_length=1000, default='')
|
||||
phones = CharField(max_length=500, default='')
|
||||
web_page = CharField(max_length=500, default='')
|
||||
invoice_email = CharField(max_length=500, default='')
|
||||
is_client = BooleanField(default=False)
|
||||
is_supplier = BooleanField(default=False)
|
||||
is_ong = BooleanField(default=False)
|
||||
account_client = FixedCharField(max_length=100, default='')
|
||||
account_supplier = FixedCharField(max_length=100, default='')
|
||||
notes = CharField(max_length=5000)
|
||||
class Folios(BaseModel):
|
||||
serie = TextField()
|
||||
inicio = IntegerField(default=1)
|
||||
default = BooleanField(default=False)
|
||||
usar_con = TextField(default='T')
|
||||
|
||||
def __str__(self):
|
||||
t = '{} ({})'
|
||||
return t.format(self.name, self.rfc)
|
||||
class Meta:
|
||||
order_by = ('-default', 'serie', 'inicio')
|
||||
indexes = (
|
||||
(('serie', 'inicio'), True),
|
||||
)
|
||||
|
||||
|
||||
class Categorias(BaseModel):
|
||||
categoria = TextField()
|
||||
id_padre = IntegerField(default=0)
|
||||
|
||||
class Meta:
|
||||
order_by = ('categoria',)
|
||||
indexes = (
|
||||
(('categoria', 'id_padre'), True),
|
||||
)
|
||||
|
||||
|
||||
class CondicionesPago(BaseModel):
|
||||
condicion = TextField(unique=True)
|
||||
|
||||
class Meta:
|
||||
order_by = ('condicion',)
|
||||
|
||||
|
||||
class SATUnidades(BaseModel):
|
||||
key = TextField(unique=True, index=True)
|
||||
name = TextField(default='', index=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('name',)
|
||||
indexes = (
|
||||
(('rfc', 'name'), True),
|
||||
(('key', 'name'), True),
|
||||
)
|
||||
|
||||
|
||||
class ClientsTags(BaseModel):
|
||||
client = ForeignKeyField(Clients)
|
||||
tag = ForeignKeyField(Tags)
|
||||
class SATFormaPago(BaseModel):
|
||||
key = TextField(unique=True, index=True)
|
||||
name = TextField(default='', index=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-default', 'name',)
|
||||
indexes = (
|
||||
(('client', 'tag'), True),
|
||||
(('key', 'name'), True),
|
||||
)
|
||||
|
||||
|
||||
class SATAduanas(BaseModel):
|
||||
key = TextField(unique=True, index=True)
|
||||
name = TextField(default='', index=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-default', 'name',)
|
||||
indexes = (
|
||||
(('key', 'name'), True),
|
||||
)
|
||||
|
||||
|
||||
class SATMonedas(BaseModel):
|
||||
key = TextField(unique=True, index=True)
|
||||
name = TextField(default='', index=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-default', 'name',)
|
||||
indexes = (
|
||||
(('key', 'name'), True),
|
||||
)
|
||||
|
||||
|
||||
class SATImpuestos(BaseModel):
|
||||
key = TextField(index=True)
|
||||
name = TextField(default='', index=True)
|
||||
factor = TextField(default='T')
|
||||
tipo = TextField(default='T')
|
||||
tasa = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-default', 'name',)
|
||||
indexes = (
|
||||
(('key', 'factor', 'tipo', 'tasa'), True),
|
||||
)
|
||||
|
||||
|
||||
class SATUsoCfdi(BaseModel):
|
||||
key = TextField(index=True, unique=True)
|
||||
name = TextField(default='', index=True)
|
||||
activo = BooleanField(default=False)
|
||||
default = BooleanField(default=False)
|
||||
fisica = BooleanField(default=True)
|
||||
moral = BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
order_by = ('-default', 'name',)
|
||||
indexes = (
|
||||
(('key', 'name'), True),
|
||||
)
|
||||
|
||||
|
||||
class Addendas(BaseModel):
|
||||
nombre = TextField(unique=True)
|
||||
addenda = TextField()
|
||||
|
||||
class Meta:
|
||||
order_by = ('nombre',)
|
||||
|
||||
|
||||
class Socios(BaseModel):
|
||||
rfc = TextField(index=True)
|
||||
nombre = TextField(index=True)
|
||||
nombre_comercial = TextField(index=True)
|
||||
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='')
|
||||
es_activo = BooleanField(default=True)
|
||||
es_moral = BooleanField(default=False)
|
||||
es_extranjero = BooleanField(default=False)
|
||||
es_ong = BooleanField(default=False)
|
||||
fecha_alta = DateField(default=util.now)
|
||||
dias_pago = IntegerField(default=0)
|
||||
dias_habiles = BooleanField(default=False)
|
||||
es_cliente = BooleanField(default=False)
|
||||
es_proveedor = BooleanField(default=False)
|
||||
cuenta_cliente = TextField(default='')
|
||||
cuenta_proveedor = TextField(default='')
|
||||
web = TextField(default='')
|
||||
correo_facturas = TextField(default='')
|
||||
condicion_pago = ForeignKeyField(CondicionesPago, null=True)
|
||||
addenda = ForeignKeyField(Addendas, null=True)
|
||||
tags = ManyToManyField(Tags, related_name='socios_tags')
|
||||
|
||||
def __str__(self):
|
||||
t = '{} ({})'
|
||||
return t.format(self.nombre, self.rfc)
|
||||
|
||||
class Meta:
|
||||
order_by = ('nombre',)
|
||||
indexes = (
|
||||
(('rfc', 'nombre'), True),
|
||||
)
|
||||
|
||||
|
||||
class Productos(BaseModel):
|
||||
categoria = ForeignKeyField(Categorias, null=True)
|
||||
clave = TextField(unique=True, index=True)
|
||||
clave_sat = TextField()
|
||||
descripcion = TextField(index=True)
|
||||
unidad = ForeignKeyField(SATUnidades)
|
||||
valor_unitario = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
ultimo_costo = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
descuento = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
inventario = BooleanField(default=False)
|
||||
existencia = DoubleField(default=0.0)
|
||||
minimo = DoubleField(default=0.0)
|
||||
codigo_barras = TextField(default='')
|
||||
cuenta_predial = TextField(default='')
|
||||
es_activo = BooleanField(default=True)
|
||||
impuestos = ManyToManyField(SATImpuestos, related_name='productos')
|
||||
tags = ManyToManyField(Tags, related_name='productos_tags')
|
||||
|
||||
class Meta:
|
||||
order_by = ('descripcion',)
|
||||
|
||||
|
||||
class Facturas(BaseModel):
|
||||
cliente = ForeignKeyField(Socios)
|
||||
serie = TextField(default='')
|
||||
folio = IntegerField(default=0)
|
||||
fecha = DateTimeField(default=util.now)
|
||||
fecha_timbrado = DateTimeField(null=True)
|
||||
forma_pago = TextField(default='')
|
||||
condiciones_pago = TextField(default='')
|
||||
subtotal = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
descuento = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
moneda = TextField(default='MXN')
|
||||
tipo_cambio = DecimalField(default=1.0, decimal_places=6, auto_round=True)
|
||||
total = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
total_mn = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
tipo_comprobante = TextField(default='I')
|
||||
metodo_pago = TextField(default='PUE')
|
||||
lugar_expedicion = TextField(default='')
|
||||
confirmacion = TextField(default='')
|
||||
uso_cfdi = TextField(default='')
|
||||
total_retenciones = DecimalField(
|
||||
decimal_places=6, auto_round=True, null=True)
|
||||
total_trasladados = DecimalField(
|
||||
decimal_places=6, auto_round=True, null=True)
|
||||
xml = TextField(default='')
|
||||
uuid = UUIDField(null=True)
|
||||
estatus = TextField(default='Guardada')
|
||||
regimen_fiscal = TextField(default='')
|
||||
notas = TextField(default='')
|
||||
pagada = BooleanField(default=False)
|
||||
error = TextField(default='')
|
||||
|
||||
class Meta:
|
||||
order_by = ('fecha',)
|
||||
|
||||
|
||||
class FacturasDetalle(BaseModel):
|
||||
factura = ForeignKeyField(Facturas)
|
||||
producto = ForeignKeyField(Productos, null=True)
|
||||
cantidad = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
valor_unitario = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
descuento = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
precio_final = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
importe = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
descripcion = TextField(default='')
|
||||
unidad = TextField(default='')
|
||||
clave = TextField(default='')
|
||||
clave_sat = TextField(default='')
|
||||
categoria = TextField(default='')
|
||||
aduana = TextField(default='')
|
||||
pedimento = TextField(default='')
|
||||
fecha_pedimento = DateField(null=True)
|
||||
alumno = TextField(default='')
|
||||
curp = TextField(default='')
|
||||
nivel = TextField(default='')
|
||||
autorizacion = TextField(default='')
|
||||
cuenta_predial = TextField(default='')
|
||||
|
||||
class Meta:
|
||||
order_by = ('factura',)
|
||||
|
||||
|
||||
class FacturasImpuestos(BaseModel):
|
||||
factura = ForeignKeyField(Facturas)
|
||||
impuesto = ForeignKeyField(SATImpuestos)
|
||||
base = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
importe = DecimalField(default=0.0, decimal_places=6, auto_round=True)
|
||||
|
||||
class Meta:
|
||||
order_by = ('factura',)
|
||||
indexes = (
|
||||
(('factura', 'impuesto'), True),
|
||||
)
|
||||
|
||||
|
||||
|
@ -250,8 +479,15 @@ def _init_values():
|
|||
|
||||
def _crear_tablas():
|
||||
conectar()
|
||||
tablas = [Configuracion, Tags, Usuarios,
|
||||
Certificado, Emisor, Emisor.regimenes.get_through_model()]
|
||||
tablas = [Addendas, Categorias, Certificado, CondicionesPago, Configuracion,
|
||||
Emisor, Facturas, FacturasDetalle, FacturasImpuestos, Folios, Productos,
|
||||
SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes,
|
||||
SATUnidades, SATUsoCfdi, Socios, Tags, Usuarios,
|
||||
Emisor.regimenes.get_through_model(),
|
||||
Socios.tags.get_through_model(),
|
||||
Productos.impuestos.get_through_model(),
|
||||
Productos.tags.get_through_model(),
|
||||
]
|
||||
database.create_tables(tablas, True)
|
||||
log.info('Tablas creadas correctamente...')
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue