示例#1
0
class Producto(db.Model):
    """
    Este modelo representará a las producto.
    Contará con los siquientes campos:
    producto_id  --> clave primaria
    descripcion --> nombre del producto
    precio_id --> clave forania refenciando a la tabla precio
    estado_producto_id --> clave forania refenciando a la tabla estado de producto
    tipo_producto_id --> clave forania refenciando a la tabla tipo de producto
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'producto'

    # Atributos
    producto_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False)
    precio_id = db.Column(db.Integer,
                          db.ForeignKey('precio.precio_id'),
                          nullable=False)
    estado_producto_id = db.Column(
        db.Integer,
        db.ForeignKey('estado_producto.estado_producto_id'),
        nullable=False)
    tipo_producto_id = db.Column(
        db.Integer,
        db.ForeignKey('tipo_producto.tipo_producto_id'),
        nullable=False)
    detalle_pedido = db.relationship('DetallePedido',
                                     uselist=False,
                                     backref='detalle_pedido',
                                     lazy=True)
    detalle_stock = db.relationship('DetalleStock',
                                    backref='detalle_stock',
                                    lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, descripcion, precio_id, tipo_producto_id):
        """
        Constructor de la clase producto
        """
        self.descripcion = descripcion
        self.precio_id = precio_id
        self.tipo_producto_id = tipo_producto_id

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'Producto: {}'.format(self.descripcion)

    def getProducto(self):
        return self.descripcion

    def getPrecioProdcuto(self):
        precio = Precio.query.filter_by(provincia_id=self.precio_id)
        return "Producto " + self.descripcion + " precio: " + precio.valor
示例#2
0
class EstadoPedido(db.Model):
    """
    Este modelo representará los estados de pedidos.
    Contará con los siquientes campos:
    estado_pedido_id --> clave primaria
    descripcion --> describe el estado del pedido
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'estado_pedido'

    # Atributos
    estado_pedido_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False, unique=True)
    pedidos = db.relationship('Pedido',
                              uselist=False,
                              backref='pedido',
                              lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, descripcion):
        """
        Constructor de la clase Estado_pedido
        """
        self.descripcion = descripcion

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'Estado de Pedido:  {}'.format(self.descripcion)
示例#3
0
class TipoProducto(db.Model):
    """
    Este modelo representará el tipo de Producto
    Contará con los siquientes campos:
    tipo_producto_id --> clave primaria
    descripcion --> describe el tipo de producto
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'tipo_producto'

    # Atributos
    tipo_producto_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    productos = db.relationship('Producto', backref='tipo_producto', lazy=True)

    def __init__(self, descripcion):
        """
        Constructor de la clase tipo_producto
        """
        self.descripcion = descripcion

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'Tipo de Producto:  {}'.format(self.descripcion)
示例#4
0
class TipoMovimientoStock(db.Model):
    """
    Este modelo representará el movimiento del stock.
    Contará con los siquientes campos:
    movimiento_stock_id --> clave primaria
    descripcion --> describe el tipo de dni
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'tipo_movimiento_stock'

    # Atributos
    tipo_movimiento_stock_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False)
    detalle_stock = db.relationship('DetalleStock', backref='detalles_stocks', lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, descripcion):
        """
        Constructor de la clase movimiento_stock
        """
        self.descripcion = descripcion

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'movimiento de stock:  {}'.format(self.descripcion)
示例#5
0
class Permiso(db.Model):
    """
	Este modelo representará a los permisos
	Contará con los siquientes campos:

	permisos_id --> clave primaria
	nombre --> nombre del permiso
	descripcion --> descipcion
	ts_created --> momento en que el registro fue creado
	"""

    # Nombre de la tabla
    __tablename__ = 'permiso'

    # Atributos
    permiso_id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(50), nullable=False, unique=True)
    descripcion = db.Column(db.String(80), nullable=False)
    rol_permiso = db.relationship('Rol', secondary=rol_permiso)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, nombre, descripcion):
        """

		Constructor de la clase permiso
		"""
        self.descripcion = descripcion
        self.nombre = nombre

    def __repr__(self):
        """
		Nos devolverá una representación del Modelo
		"""
        return 'Permiso:  {}'.format(self.nombre, self.descripcion)
