class TFSO::Company
Constants
- URL
Public Class Methods
new(auth)
click to toggle source
# File lib/tfso/company.rb, line 8 def initialize(auth) ensure_authenticated(auth) self.session_id = auth.session_id intialize_savon_client end
Public Instance Methods
create(company_info)
click to toggle source
# File lib/tfso/company.rb, line 38 def create(company_info) response = savon_client.call(:save_companies, message: {companies: [{Company: company_info}]}, cookies: @cookies) result = response.body[:save_companies_response][:save_companies_result] if result if result[:company].class == Hash if result[:company][:api_exception] raise result[:company][:api_exception] else result[:company] end else result[:company] end else false end end
find(search_params)
click to toggle source
# File lib/tfso/company.rb, line 14 def find(search_params) response = savon_client.call(:get_companies, message: {searchParams: search_params, returnProperties: {string: ['Id', 'OrganizationNumber', 'NickName', 'Country', 'Addresses', 'EmailAddresses', 'PhoneNumbers', 'InvoiceLanguage', 'TypeGroup', 'DistributionMethod', 'Currency']}}, cookies: @cookies) result = response.body[:get_companies_response][:get_companies_result] if result if result[:company].class == Hash [result[:company]] else result[:company] end else [] end end
find_by_id(id)
click to toggle source
# File lib/tfso/company.rb, line 28 def find_by_id(id) if company = find(CompanyId: id) company.first end end
find_by_name(name)
click to toggle source
# File lib/tfso/company.rb, line 34 def find_by_name(name) find(CompanyName: name) end
transform_attributes(company)
click to toggle source
# File lib/tfso/company.rb, line 56 def transform_attributes(company) company.compact! company[:EmailAddresses] ||= [] company[:PhoneNumbers] ||= [] company[:Addresses] ||= [] if company[:billing_id] company[:id] = company.delete(:billing_id) else company[:Type] = 'Business' end if company[:billing_name] company[:nickname] = company.delete(:name) company[:name] = company.delete(:billing_name) end if company[:billing_email] company[:EmailAddresses] << {:Invoice => { :Value => company.delete(:billing_email) } } company.delete(:billing_email) end if company[:email] company[:EmailAddresses] << {:Work => { :Value => company.delete(:email) } } company.delete(:email) end if company[:phone_number] company[:PhoneNumbers] << {:Work => { :Value => company.delete(:phone_number) } } company.delete(:phone_number) end if company[:mobile_phone_number] company[:PhoneNumbers] << {:Mobile => { :Value => company.delete(:mobile_phone_number) } } company.delete(:mobile_phone_number) end if company[:billing_address] address = { :Name => company.delete(:billing_name) || company[:name], :Street => company.delete(:billing_street), :PostalCode => company.delete(:billing_postal_code), :PostalArea => company.delete(:billing_city), :State => company.delete(:billing_state), :Country => company.delete(:billing_country_code) } company[:Addresses] << {:Invoice => address} company[:Addresses] << {:Delivery => address.merge(:Name => company[:name])} company.delete(:billing_address) end if company[:tfso] company[:tfso].keys.each{|k| company[k] = company[:tfso].delete(k)} company.delete(:tfso) end mappings = {:name => :Name, :nickname => :NickName, :gov_no => :OrganizationNumber, :country_code => :Country} company.keys.each {|k| company[ mappings[k] ] = company.delete(k) if mappings[k]} company end