from datetime import datetime from extensions import db class Quote(db.Model): id = db.Column(db.Integer, primary_key=True) category = db.Column(db.String(30)) status = db.Column(db.String(20), default="draft") client_id = db.Column(db.Integer, db.ForeignKey("client.id")) client = db.relationship("Client", backref="quotes") title = db.Column(db.String(200)) public_notes = db.Column(db.Text) internal_notes = db.Column(db.Text) subtotal = db.Column(db.Numeric(10,2), default=0) total = db.Column(db.Numeric(10,2), default=0) milestones_json = db.Column(db.JSON) created_at = db.Column(db.DateTime, default=datetime.utcnow) class QuoteItem(db.Model): id = db.Column(db.Integer, primary_key=True) quote_id = db.Column(db.Integer, db.ForeignKey("quote.id")) quote = db.relationship("Quote", backref="items") description = db.Column(db.String(255)) qty = db.Column(db.Numeric(10,2), default=1) unit_price = db.Column(db.Numeric(10,2), default=0) @property def line_total(self): return (self.qty or 0) * (self.unit_price or 0)