handle product options correctly

This commit is contained in:
Helmut Merz 2015-06-19 12:05:14 +02:00
parent 12a5b339ad
commit 620bf6fe25
2 changed files with 7 additions and 5 deletions

View file

@ -1,6 +1,6 @@
#-*- coding: UTF-8 -*- #-*- coding: UTF-8 -*-
# #
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # Copyright (c) 2015 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -408,12 +408,13 @@ class IOrderItem(ITrack):
shop = Attribute(u'The shop from which the product is ordered.') shop = Attribute(u'The shop from which the product is ordered.')
order = Attribute(u'The order this order item belongs to.') order = Attribute(u'The order this order item belongs to.')
unitPrice = Attribute(u'The basic unit price for one of the product ' unitPrice = Attribute(u'The basic unit price for one of the product '
u'items ordered.') u'ites ordered.')
fullPrice = Attribute(u'The full price for the quantity ordered.') fullPrice = Attribute(u'The full price for the quantity ordered.')
quantityShipped = Attribute(u'The total quantity that has been shipped ' quantityShipped = Attribute(u'The total quantity that has been shipped '
u'already.') u'already.')
shippingInfo = Attribute(u'A list of mappings, with fields like: ' shippingInfo = Attribute(u'A list of mappings, with fields like: '
u'shippingId, shippingDate, quantity, packageId') u'shippingId, shippingDate, quantity, packageId')
options = Attribute(u'Product options associated with this order item.')
def remove(): def remove():
""" Remove the order item from the order or cart. """ Remove the order item from the order or cart.

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2009 Helmut Merz helmutm@cy55.de # Copyright (c) 2015 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -18,8 +18,6 @@
""" """
Order and order item classes. Order and order item classes.
$Id$
""" """
from zope.app.intid.interfaces import IIntIds from zope.app.intid.interfaces import IIntIds
@ -118,7 +116,10 @@ class OrderItems(object):
def add(self, product, party, shop, order='???', run=0, **kw): def add(self, product, party, shop, order='???', run=0, **kw):
kw['shop'] = self.getUid(shop) kw['shop'] = self.getUid(shop)
options = kw.get('options', [])
existing = self.getCart(party, order, shop, run, product=product) existing = self.getCart(party, order, shop, run, product=product)
existing = [item for item in existing
if (item.data.get('options') or []) == options]
if existing: if existing:
track = existing[-1] track = existing[-1]
track.modify(track.quantity + kw.get('quantity', 1)) track.modify(track.quantity + kw.get('quantity', 1))