Files
ksef_app/app/models/catalog.py
Mateusz Gruszczyński 35571df778 push
2026-03-13 11:03:13 +01:00

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')