2011-10-04 84 views
1

我需要为satchmo中的加拿大邮政模块添加“免费送货,如果购买超过$ 100”功能。这可以开箱即用,还是需要制作新的运输模块?免费送货在satchmo

+1

什么..为什么这不与编程有关?你甚至知道satchmo和django是什么吗? – Lacrymology

+1

你的代码现在是什么样的? – random

+0

我已经挂钩了一个satchmo信号,并添加了一个自定义创建的折扣代码到订单。 – Lacrymology

回答

0

OK,要做到这一点,我做了以下内容:

from product.models import Discount 

class AutoDiscount(Discount): 
    pass 

这让我定义在管理方面的不同的折扣,然后再做到这一点:

def check_automatic_discounts(sender, form=None, **kwargs): 
    """ 
    """ 
    if sender in (CreditPayShipForm, SimplePayShipForm, 
        PaymentContactInfoForm): 
     # I probably need to sort these in some specific order 
     for discount in AutoDiscount.objects.all(): 
      if discount.isValid(cart=form.cart,)[0]: 
       form.order.discount_code = discount.code 
       form.order.save() 
       return 

signals.form_postsave.connect(check_automatic_discounts) 

我可以添加字段到AutoDiscount模型,并覆盖isValid方法,如果我需要更详细的控制应用哪种折扣

+1

这不会覆盖用户实际输入的任何折扣代码吗? 此外,我不知道自动折扣代码是否会最终显示在电子邮件等中,然后可以由用户重新使用其他订单。 –

+0

好点。我也不太了解,说实话。此代码已超过三年,我不记得是否以及如何测试这些东西 – Lacrymology

+0

我明白:-)最后,我没有使用折扣对象,而是将自定义代码放在托运人对象的成本方法中需要时返回0。 –