class Invoice(BaseEntity, db.Model): invoice_date = db.Column(db.DateTime, nullable=False) company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False, index=True ) payment_detail_id = db.Column(db.Integer, db.ForeignKey('payment_detail.id'), nullable=False, index=True ) invoice_lines = db.relationship(InvoiceLine, primaryjoin="Invoice.id==InvoiceLine.invoice_id " ) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True ) def __init__(self): BaseEntity.__init__(self)
class InvoiceLine(BaseEntity, db.Model): invoice_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), nullable=False, index=True) service_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), index=True) product_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), index=True) quantity = db.Column(db.Integer, nullable=False) charge = db.Column(db.Integer, nullable=False) def __init__(self): BaseEntity.__init__(self)
class Company(BaseEntity, db.Model): name = db.Column(db.String(64), nullable=False) contact_person = db.Column(db.String(64) ) email = db.Column(db.String(50) ) phone = db.Column(db.String(25), nullable=False) address_ln_1 = db.Column(db.String(100), nullable=False) address_ln_2 = db.Column(db.String(100) ) city = db.Column(db.String(50), nullable=False) postal_code = db.Column(db.String(15) ) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True ) def __init__(self, user:User, name, contact_person, email, phone, address_ln_1, address_ln_2, city, postal_code): BaseEntity.__init__(self) self.owner_id = user.id self.trading_name=trading_name self.contact_person=contact_person self.email=email self.phone=phone self.address_ln_1=address_ln_1 self.address_ln_2=address_ln_2 self.city=city self.postal_code=postal_code
class Client(BaseEntity, db.Model): __tablename__ = 'clients' name = db.Column( db.String, nullable=False ) phone = db.Column( db.String, nullable=False ) address_1 = db.Column( db.String, nullable=False ) address_2 = db.Column( db.String ) city = db.Column( db.String, nullable=False ) post_code = db.Column( db.String, nullable=False ) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True ) def __init__(self, user:User, name, phone, address_1, address_2, city, post_code): BaseEntity.__init__(self) self.owner_id = user.id self.name = name self.phone = phone self.address_1 = address_1 self.address_2 = address_2 self.city = city self.post_code = post_code # name phone address_1 address_2 city post_code
class Service(BaseEntity, db.Model): name = db.Column(db.String(64), nullable=False) description = db.Column(db.String(254)) charge = db.Column(db.Float) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True) def __init__(self, user: User, name, description, charge): BaseEntity.__init__(self) self.owner_id = user.id self.name = name self.description = description self.charge = charge
class Product(BaseEntity, db.Model): name = db.Column(db.String(64), nullable=False) description = db.Column(db.String(254)) price = db.Column(db.Numeric(12, 6)) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True) def __init__(self, user: User, name, description, price): BaseEntity.__init__(self) self.owner_id = user.id self.name = name self.description = description self.price = price
class PaymentDetail(BaseEntity, db.Model): acc_name = db.Column(db.String(64), nullable=False) bank_name = db.Column(db.String(64), nullable=False) sort_code = db.Column(db.String(6), nullable=False) acc_number = db.Column(db.String(8), nullable=False) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True) def __init__(self, user: User, acc_name, bank_name, sort_code, acc_number): BaseEntity.__init__(self) self.owner_id = user.id self.acc_name = acc_name self.bank_name = bank_name self.sort_code = sort_code self.acc_number = acc_number