add support for product price calculations

This commit is contained in:
Martin
2016-11-19 19:56:39 +01:00
parent b5c8145f96
commit 3433113cb9
5 changed files with 145 additions and 32 deletions
+18 -6
View File
@@ -2,7 +2,7 @@ from flask import Blueprint, request, jsonify, abort
from api.helpers import check_api_key
from api.validators import validate_territory, validate_number
from api.models.inquiry import Inquiry
from api.models.product import Material
from api.models.product import Material, Product
from api.models.contract_customer import ContractCustomer
from api.models import market as market_model
from api.lib.prices import wallpaper_price, old_canvas_price, old_canvas_diy_frame_price, m2_price, inquiry_price
@@ -20,6 +20,15 @@ def get_reseller():
return None
def get_designer():
product_id = request.args.get('product')
if product_id:
product = Product.query.get(product_id)
if product:
return product.designer
return None
@mod.route("/wallpaper", methods=['GET'])
@validate_number('width', 'height')
@validate_territory('territory')
@@ -27,7 +36,7 @@ def wallpaper():
width = request.args.get('width', type=int)
height = request.args.get('height', type=int)
market = market_model.from_territory(request.args.get('territory'))
designer = get_designer()
reseller = get_reseller()
materials = Material.query.wallpapers().all()
@@ -36,8 +45,9 @@ def wallpaper():
data.append({
'material': material.name,
'material_id': material.id,
'm2_price': m2_price(material, market, reseller=reseller, inc_vat=True),
'price': wallpaper_price(width, height, material, market, reseller=reseller),
'm2_price': m2_price(material, market, reseller=reseller, designer=designer, rounded=False, inc_vat=True),
'price': wallpaper_price(width, height, material, market, reseller=reseller, designer=designer, rounded=False, inc_vat=True),
'price_excl_vat': wallpaper_price(width, height, material, market, reseller=reseller, designer=designer, rounded=False, inc_vat=False),
})
return jsonify(data=data)
@@ -49,6 +59,7 @@ def wallpaper():
def canvas():
market = market_model.from_territory(request.args.get('territory'))
reseller = get_reseller()
designer = get_designer()
material = Material.query.canvas().first()
data = []
@@ -63,8 +74,9 @@ def canvas():
'framed': framed,
'width': width,
'height': height,
'm2_price': m2_price(material, market, reseller=reseller, inc_vat=True),
'price': old_canvas_price(width, height, material, market, reseller=reseller, framed=framed)
'm2_price': m2_price(material, market, reseller=reseller, designer=designer, rounded=False, inc_vat=True),
'price': old_canvas_price(width, height, material, market, reseller=reseller, designer=designer, framed=framed, rounded=False, inc_vat=True),
'price_excl_vat': old_canvas_price(width, height, material, market, reseller=reseller, designer=designer, framed=framed, rounded=False, inc_vat=False)
})
return jsonify(data=data)