58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
# coding=UTF-8
|
|
|
|
from api.extensions import db
|
|
from api.models import market as market_model
|
|
from api.lib.utils import round_half_up
|
|
|
|
|
|
class Inquiry(db.Model):
|
|
__tablename__ = 'inquiries'
|
|
|
|
id = db.Column('inquiryid', db.Integer, primary_key=True)
|
|
territory = db.Column(db.String(2))
|
|
product_group = db.Column(db.String(100))
|
|
price_m2 = db.Column(db.Numeric)
|
|
price_effect = db.Column(db.Numeric)
|
|
price_retouch = db.Column(db.Numeric)
|
|
width = db.Column(db.Integer)
|
|
height = db.Column(db.Integer)
|
|
framed = db.Column(db.Integer, nullable=False, default=0)
|
|
dealer_store_id = db.Column('dealer_store', db.Integer, db.ForeignKey(
|
|
'contract_customers.contractcustomerid'))
|
|
dealer_store = db.relationship('ContractCustomer', uselist=False)
|
|
framed = db.Column(db.Integer, default=0, nullable=False)
|
|
materialid = db.Column(db.Integer, db.ForeignKey(
|
|
'product-materials.materialid'), default=1, nullable=False)
|
|
material = db.relationship('Material', uselist=False)
|
|
pricepremium = db.Column(db.Numeric, nullable=False, default=0)
|
|
productId = db.Column(db.Integer, db.ForeignKey(
|
|
'product-products.productid'))
|
|
product = db.relationship('Product', uselist=False)
|
|
automated = db.Column(db.Integer, nullable=False, default=0)
|
|
|
|
@property
|
|
def market(self):
|
|
market = market_model.from_territory(self.territory)
|
|
if not market:
|
|
raise ValueError('Invalid territory: {}'.format(self.territory))
|
|
return market
|
|
|
|
def local_price_retouch(self, rounded=True, inc_vat=False):
|
|
""" returns the retouch price in the inquiry local currency """
|
|
if not self.price_retouch:
|
|
return 0
|
|
price = float(self.price_retouch)
|
|
price *= self.market.exchange_rate
|
|
price *= self.market.price_adjustments
|
|
if inc_vat:
|
|
price *= self.market.vat
|
|
if rounded:
|
|
price = round_half_up(price)
|
|
return price
|
|
|
|
@property
|
|
def designer(self):
|
|
if self.product and self.product.designer:
|
|
return self.product.designer
|
|
return None
|