2017-05-01 6 views
0

私は、国ごとに配送方法のベースを書こうとしており、django-oscarの重量ベースも書いています。デフォルトの配送方法は、また、私は上記のいずれかを必要としていないだけの割引を通じて出荷するために割引を提供するこれらのdjango-oscarの出荷時のデフォルトの方法

 from oscar.apps.shipping.methods import Free, FixedPrice, NoShippingRequired 

を持たなければならないようです。私はこれらのoscar.apps.shipping.methodsのいずれかを適用されませんので、私はrepository.pyで書くにはどうすればよい

無料インポート、FixedPrice、NoShippingRequired

はので、私はちょうど私のクラスのリポジトリ(CoreRepository)を書くことができます。

methods += [NoShippingRequired()] 

    methods += [FixedPrice()] 

    methods += [Free()] 

私が書かれているメソッドを記述することなく

は、コードベースが、ダッシュボードの出荷メニューから実装されていません。私は私の船積みを設定するために次のように従った。

https://groups.google.com/forum/#!topic/django-oscar/H4tf20ujm8k

「HandDelivery」と私の重量ベースの方法ボタンを出荷国の両方が顧客に表示され、ページ上の「送料メニュー」をテストします。つまり、顧客が国際的に基盤を置いている場合でも、顧客はHandDeliveryボタンをクリックすることができます。配送方法ページで「手渡し」ボタンを無効にしたいので、顧客が選択するオプションではありません。

このボタンにメッセージを添付すると、そのボタンをクリックすると予約から1週間以内に倉庫からアイテムを収集することを意味することが明確になります。

メッセージを顧客に表示するにはどうすればよいですか?顧客が支払いページに乗っていない。そして7日間以内にアイテムを収集できるようにメールが送られますか? argosと似ていますが、商品を予約し、買い物に行き、支払いして徴収します。だから私は 'HandDelivery'の記述を予約するように変更することができました。顧客は支払いをしませんが、回収時に支払います。しかしどうですか?

お願いします。ありがとうございます。

よろしく

答えて

2

EDIT:どうやらオスカーは出荷を定義するには、いくつかの方法があります。ダッシュボードで定義されたメソッドをカバーするための回答を更新する!あなたはforked Oscar's shipping appを持っていたら


、リポジトリクラスをオーバーライドし、唯一の希望出荷を返すことができます。

ダッシュボードを通して、あなたの重量ベースの出荷を定義した場合は、WeightBasedモデルでそれを取得し、それだけで返すことができます。

forked_apps /出荷/ repository.py:

from oscar.apps.shipping import repository 
from oscar.core.loading import get_model 
from . import methods 

WeightBased = get_model('shipping', 'WeightBased') 

class Repository(repository.Repository): 
    def get_available_shipping_methods(self, basket, user=None, 
      shipping_addr=None, request=None, **kwargs): 

     if shipping_addr: 
      weightbased_set = WeightBased.objects.all() 

      if weightbased_set: 
       return (list(weightbased_set),) 

     # If no address was specified, or weight-based options are 
     # not available, return the "Reserve" shipping option 
     return (methods.Reserve(),) 

forked_apps /出荷/ methods.py:

from oscar.apps.shipping import methods 

class Reserve(methods.NoShippingRequired): 
    code = 'RESERVE' 
    name = 'Reserve' 
    description = 'Items will be reserved at the warehouse for 7 days' 

遅らせる支払いはpayment appをフォーク伴うだろう、と独自の質問価値があるだろう。

Oscarのドキュメントには、「How to configure shipping」セクションの配送オプションをさらにカスタマイズするための情報もあります。

+0

@JacobHumes私はあなたの説明を理解しています。私は誤りがあります。そして、あなたが私がどこにいるのか理解できるように、私の要求にもっと追加します。 – evepokua

+0

私は上記の詳細を追加しました。見た目とアドバイスを受けることができますか?ありがとうございました。 @Jacob Hume – evepokua

関連する問題