51 lines
2.6 KiB
Python
51 lines
2.6 KiB
Python
from app.extensions import db
|
|
from app.models.base import TimestampMixin
|
|
|
|
|
|
class Customer(TimestampMixin, db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False, index=True)
|
|
name = db.Column(db.String(255), nullable=False)
|
|
tax_id = db.Column(db.String(32), index=True, default='')
|
|
email = db.Column(db.String(255), default='')
|
|
address = db.Column(db.String(255), default='')
|
|
regon = db.Column(db.String(32), default='')
|
|
is_active = db.Column(db.Boolean, default=True, nullable=False)
|
|
|
|
company = db.relationship('Company', backref=db.backref('customers', lazy='dynamic', cascade='all, delete-orphan'))
|
|
|
|
__table_args__ = (db.UniqueConstraint('company_id', 'name', name='uq_customer_company_name'),)
|
|
|
|
|
|
class Product(TimestampMixin, db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False, index=True)
|
|
name = db.Column(db.String(255), nullable=False)
|
|
sku = db.Column(db.String(64), default='')
|
|
unit = db.Column(db.String(16), default='szt.')
|
|
net_price = db.Column(db.Numeric(12, 2), nullable=False, default=0)
|
|
vat_rate = db.Column(db.Numeric(5, 2), nullable=False, default=23)
|
|
split_payment_default = db.Column(db.Boolean, default=False, nullable=False)
|
|
is_active = db.Column(db.Boolean, default=True, nullable=False)
|
|
|
|
company = db.relationship('Company', backref=db.backref('products', lazy='dynamic', cascade='all, delete-orphan'))
|
|
|
|
__table_args__ = (db.UniqueConstraint('company_id', 'name', name='uq_product_company_name'),)
|
|
|
|
|
|
class InvoiceLine(TimestampMixin, db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
invoice_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), nullable=False, index=True)
|
|
product_id = db.Column(db.Integer, db.ForeignKey('product.id'), index=True)
|
|
description = db.Column(db.String(255), nullable=False)
|
|
quantity = db.Column(db.Numeric(12, 2), nullable=False, default=1)
|
|
unit = db.Column(db.String(16), default='szt.')
|
|
unit_net = db.Column(db.Numeric(12, 2), nullable=False, default=0)
|
|
vat_rate = db.Column(db.Numeric(5, 2), nullable=False, default=23)
|
|
net_amount = db.Column(db.Numeric(12, 2), nullable=False, default=0)
|
|
vat_amount = db.Column(db.Numeric(12, 2), nullable=False, default=0)
|
|
gross_amount = db.Column(db.Numeric(12, 2), nullable=False, default=0)
|
|
|
|
invoice = db.relationship('Invoice', backref=db.backref('lines', lazy='dynamic', cascade='all, delete-orphan'))
|
|
product = db.relationship('Product')
|