Major Refactor: Refactor the codebase to improve readability and maintainability

This commit is contained in:
2026-06-21 23:38:49 -04:00
parent 9c4753cd1f
commit 801b0b97fc
46 changed files with 2378 additions and 2031 deletions

0
models/__init__.py Normal file
View File

96
models/models.py Normal file
View File

@@ -0,0 +1,96 @@
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
_TABLE_ARGS = {'sqlite_autoincrement': True}
class Zona(db.Model):
__tablename__ = 'zonas'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True, nullable=False)
class Modulo(db.Model):
__tablename__ = 'modulos'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
zona_id = db.Column(db.Integer, db.ForeignKey('zonas.id'), nullable=False)
name = db.Column(db.String, nullable=False)
class Producto(db.Model):
__tablename__ = 'productos'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True, nullable=False)
class PrecioHistorico(db.Model):
__tablename__ = 'precios_historicos'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
producto_id = db.Column(db.Integer, db.ForeignKey('productos.id'), nullable=False)
zona_id = db.Column(db.Integer, db.ForeignKey('zonas.id'), nullable=False)
price = db.Column(db.Integer, nullable=False)
commission = db.Column(db.Integer, nullable=False)
fecha_activacion = db.Column(db.DateTime, nullable=False)
class Worker(db.Model):
__tablename__ = 'workers'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
rut = db.Column(db.String, unique=True, nullable=False)
name = db.Column(db.String, nullable=False)
phone = db.Column(db.String, nullable=False)
password_hash = db.Column(db.String, nullable=False)
is_admin = db.Column(db.Boolean, default=False)
modulo_id = db.Column(db.Integer, db.ForeignKey('modulos.id'))
tipo = db.Column(db.String, default='Full Time')
class Rendicion(db.Model):
__tablename__ = 'rendiciones'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
worker_id = db.Column(db.Integer, db.ForeignKey('workers.id'), nullable=False)
worker_comision = db.Column(db.Boolean, default=True)
companion_id = db.Column(db.Integer, db.ForeignKey('workers.id'))
modulo_id = db.Column(db.Integer, db.ForeignKey('modulos.id'), nullable=False)
fecha = db.Column(db.Date, nullable=False)
hora_entrada = db.Column(db.String, nullable=False)
hora_salida = db.Column(db.String, nullable=False)
companion_hora_entrada = db.Column(db.String)
companion_hora_salida = db.Column(db.String)
companion_comision = db.Column(db.Boolean, default=False)
venta_debito = db.Column(db.Integer, default=0)
venta_credito = db.Column(db.Integer, default=0)
venta_mp = db.Column(db.Integer, default=0)
venta_efectivo = db.Column(db.Integer, default=0)
boletas_debito = db.Column(db.Integer, default=0)
boletas_credito = db.Column(db.Integer, default=0)
boletas_mp = db.Column(db.Integer, default=0)
boletas_efectivo = db.Column(db.Integer, default=0)
gastos = db.Column(db.Integer, default=0)
observaciones = db.Column(db.Text)
class RendicionItem(db.Model):
__tablename__ = 'rendicion_items'
__table_args__ = _TABLE_ARGS
id = db.Column(db.Integer, primary_key=True)
rendicion_id = db.Column(db.Integer, db.ForeignKey('rendiciones.id'), nullable=False)
producto_id = db.Column(db.Integer, db.ForeignKey('productos.id'), nullable=False)
cantidad = db.Column(db.Integer, nullable=False)
precio_historico = db.Column(db.Integer, nullable=False)
comision_historica = db.Column(db.Integer, nullable=False)