Изменение потока проверки в spree-0.10.2 - PullRequest
2 голосов
/ 05 апреля 2010

Мне нужен процесс оформления заказа без шага доставки и оплаты (работает в магазине, который принимает наложенным платежом, поэтому мне нужно только шаг адреса.) Я использую Шпрее 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 

Ненужные шаги удаляются (хотя бы визуально), но когда я отправляю адрес он выдает следующую ошибку.

IndexError in CheckoutsController обновление # "оплата" является недействительным именем

Глядя на след и пару похожих ошибок позже, я решил слепо переопределить два метода из checkouts_controller.rb в site_extension.rb ничего не делать (так как они имеют дело с оплатой я предположим)

 def clear_payments_if_in_payment_state 
 end

 def object_params 
 end

При этом возникают ошибки проверки на всех полях доставки и Платежный адрес. Я смутно понимаю, что мне нужно переопределить пару методов из checkouts_controller.rb. Если это понятие верно, то каковы эти методы.

Ответы [ 2 ]

1 голос
/ 30 августа 2013

Вам необходимо:

1) Удалите этап перехода состояния платежа и состояния доставки.

2) Также переопределяет метод payment_required.

3) Эти шаги должны быть в order_decorator.rb в каталоге app / models / spree.

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

Я проверял это на 2-0-стабильном с рельсами 3.2.14.

1 голос
/ 26 августа 2013

Извините, я не могу вам помочь: настройка процесса оформления заказа с помощью Spree 0.10.2 является своего рода кошмаром. Но я бы порекомендовал перейти на более свежую версию Spree, например 1.3-stable . Если вы переключитесь на этот файл, это будет так же просто, как создать файл order_decorator.rb в your_app_folder/app/models/spree со следующим кодом:

Spree::Order.class_eval do
  remove_checkout_step :delivery 
  remove_checkout_step :payment
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...