मुझे एक डिलीवरी और भुगतान चरण से रहित चेकआउट प्रक्रिया की आवश्यकता है (एक स्टोर पर काम करना जो कैश ऑन डिलीवरी स्वीकार करता है इसलिए मुझे केवल इसकी आवश्यकता है पता चरण।) मै इस्तेमाल कर रहा हूँ होड़ 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 # अद्यतन "भुगतान" एक अमान्य नाम है
समान त्रुटियों के निशान और जोड़े को देखते हुएबाद में, मैं तय करता हूं checkouts_controller.rb से आँख बंद करके दो तरीकों को ओवरराइड करें site_extension.rb कुछ नहीं करने के लिए (क्योंकि वे भुगतान के साथ सौदा मैं अनुमान)
def clear_payments_if_in_payment_state
end
def object_params
end
यह करना सभी पर सत्यापन त्रुटियों को फेंकता हैवितरण के क्षेत्र और बिल भेजने का पता। मेरे पास एक धारणा है कि मुझे कुछ तरीकों को ओवरराइड करने की आवश्यकता है checkouts_controller.rb से। अगर यह धारणा सही है तो क्या हैं उन तरीकों।
उत्तर:
उत्तर № 1 के लिए 1आपको :
1) भुगतान और वितरण राज्य संक्रमण कदम को हटा दें।
2) इसके अलावा भुगतान_प्राप्त विधि को ओवरराइड करना।
3) इन चरणों को एप्लिकेशन / मॉडल / होड़ निर्देशिका के तहत 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
मैंने इसे 2-0 से देखा है।
उत्तर № 2 के लिए 1
क्षमा करें, मैं वास्तव में आपकी सहायता नहीं कर सकता: Spree 0.10.2 के साथ चेकआउट प्रक्रिया को अनुकूलित करना एक बुरा सपना है। लेकिन मैं स्प्री के हाल के संस्करण में स्विच करने की सलाह दूंगा, जैसे कि 1.3 स्थिर। यदि आप उस एक पर स्विच करते हैं, तो यह बनाना आसान होगा order_decorator.rb
में फाइल your_app_folder/app/models/spree
निम्नलिखित कोड के साथ:
Spree::Order.class_eval do
remove_checkout_step :delivery
remove_checkout_step :payment
end