示例#6
0
class CuentaCorriente(db.Model):
    """
    Este modelo representará el Cuenta corriente.
    Contará con los siquientes campos:
    cuenta_corriente_id --> clave primaria
    persona_id --> clave forania refenciando a la tabla persona
    tipo_movimiento_id --> clave forania refenciando a la tabla tipo de movimiento
    usuario_id --> clave forania refenciando a la tabla usuario
    
    saldo --> represanta el saldo de la cuenta corriente
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'cuenta_corriente'

    # Atributos
    cuenta_corriente_id = db.Column(db.Integer, primary_key=True)
    persona_id = db.Column(db.Integer, db.ForeignKey('persona.persona_id'),nullable=False)
    movimientos = db.relationship('MovimientoCtaCorriente', backref='movimiento_ctacorriente', lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, persona_id):
        """
        Constructor de la clase Cuenta_corriente
        """
        self.persona_id = persona_id

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'cuenta corriente:  {}'.format(self.persona_id)
示例#7
0
class ListaPrecio(db.Model):
    """
	Este modelo representará el lista de precios
	Contará con los siquientes campos:
	lista_precio_id --> clave primaria
	descripcion --> describe lista de precios
	fecha --> describe la fecha en que se realizado la carga
	ts_created --> momento en que el registro fue creado
	"""

    # Nombre de la tabla
    __tablename__ = 'lista_precio'

    # Atributos
    lista_precio_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False)
    precios = db.relationship('Precio', backref='precio', lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, descripcion, fecha):
        """
		Constructor de la clase lista de precios
		"""
        self.descripcion = descripcion
        self.fecha = fecha

    def __repr__(self):
        """
		Nos devolverá una representación del Modelo
		"""
        return 'Lista de precios:  {}'.format(self.descripcion, self.fecha)
示例#8
0
class TipoMovimientoCtaCorriente(db.Model):
    __tablename__ = 'tipo_movimiento_cta_corriente'

    tipo_movimiento_cta_corriente_id = db.Column(db.Integer, primary_key=True)
    descripcion = db.Column(db.String(80), nullable=False)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())
    movimientos = db.relationship('MovimientoCtaCorriente', backref='movimiento_cta_corriente', lazy=True)

    def __init__(self, descripcion):
        self.descripcion = descripcion
示例#9
0
class Pedido(db.Model):
    """
    Este modelo representará a pedido.
    Contará con los siquientes campos:
    pedido_id  --> clave primaria
    detalle_id --> clave forania refenciando a la tabla detalle
    usuario_id --> clave forania refenciando a la tabla usuario
    estado_id --> clave forania refenciando a la tabla estado
    tipo_pedido_id --> clave forania refenciando a la tabla tipo de pedido
    ts_created --> momento en que el registro fue creado
    """

    # Nombre de la tabla
    __tablename__ = 'pedido'

    # Atributos
    pedido_id = db.Column(db.Integer, primary_key=True)
    detalle = db.relationship('DetallePedido',
                              uselist=False,
                              backref='detalles_pedidos',
                              lazy=True)
    usuario_id = db.Column(db.Integer,
                           db.ForeignKey('usuario.id'),
                           nullable=False)
    estado_pedido_id = db.Column(
        db.Integer,
        db.ForeignKey('estado_pedido.estado_pedido_id'),
        nullable=False)
    tipo_pedido_id = db.Column(db.Integer,
                               db.ForeignKey('tipo_pedido.tipo_pedido_id'),
                               nullable=False)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, detalle_id, usuario_id, estado_id, tipo_pedido_id):
        """
        Constructor de la clase pedido
        """
        self.detalle_id = detalle_id
        self.estado_pedido_id = estado_id
        self.usuario_id = usuario_id
        self.tipo_pedido_id = tipo_pedido_id

    def __repr__(self):
        """
        Nos devolverá una representación del Modelo
        """
        return 'pedido {}'.format(self.detalle_id, self.usuario_id,
                                  self.estado_pedido_id, self.tipo_pedido_id)
示例#10
0
class Usuario(db.Model, UserMixin):
    """
	Este modelo representará a la tabla usuarios.
	Contará con los siquientes campos:
	id  --> clave primaria
	username --> nombre de usuario
	password --> passwd del usuario
	descripcion --> descripcion del usuario
	persona_id -- > persona_id  foreing key referenciando a la entidad persona
	ts_created --> momento en que el registro fue creado
	"""
    # Nombre de la tabla
    __tablename__ = 'usuario'

    # Atributos
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password_hash = db.Column(db.String(50), nullable=False)
    descripcion = db.Column(db.String(50))
    persona_id = db.Column(db.Integer,
                           db.ForeignKey('persona.persona_id'),
                           nullable=False)
    usuario_rol = db.relationship('Rol', secondary=usuario_rol)
    movientos = db.relationship('MovimientoCtaCorriente',
                                uselist=False,
                                backref='movimientos',
                                lazy=True)
    detalle_stock = db.relationship('DetalleStock',
                                    uselist=False,
                                    backref='detalles_stocks_usuarios',
                                    lazy=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, username, password, persona_id):
        """
		Constructor de la clase usuario
		"""
        self.username = username
        self.password_hash = password
        self.persona_id = persona_id

    def get_username(self):
        """
		Devuelve el username.
		"""
        return self.username

    def get_email(self):
        print('persona id {}'.format(self.persona_id), flush=True)

    def get_role(self):
        """
		Devuelve el o los roles que tiene asociado el usuario.
		"""
        lista_roles = [str(r) for r in self.usuario_rol]
        return lista_roles[0]

    def get_mis_datos(self):
        """
		Nos devuelve un diccionario con los siguientes campos:
		- username
		- email
		- telefono principal
		- telefono secundario
		"""

        datos = {}
        datos['username'] = self.username
        persona = Persona.query.filter_by(persona_id=self.persona_id).first()
        datos['email'] = persona.get_email()
        datos['tel_principal'] = persona.get_tel_principal()
        datos['tel_secundario'] = persona.get_tel_secundario()
        return datos

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return f"UserName: {self.username}"

    def has_role(self, role):
        """
		Verificamos si el usuario tiene el rol pasado
		por parametro
		"""
        lista_roles = [str(r) for r in self.usuario_rol]
        if role in lista_roles:
            return True
        else:
            return False
示例#11
0
class Persona(db.Model):
    """
	Este modelo representará a la entidad Persona.
	Contará con los siquientes campos:

	persona_id  --> clave primaria
	apellido --> apellido de la persona
	nombre --> nombre de la persona
	fecha_nacimiento --> fecha de nacimiento de la persona
	email --> email de la persona
	razon_social --> Nombre en caso de ser un empresa
	telefono_ppal --> telefono principal de la persona
	telefono_sec --> telefono secundario de la persona
	tipo_dni_id --> tipo dni foreing key contra la entidad tipo_dni
	num_dni --> numero de dni de la persona
	domicilio_id  --> domicilio_id  foreing jey referenciando a la entidad domicilio
	ts_created --> momento en que el registro fue creado
	"""

    # Nombre de la tabla
    __tablename__ = 'persona'

    # Atributos
    persona_id = db.Column(db.Integer, primary_key=True)
    apellido = db.Column(db.String(50))
    nombre = db.Column(db.String(50))
    num_dni = db.Column(db.String(10))
    fecha_nacimiento = db.Column(db.DateTime, nullable=True)
    email = db.Column(db.String(50), nullable=False, unique=True)
    razon_social = db.Column(db.String(50))
    telefono_ppal = db.Column(db.String(50), nullable=False)
    telefono_sec = db.Column(db.String(50))
    tipo_dni_id = db.Column(db.Integer,
                            db.ForeignKey('tipo_dni.tipo_dni_id'),
                            nullable=True)
    cuenta_corriente = db.relationship('CuentaCorriente',
                                       backref='cuenta_corriente',
                                       lazy=True,
                                       uselist=False)
    usuario = db.relationship('Usuario',
                              backref='persona',
                              lazy=True,
                              uselist=False)
    domicilio = db.relationship('Domicilio',
                                backref='persona',
                                lazy=True,
                                uselist=True)
    ts_created = db.Column(db.DateTime, server_default=db.func.now())

    def __init__(self, apellido, nombre, email, telefono_ppal):
        """
		Constructor de la clase persona
		"""
        self.apellido = apellido
        self.nombre = nombre
        self.email = email
        self.telefono_ppal = telefono_ppal

    def __repr__(self):
        """
		Nos devolverá una representación del Modelo
		"""
        return 'Persona: {}'.format(self.apellido, self.nombre)

    def name_completo(self):
        return self.apellido + "  " + self.nombre

    def get_email(self):
        return self.email

    def get_tel_principal(self):
        return self.telefono_ppal

    def get_tel_secundario(self):
        return self.telefono_sec