effective_qb_online 0.1.7 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f761163092d4217a1ba74cbc4903332f914c4ebb87f8cb5400d0801062aec74f
|
4
|
+
data.tar.gz: '0529a8121cd5ad7fdd16349c7643539f47d09c8420da35312575558d9ca93fd6'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08195220d727d8b4229a00a54d5b331b825836e4a45aebe1a921ad5b0e31a0d2e8e9628b6310fd896d6c737013f97b9fa7b1db333032a1146f0946c27244d1bd'
|
7
|
+
data.tar.gz: 2f950c7623f4f195b4615fc85b393d720b5c92c3e5a63d8332057df2b7cff76c0cb38ee74c6361cb60f0564aa9ad6dcbb3800a373a52f9ffa47e26b0d47ad274
|
@@ -1,12 +1,15 @@
|
|
1
1
|
module Admin
|
2
2
|
class EffectiveQbItemsDatatable < Effective::Datatable
|
3
3
|
datatable do
|
4
|
-
col :name, label: 'QuickBooks Item Name'
|
5
4
|
col :id, label: 'QuickBooks Item Id'
|
5
|
+
col :name, label: 'QuickBooks Item Name'
|
6
|
+
col :fully_qualified_name, label: 'QuickBooks Fully Qualified Name'
|
6
7
|
end
|
7
8
|
|
8
9
|
collection do
|
9
|
-
EffectiveQbOnline.api.
|
10
|
+
EffectiveQbOnline.api.items.map do |item|
|
11
|
+
[item.id, item.name, item.fully_qualified_name]
|
12
|
+
end
|
10
13
|
end
|
11
14
|
|
12
15
|
end
|
@@ -25,22 +25,41 @@ module Effective
|
|
25
25
|
# Find and validate items
|
26
26
|
items = api.items()
|
27
27
|
|
28
|
+
# Credit card surcharge item
|
29
|
+
surcharge_item = if EffectiveOrders.try(:credit_card_surcharge_qb_item_name).present?
|
30
|
+
name = EffectiveOrders.credit_card_surcharge_qb_item_name
|
31
|
+
|
32
|
+
item = items.find do |item|
|
33
|
+
[scrub(item.id), scrub(item.name), scrub(item.fully_qualified_name)].include?(scrub(name))
|
34
|
+
end
|
35
|
+
|
36
|
+
raise("Missing Credit Card Surcharge item #{name}. Please add this to your Quickbooks items.") unless item.present?
|
37
|
+
|
38
|
+
item
|
39
|
+
end
|
40
|
+
|
28
41
|
receipt.qb_receipt_items.each do |receipt_item|
|
29
42
|
purchasable = receipt_item.order_item.purchasable
|
30
43
|
raise("Expected a purchasable for Effective::OrderItem #{receipt_item.order_item.id}") unless purchasable.present?
|
31
44
|
|
32
45
|
# Either of these could match
|
33
|
-
purchasable_id_name = [
|
46
|
+
purchasable_id_name = [
|
47
|
+
(scrub(purchasable.qb_item_id) if purchasable.try(:qb_item_id)),
|
48
|
+
(scrub(purchasable.qb_item_name) if purchasable.try(:qb_item_name))
|
49
|
+
].compact
|
34
50
|
|
35
51
|
# Find item by receipt item
|
36
|
-
item = items.find
|
52
|
+
item = items.find do |item|
|
53
|
+
[scrub(item.id), scrub(item.name), scrub(item.fully_qualified_name)].include?(scrub(receipt_item.item_id))
|
54
|
+
end
|
37
55
|
|
38
56
|
# Find item by purchasable qb_item_id and qb_item_name
|
39
|
-
item ||=
|
40
|
-
|
57
|
+
item ||= items.find do |item|
|
58
|
+
([scrub(item.id), scrub(item.name), scrub(item.fully_qualified_name)] & purchasable_id_name).present?
|
41
59
|
end
|
42
60
|
|
43
61
|
if item.blank?
|
62
|
+
purchasable_id_name = [purchasable.try(:qb_item_id), purchasable.try(:qb_item_name)].compact
|
44
63
|
raise("Unknown Item #{purchasable_id_name.join(' or ')} from #{purchasable} (#{purchasable.class.name} ##{purchasable.id})")
|
45
64
|
end
|
46
65
|
|
@@ -92,6 +111,23 @@ module Effective
|
|
92
111
|
sales_receipt.line_items << line_item
|
93
112
|
end
|
94
113
|
|
114
|
+
# Add Credit Card Surcharge
|
115
|
+
if order.try(:surcharge).to_i != 0
|
116
|
+
raise("Expected a Credit Card Surcharge QuickBooks item to exist for Effective::Order #{order.id} with non-zero surcharge amount. Please check your configuration.") unless surcharge_item.present?
|
117
|
+
|
118
|
+
line_item = Quickbooks::Model::Line.new(amount: api.price_to_amount(order.surcharge), description: 'Credit Card Surcharge')
|
119
|
+
|
120
|
+
line_item.sales_item! do |line|
|
121
|
+
line.item_id = surcharge_item.item_id
|
122
|
+
line.tax_code_id = tax_code.id # Surcharge is taxed at same rate as items
|
123
|
+
|
124
|
+
line.unit_price = api.price_to_amount(order.surcharge)
|
125
|
+
line.quantity = 1
|
126
|
+
end
|
127
|
+
|
128
|
+
sales_receipt.line_items << line_item
|
129
|
+
end
|
130
|
+
|
95
131
|
# Double check
|
96
132
|
raise("Invalid SalesReceipt generated for Effective::Order #{order.id}") unless sales_receipt.valid?
|
97
133
|
|
@@ -99,5 +135,11 @@ module Effective
|
|
99
135
|
sales_receipt
|
100
136
|
end
|
101
137
|
|
138
|
+
private
|
139
|
+
|
140
|
+
def self.scrub(value)
|
141
|
+
value.to_s.downcase.strip
|
142
|
+
end
|
143
|
+
|
102
144
|
end
|
103
145
|
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
|
+
version: 0.3.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: 2022-
|
11
|
+
date: 2022-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|