from datetime import datetime from . import db class Store(db.Model): id = db.Column(db.Integer, primary_key=True) # Store number like 210 name = db.Column(db.String(100), nullable=False) password = db.Column(db.String(128), nullable=False) # plaintext for now (hash later) class DeliveryOrder(db.Model): id = db.Column(db.Integer, primary_key=True) do_number = db.Column(db.String(50), unique=True, nullable=False) delivery_number = db.Column(db.String(50), nullable=False) final_location = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False) created_by = db.Column(db.String(100), nullable=False) status = db.Column(db.String(50), default='Ready for Collection') created_at = db.Column(db.DateTime, default=datetime.utcnow) collected_by = db.Column(db.String(100), nullable=True) movements = db.relationship('Movement', backref='delivery_order', cascade='all, delete-orphan') class Movement(db.Model): id = db.Column(db.Integer, primary_key=True) do_id = db.Column(db.Integer, db.ForeignKey('delivery_order.id'), nullable=False) branch_id = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False) arrived_at = db.Column(db.DateTime, default=datetime.utcnow) departed_at = db.Column(db.DateTime, nullable=True) handled_by = db.Column(db.String(100), nullable=False) comment = db.Column(db.Text, nullable=True)