Add schema model for Purchase Orders
This commit is contained in:
parent
ee9451588c
commit
1757d09781
|
@ -1547,3 +1547,121 @@ class BatchItem(Base):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.upc or ""
|
return self.upc or ""
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrder(Base):
|
||||||
|
"""
|
||||||
|
Represents a purchase order.
|
||||||
|
"""
|
||||||
|
__tablename__ = 'PurchaseOrder'
|
||||||
|
# TODO: would be simpler to declare these, but is it safe?
|
||||||
|
# __table_args__ = (
|
||||||
|
# sa.ForeignKeyConstraint(['vendorID'], ['vendors.vendorID']),
|
||||||
|
# sa.ForeignKeyConstraint(['storeID'], ['Stores.storeID']),
|
||||||
|
# )
|
||||||
|
|
||||||
|
orderID = sa.Column(sa.Integer(), nullable=False, primary_key=True, autoincrement=True)
|
||||||
|
id = orm.synonym('orderID')
|
||||||
|
|
||||||
|
vendor_id = sa.Column('vendorID', sa.Integer(), nullable=True)
|
||||||
|
vendor = orm.relationship(
|
||||||
|
Vendor,
|
||||||
|
primaryjoin=Vendor.id == vendor_id,
|
||||||
|
foreign_keys=[vendor_id])
|
||||||
|
|
||||||
|
store_id = sa.Column('storeID', sa.Integer(), nullable=True)
|
||||||
|
store = orm.relationship(
|
||||||
|
Store,
|
||||||
|
primaryjoin=Store.id == store_id,
|
||||||
|
foreign_keys=[store_id])
|
||||||
|
|
||||||
|
creation_date = sa.Column('creationDate', sa.DateTime(), nullable=True)
|
||||||
|
|
||||||
|
placed = sa.Column(sa.Boolean(), nullable=True, default=False)
|
||||||
|
|
||||||
|
placed_date = sa.Column('placedDate', sa.DateTime(), nullable=True)
|
||||||
|
|
||||||
|
user_id = sa.Column('userID', sa.Integer(), nullable=True)
|
||||||
|
|
||||||
|
vendor_order_id = sa.Column('vendorOrderID', sa.String(length=25), nullable=True)
|
||||||
|
|
||||||
|
vendor_invoice_id = sa.Column('vendorInvoiceID', sa.String(length=25), nullable=True)
|
||||||
|
|
||||||
|
standing_id = sa.Column('standingID', sa.Integer(), nullable=True)
|
||||||
|
|
||||||
|
inventory_ignore = sa.Column('inventoryIgnore', sa.Boolean(), nullable=True, default=False)
|
||||||
|
|
||||||
|
transfer_id = sa.Column('transferID', sa.Integer(), nullable=True)
|
||||||
|
|
||||||
|
notes = association_proxy('notes', 'notes')
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "#{} for {}".format(self.id, self.vendor or "??")
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrderItem(Base):
|
||||||
|
"""
|
||||||
|
Represents a line item in a purchase order.
|
||||||
|
"""
|
||||||
|
__tablename__ = 'PurchaseOrderItems'
|
||||||
|
__table_args__ = (
|
||||||
|
sa.ForeignKeyConstraint(['orderID'], ['PurchaseOrder.orderID']),
|
||||||
|
)
|
||||||
|
|
||||||
|
order_id = sa.Column('orderID', sa.Integer(), nullable=False,
|
||||||
|
primary_key=True, autoincrement=False)
|
||||||
|
order = orm.relationship(PurchaseOrder, backref=orm.backref('items'))
|
||||||
|
|
||||||
|
sku = sa.Column(sa.String(length=13), nullable=False,
|
||||||
|
primary_key=True)
|
||||||
|
|
||||||
|
quantity = sa.Column(sa.Numeric(precision=10, scale=2), nullable=True)
|
||||||
|
|
||||||
|
unit_cost = sa.Column('unitCost', sa.Numeric(precision=10, scale=4), nullable=True)
|
||||||
|
|
||||||
|
case_size = sa.Column('caseSize', sa.Float(), nullable=True)
|
||||||
|
|
||||||
|
received_date = sa.Column('receivedDate', sa.DateTime(), nullable=True)
|
||||||
|
|
||||||
|
received_quantity = sa.Column('receivedQty', sa.Float(), nullable=True)
|
||||||
|
|
||||||
|
received_total_cost = sa.Column('receivedTotalCost', sa.Numeric(precision=10, scale=4), nullable=True)
|
||||||
|
|
||||||
|
unit_size = sa.Column('unitSize', sa.String(length=25), nullable=True)
|
||||||
|
|
||||||
|
brand = sa.Column(sa.String(length=50), nullable=True)
|
||||||
|
|
||||||
|
description = sa.Column(sa.String(length=50), nullable=True)
|
||||||
|
|
||||||
|
internal_upc = sa.Column('internalUPC', sa.String(length=13), nullable=True)
|
||||||
|
|
||||||
|
sales_code = sa.Column('salesCode', sa.Integer(), nullable=True)
|
||||||
|
|
||||||
|
is_special_order = sa.Column('isSpecialOrder', sa.Boolean(), nullable=True,
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
# TODO: this probably is FK to e.g. User.id ?
|
||||||
|
received_by = sa.Column('receivedBy', sa.Integer(), nullable=True,
|
||||||
|
default=0)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.description or ""
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrderNote(Base):
|
||||||
|
"""
|
||||||
|
Represents a note attached to a purchase order.
|
||||||
|
"""
|
||||||
|
__tablename__ = 'PurchaseOrderNotes'
|
||||||
|
__table_args__ = (
|
||||||
|
sa.ForeignKeyConstraint(['orderID'], ['PurchaseOrder.orderID']),
|
||||||
|
)
|
||||||
|
|
||||||
|
order_id = sa.Column('orderID', sa.Integer(), nullable=False,
|
||||||
|
primary_key=True, autoincrement=False)
|
||||||
|
order = orm.relationship(PurchaseOrder, backref=orm.backref('notes'))
|
||||||
|
|
||||||
|
notes = sa.Column(sa.Text(), nullable=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.notes or ""
|
||||||
|
|
Loading…
Reference in a new issue