diff --git a/api/lib/prices.py b/api/lib/prices.py index cda3862..5f8c1ed 100644 --- a/api/lib/prices.py +++ b/api/lib/prices.py @@ -264,6 +264,7 @@ def inquiry_price(inquiry, inc_price_retouch=True, rounded=True, inc_vat=True, * height = kwargs.get('height', inquiry.height) material = kwargs.get('material', inquiry.material) framed = kwargs.get('framed', inquiry.framed) + hanger = kwargs.get('hanger', inquiry.hanger) reseller = kwargs.get('reseller', inquiry.dealer_store) if inquiry.product_group == 'photo-wallpaper': @@ -272,6 +273,9 @@ def inquiry_price(inquiry, inc_price_retouch=True, rounded=True, inc_vat=True, * elif inquiry.product_group == 'canvas': price = canvas_price(width, height, inquiry.market, designer=inquiry.designer, reseller=reseller, inquiry=inquiry, framed=framed, rounded=False, inc_vat=False) + elif inquiry.product_group == 'poster': + price = poster_price(width, height, inquiry.market, + designer=inquiry.designer, reseller=reseller, inquiry=inquiry, hanger=hanger, rounded=False, inc_vat=False) else: raise ValueError( 'Invalid product group: {}'.format(inquiry.product_group)) diff --git a/api/models/inquiry.py b/api/models/inquiry.py index 344c54b..f9c6d4d 100644 --- a/api/models/inquiry.py +++ b/api/models/inquiry.py @@ -20,7 +20,7 @@ class Inquiry(db.Model): 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) + hanger = db.Column(db.String) materialid = db.Column(db.Integer, db.ForeignKey( 'product-materials.materialid'), default=1, nullable=False) material = db.relationship('Material', uselist=False) diff --git a/api/resources/prices.py b/api/resources/prices.py index 03c83d6..9a5743c 100644 --- a/api/resources/prices.py +++ b/api/resources/prices.py @@ -226,6 +226,32 @@ def inquiry_canvas(inquiry): return data +def inquiry_poster(inquiry): + width, height = get_inquiry_measurements(inquiry) + + data = { + 'id': inquiry.id, + 'group': 'poster', + 'retouch_price': inquiry.local_price_retouch(rounded=False, inc_vat=True) + } + + prices = [] + + for hanger in [True, False]: + prices.append({ + 'hanger': hanger, + 'width': width, + 'height': height, + 'inquiry_price_excl_retouch': inquiry_price(inquiry, width=width, height=height, hanger=hanger, rounded=False, inc_price_retouch=False, inc_vat=True), + 'inquiry_price': inquiry_price(inquiry, width=width, height=height, hanger=hanger, rounded=False, inc_vat=True), + 'inquiry_price_excl_vat': inquiry_price(inquiry, width=width, height=height, hanger=hanger, rounded=False, inc_vat=False), + 'inquiry_price_excl_price_premium': inquiry_price(inquiry, width=width, height=height, hanger=hanger, reseller=None, inc_price_retouch=False, rounded=False, inc_vat=False) + }) + data['prices'] = prices + + return data + + @mod.route('/inquiry/', methods=["GET"]) def inquiry(inquiry_id): inquiry = Inquiry.query.get_or_404(inquiry_id) @@ -234,6 +260,8 @@ def inquiry(inquiry_id): data = inquiry_wallpaper(inquiry) elif inquiry.product_group == 'canvas': data = inquiry_canvas(inquiry) + elif inquiry.product_group == 'poster': + data = inquiry_poster(inquiry) else: raise ValueError('Invalid group {}'.format(inquiry.product_group)) diff --git a/tests/lib/test_prices.py b/tests/lib/test_prices.py index 5ed4b2d..a52b2b7 100644 --- a/tests/lib/test_prices.py +++ b/tests/lib/test_prices.py @@ -275,3 +275,12 @@ class TestPrice(unittest2.TestCase): self.assertEqual(438, poster_hanger_price(150, market=sweden)) self.assertEqual(66, poster_hanger_price(30, market=us)) self.assertEqual(176, poster_hanger_price(150, market=us)) + + def test_poster_custom_inquiry_price(self): + with mock.patch.object(Inquiry, 'market', sweden): + inquiry = Inquiry(product_group='poster', territory='SE', width=30, height=40, + hanger=True, price_retouch=200, pricepremium=0) + + self.assertEqual(287, inquiry_price(inquiry, inc_price_retouch=False)) + self.assertEqual(537, inquiry_price(inquiry, inc_price_retouch=True)) + self.assertEqual(168, inquiry_price(inquiry, inc_price_retouch=False, hanger=False)) diff --git a/tests/resources/test_prices.py b/tests/resources/test_prices.py index 6ace307..0ac10ef 100644 --- a/tests/resources/test_prices.py +++ b/tests/resources/test_prices.py @@ -195,3 +195,9 @@ class TestEndpoints(flask_testing.TestCase): response = self.client.get('/prices/inquiry/1?width=100&height=100') self.assert200(response) self.assertEqual('canvas', response.json['group']) + + def test_inquiry_poster(self): + self._add_inquiry(territory='SE', product_group='poster') + response = self.client.get('/prices/inquiry/1?width=100&height=100') + self.assert200(response) + self.assertEqual('poster', response.json['group'])