effective_qb_online 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0a57f6214297b86608b3cddc41885a14093371ccf8246471177e83adca31c93
4
- data.tar.gz: e5035d9267de8cf24a5ce0431a051e41621797b2c9ffbbdebade41f07b324d1a
3
+ metadata.gz: 57216dcf3ae7c167d41dad7c56b0f6f625b428646efccfe7d3c03149377276f3
4
+ data.tar.gz: 8a6174d2268d4301a432a52b1dac6ff0fce077f7e3eb830b42899a17a5d810e8
5
5
  SHA512:
6
- metadata.gz: d69dbad553ff14cd2e1cc75e32b25f39f0b900afafc8197a4efd43ddc718eb2df7e6df455b93aca8d44ff964654eacdc77195f2324a8b0882f1a72aa49b116e5
7
- data.tar.gz: c855c58edfb05b3b1bd767b9a92fa40f9f281e1c98ba3c484e33d74bb2f6175f208954fdd66d61dd3e414b539ca0c586c2a3540a5243e886a674921eb7470bcb
6
+ metadata.gz: dd06c85052e13213874e0e70d6830b35b2e3f6c34f670eb289e0d2ac0ab712b24b47fd1f9eee199d61c6c1e8250d5f3c74ac676204cc2bf1856d65e5b70db945
7
+ data.tar.gz: e6d6c68c7354f14b8bd951d6f203e6a4e1f2ab9901f1f58b790004da95a2ec95bbff6de9f89c3666c0e6a16c19b2a6d0c8223ff32ff1dff582a1d4aedd2664a1
@@ -97,36 +97,30 @@ module Effective
97
97
  payment_methods.sort_by(&:name).map { |payment_method| [payment_method.name, payment_method.id] }
98
98
  end
99
99
 
100
- def find_or_create_customer(user:)
101
- find_customer(user: user) || create_customer(user: user)
100
+ def find_or_create_customer(order:)
101
+ find_customer(order: order) || create_customer(order: order)
102
102
  end
103
103
 
104
- def find_customer(user:)
105
- raise('expected a user that responds to email') unless user.respond_to?(:email)
104
+ def find_customer(order:)
105
+ raise('expected an Effective::Order') unless order.kind_of?(Effective::Order)
106
106
 
107
107
  with_service('Customer') do |service|
108
108
  # Find by email
109
- customer = service.find_by(:PrimaryEmailAddr, user.email)&.first
110
-
111
- # Find by given name and family name
112
- customer ||= if user.respond_to?(:first_name) && user.respond_to?(:last_name)
113
- service.query("SELECT * FROM Customer WHERE GivenName LIKE '#{scrub(user.first_name, sql: true)}' AND FamilyName LIKE '#{scrub(user.last_name, sql: true)}'")&.first
114
- end
109
+ customer = service.find_by(:PrimaryEmailAddr, order.email)&.first
115
110
 
116
111
  # Find by display name
117
- customer || service.find_by(:display_name, scrub(user.to_s))&.first
112
+ customer || service.find_by(:display_name, scrub(order.billing_name))&.first
118
113
  end
119
114
  end
120
115
 
121
- def create_customer(user:)
122
- raise('expected a user that responds to email') unless user.respond_to?(:email)
116
+ # https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/customer#create-a-customer
117
+ def create_customer(order:)
118
+ raise('expected an Effective::Order') unless order.kind_of?(Effective::Order)
123
119
 
124
120
  with_service('Customer') do |service|
125
121
  customer = Quickbooks::Model::Customer.new(
126
- primary_email_address: Quickbooks::Model::EmailAddress.new(user.email),
127
- display_name: scrub(user.to_s),
128
- given_name: scrub(user.try(:first_name)),
129
- family_name: scrub(user.try(:last_name))
122
+ primary_email_address: Quickbooks::Model::EmailAddress.new(order.email),
123
+ display_name: scrub(order.billing_name)
130
124
  )
131
125
 
132
126
  service.create(customer)
@@ -68,7 +68,7 @@ module Effective
68
68
 
69
69
  # Find or build customer
70
70
  if receipt.customer_id.blank?
71
- customer = api.find_or_create_customer(user: user)
71
+ customer = api.find_or_create_customer(order: order)
72
72
  receipt.update!(customer_id: customer.id)
73
73
  end
74
74
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveQbOnline
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_qb_online
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-24 00:00:00.000000000 Z
11
+ date: 2023-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails