2

配達と支払いのステップがないチェックアウトプロセスが必要です(代引きを受け入れる店で働いているので、住所のステップだけが必要です)。Spree 0.10.2を使用しています

私が試したこと:site_extension.rb次のステートマシンを追加しました

Checkout.state_machines[:state] = StateMachine::Machine.new(Checkout, :initial => 'address') do 
      after_transition :to => 'complete', :do => :complete_order 
      before_transition :to => 'complete', :do => :process_payment 
      event :next do 
        transition :to => 'complete', :from => 'address' 
      end 
    end 

不要な手順は (少なくとも視覚的には) 削除されますが、アドレスを送信すると、次のエラーがスローされます。

CheckoutsController の IndexError#update "payment" は無効な名前です

後でトレースといくつかの同様のエラーを見て、site_extension.rb の checkouts_controller.rb からの 2 つのメソッドをやみくもにオーバーライドして、何もしないことにしました (それらは支払いを処理していると思われるため)。

 def clear_payments_if_in_payment_state 
 end

 def object_params 
 end

これを行うと、配送先住所と請求先住所のすべてのフィールドで検証エラーがスローされます。私は、checkouts_controller.rb のいくつかのメソッドをオーバーライドする必要があるという漠然とした考えを持っています。この概念が正しい場合、それらの方法は何ですか。

4

2 に答える 2

1

必要がある :

1) paymenttransition と delivery state transition ステップを削除します。

2) payment_required メソッドもオーバーライドします。

3) これらの手順は、app/models/spree ディレクトリの下の order_decorator.rb にある必要があります。

checkout_flow do
    go_to_state :address
   # go_to_state :payment
    go_to_state :complete
    remove_transition :from => :delivery, :to => :confirm
    remove_transition :from => :delivery, :to => :confirm
    remove_transition :from => :payment, :to => :confirm
  end
  #Spree::Order.state_machine.before_transition :to => :payment, :do => :set_order

  def set_order
    self.create_proposed_shipments
  end
  def require_email
    return false
  end
  def payment_required?
    false
  end

これは、レール 3.2.14 を使用した spree 2-0-stable でテストしました。

于 2013-08-30T14:10:33.220 に答える
1

申し訳ありませんが、私は本当にあなたを助けることができません.Spree 0.10.2でチェックアウトプロセスをカスタマイズすることは、悪夢のようなものです. ただし、 1.3-stableなどの最新バージョンの Spree に切り替えることをお勧めします。これに切り替えると、次のコードでorder_decorator.rbファイルを作成するのと同じくらい簡単になります。your_app_folder/app/models/spree

Spree::Order.class_eval do
  remove_checkout_step :delivery 
  remove_checkout_step :payment
end
于 2013-08-26T14:52:08.810 に答える