2011-10-04 5 views
1

Je dois ajouter une fonctionnalité «livraison gratuite si achat de plus de 100 $» pour le module Postes Canada dans sacoche. Cela peut-il être fait hors de la boîte, ou devrais-je faire un nouveau module d'expédition?Livraison gratuite en satchmo

+1

ce que le .. pourquoi cela ne concerne-t-il pas la programmation? savez-vous même ce que sont satchmo et django? – Lacrymology

+1

À quoi ressemble votre code maintenant? – random

+0

J'ai fini par accrocher un signal satchmo et ajouter un code de réduction personnalisé à la commande. – Lacrymology

Répondre

0

OK, pour ce faire, je l'ai fait ce qui suit:

from product.models import Discount 

class AutoDiscount(Discount): 
    pass 

Cela me permet de définir les différentes réductions dans la zone d'administration, puis faire:

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) 

je peux ajouter des champs au modèle AutoDiscount et remplacer la méthode isValid si j'ai besoin de plus de contrôle détaillé sur les remises qui sont appliquées

+1

Cela ne remplacerait-il aucun code de réduction réellement entré par l'utilisateur? En outre, je ne sais pas si le code de remise automatique finirait par être affiché dans un courriel, etc., et pourrait ensuite être réutilisé par l'utilisateur pour d'autres commandes. –

+0

Bon point. Je ne sais pas vraiment non plus, pour être honnête. Ce code a plus de trois ans, et je ne me souviens pas si et comment j'ai testé pour ces choses – Lacrymology

+0

Je comprends :-) En fin de compte je n'ai pas utilisé d'objets discount, mais mettre un code personnalisé dans la méthode de coût des objets expéditeur à renvoie 0 si nécessaire. –

Questions connexes