from . import db from datetime import datetime class Categories(db.Model): __tablename__ = 'Categories' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.Text) inventory_items = db.relationship('Inventory', backref='category', lazy=True) def __repr__(self): return f'' class Inventory(db.Model): __tablename__ = 'Inventory' id = db.Column(db.Integer, primary_key=True) category_id = db.Column(db.Integer, db.ForeignKey('Categories.id'), nullable=False) name = db.Column(db.String(200), nullable=False) base_price = db.Column(db.Numeric(10,2), nullable=False) season_type = db.Column(db.String(10), nullable=False) # 'winter' или 'summer' def __repr__(self): return f'' class Partners(db.Model): __tablename__ = 'Partners' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(200), nullable=False) phone = db.Column(db.String(20)) email = db.Column(db.String(100)) address = db.Column(db.Text) issue_orders = db.relationship('IssueOrders', backref='partner', lazy=True) def __repr__(self): return f'' class IssueOrders(db.Model): __tablename__ = 'IssueOrders' id = db.Column(db.Integer, primary_key=True) partner_id = db.Column(db.Integer, db.ForeignKey('Partners.id'), nullable=False) issue_date = db.Column(db.DateTime, default=datetime.now) notes = db.Column(db.Text) items = db.relationship('IssueOrderItems', backref='issue_order', lazy=True, cascade='all, delete-orphan') return_order = db.relationship('ReturnOrders', backref='issue_order', uselist=False, cascade='all, delete-orphan') def __repr__(self): return f'' class IssueOrderItems(db.Model): __tablename__ = 'IssueOrderItems' id = db.Column(db.Integer, primary_key=True) issue_order_id = db.Column(db.Integer, db.ForeignKey('IssueOrders.id'), nullable=False) inventory_id = db.Column(db.Integer, db.ForeignKey('Inventory.id'), nullable=False) quantity = db.Column(db.Integer, nullable=False, default=1) inventory = db.relationship('Inventory') def __repr__(self): return f'' class ReturnOrders(db.Model): __tablename__ = 'ReturnOrders' id = db.Column(db.Integer, primary_key=True) issue_order_id = db.Column(db.Integer, db.ForeignKey('IssueOrders.id'), nullable=False, unique=True) return_date = db.Column(db.DateTime, default=datetime.now) total_amount = db.Column(db.Numeric(10,2)) notes = db.Column(db.Text) items = db.relationship('ReturnOrderItems', backref='return_order', lazy=True, cascade='all, delete-orphan') def __repr__(self): return f'' class ReturnOrderItems(db.Model): __tablename__ = 'ReturnOrderItems' id = db.Column(db.Integer, primary_key=True) return_order_id = db.Column(db.Integer, db.ForeignKey('ReturnOrders.id'), nullable=False) inventory_id = db.Column(db.Integer, db.ForeignKey('Inventory.id'), nullable=False) quantity = db.Column(db.Integer, nullable=False) wear_level = db.Column(db.String(10), nullable=False) # 'low', 'medium', 'high' calculated_price = db.Column(db.Numeric(10,2)) inventory = db.relationship('Inventory') def __repr__(self): return f''