class Gemgento::API::SOAP::Sales::RecurringProfile
Public Class Methods
fetch_all()
click to toggle source
Fetch and sync all recurring profiles from Magento.
@return [Boolean]
# File lib/gemgento/api/soap/sales/recurring_profile.rb, line 10 def self.fetch_all if magento_profiles = list magento_profiles.each{ |source| sync_magento_to_local(source) } return true else return false end end
list()
click to toggle source
Get a list of all recurring profiles from Magento.
@return [Array(Hash), Boolean]
# File lib/gemgento/api/soap/sales/recurring_profile.rb, line 22 def self.list response = MagentoApi.create_call(:sales_recurring_profile_list) if response.success? return response.body[:result][:item].is_a?(Array) ? response.body[:result][:item] : [response.body[:result][:item]] else return false end end
update_state(profile_id, state)
click to toggle source
Update a recurring profile state in Magento.
@param [Integer] profile_id @param [String] state @return [Boolean]
# File lib/gemgento/api/soap/sales/recurring_profile.rb, line 37 def self.update_state(profile_id, state) message = { profile_id: profile_id, state: state } response = MagentoApi.create_call(:sales_recurring_profile_update_state, message) if response.success? return true else return response.body[:faultstring] end end
Private Class Methods
sync_magento_to_local(source)
click to toggle source
Sync a Magento recurring profile to Gemgento
.
@param [Hash] source @return [Profile]
# File lib/gemgento/api/soap/sales/recurring_profile.rb, line 57 def self.sync_magento_to_local(source) profile = Gemgento::RecurringProfile.find_or_initialize_by(magento_id: source[:profile_id]) profile.state = source[:state] profile.store = Store.find_by(magento_id: source[:store_id]) profile.method_code = source[:method_code] profile.reference_id = source[:reference_id] profile.subscriber_name = source[:subscriber_name] profile.start_datetime = source[:start_datetime].to_datetime profile.internal_reference_id = source[:internal_reference_id] profile.schedule_description = source[:schedule_description] profile.period_unit = source[:period_unit] profile.period_frequency = source[:period_frequency] profile.billing_amount = source[:billing_amount] profile.currency_code = source[:currency_code] profile.shipping_amount = source[:shipping_amount] profile.tax_amount = source[:tax_amount] if user = User.find_by(magento_id: source[:customer_id]) profile.user = user end profile.save profile.orders = Gemgento::Order.where(order_id: source[:order_ids][:item]) return profile end