basecrm 1.1.3 → 1.2.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 +4 -4
- data/README.md +15 -1
- data/lib/basecrm.rb +2 -0
- data/lib/basecrm/models/deal.rb +6 -1
- data/lib/basecrm/services/deals_service.rb +1 -0
- data/lib/basecrm/utils/coercion.rb +16 -0
- data/lib/basecrm/version.rb +1 -1
- data/spec/support/client_helpers.rb +5 -1
- data/spec/utils/coercion.rb +11 -0
- data/spec/utils/coercion_spec.rb +21 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e8513fed187fd425dfc03d14f6edc9e0312d5b8
|
4
|
+
data.tar.gz: fe357512fa2b8b38d7bd690b74d8dcf8a3aa2278
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07aefda4c009ce86458520ca4e581d05d5deeea651194c8a8f025a046a0a3edd33f41358ae00a4b59d8a30a76b460d49bcc6beec816946b811fa33de7f9b5819
|
7
|
+
data.tar.gz: b24f5704e1bc9c043cb7b59facef478fcbc3088febf54775449a09ab39d56e4ce80498815213e4723b93620a884889e7bc53066abf651e2c083037ca594223cf
|
data/README.md
CHANGED
@@ -93,7 +93,7 @@ client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
|
93
93
|
coffeeshop = client.contacts.where(name: "Coffee Shop")
|
94
94
|
|
95
95
|
deal = client.deals.create(name: "Website redesign", contact_id: coffeeshop.id)
|
96
|
-
deal.value = 1000
|
96
|
+
deal.value = BigDecimal("1000.99")
|
97
97
|
deal.currency = "USD"
|
98
98
|
|
99
99
|
client.deals.update(deal) # => BaseCRM::Deal
|
@@ -202,6 +202,20 @@ Actions:
|
|
202
202
|
* Update a deal - `client.deals.update`
|
203
203
|
* Delete a deal - `client.deals.destroy`
|
204
204
|
|
205
|
+
**A note about deal value**
|
206
|
+
|
207
|
+
It is prefered to use a BigDecimal when creating or modyfing a deal value. This guarantees correct precision
|
208
|
+
|
209
|
+
```
|
210
|
+
deal.value = BigDecimal("1000.98")
|
211
|
+
```
|
212
|
+
|
213
|
+
You should not be using floats as it may result in precision loss.
|
214
|
+
|
215
|
+
```
|
216
|
+
deal.value = 1000.98
|
217
|
+
```
|
218
|
+
|
205
219
|
### Lead
|
206
220
|
|
207
221
|
```ruby
|
data/lib/basecrm.rb
CHANGED
data/lib/basecrm/models/deal.rb
CHANGED
@@ -52,7 +52,12 @@ module BaseCRM
|
|
52
52
|
# @return [Array<String>] An array of tags for a deal. See more at [Tags](/docs/rest/articles/requests#tags).
|
53
53
|
# attr_accessor :tags
|
54
54
|
# @!attribute [rw] value
|
55
|
-
# @return [
|
55
|
+
# @return [BigDecimal] Value of the deal in a currency specified in the `currency` field.
|
56
56
|
# attr_accessor :value
|
57
|
+
|
58
|
+
def initialize(*args)
|
59
|
+
super
|
60
|
+
@table[:value] = BaseCRM::Coercion.to_decimal_value(@table[:value] || 0)
|
61
|
+
end
|
57
62
|
end
|
58
63
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "bigdecimal"
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class Coercion
|
5
|
+
def self.to_decimal_value(value)
|
6
|
+
BigDecimal.new((value || 0), 15)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.to_string(value)
|
10
|
+
case value
|
11
|
+
when BigDecimal then value.to_s('F')
|
12
|
+
else value.to_s
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/basecrm/version.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
module ClientHelpers
|
2
2
|
def client
|
3
|
-
@client ||= BaseCRM::Client.new(access_token: access_token)
|
3
|
+
@client ||= BaseCRM::Client.new(access_token: access_token, base_url: base_url)
|
4
4
|
end
|
5
5
|
|
6
6
|
def access_token
|
7
7
|
@access_token ||= ENV.fetch("BASECRM_ACCESS_TOKEN") { raise '"BASECRM_ACCESS_TOKEN" has not been found.' }
|
8
8
|
end
|
9
9
|
|
10
|
+
def base_url
|
11
|
+
@basecrm_url ||= ENV.fetch("BASECRM_BASE_URL") { "https://api.getbase.com" }
|
12
|
+
end
|
13
|
+
|
10
14
|
def contact
|
11
15
|
@contact ||= FactoryGirl.create(:contact)
|
12
16
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BaseCRM::Coercion do
|
4
|
+
describe "to_decimal" do
|
5
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(0)).to eql(0) }
|
6
|
+
it { expect(BaseCRM::Coercion.to_decimal_value("0")).to eql(0) }
|
7
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(nil)).to eql(0) }
|
8
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(1.1)).to eql(BigDecimal.new("1.1", 15)) }
|
9
|
+
it { expect(BaseCRM::Coercion.to_decimal_value("1.11")).to eql(BigDecimal.new("1.11", 15)) }
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "bigdecimal"
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe BaseCRM::Coercion do
|
5
|
+
describe "to_decimal" do
|
6
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(0)).to eql(0) }
|
7
|
+
it { expect(BaseCRM::Coercion.to_decimal_value("0")).to eql(0) }
|
8
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(nil)).to eql(0) }
|
9
|
+
it { expect(BaseCRM::Coercion.to_decimal_value(1.1)).to eql(BigDecimal.new("1.1", 15)) }
|
10
|
+
it { expect(BaseCRM::Coercion.to_decimal_value("1.11")).to eql(BigDecimal.new("1.11", 15)) }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "to_string" do
|
14
|
+
it { expect(BaseCRM::Coercion.to_string(1)).to eql("1") }
|
15
|
+
it { expect(BaseCRM::Coercion.to_string("1")).to eql("1") }
|
16
|
+
it { expect(BaseCRM::Coercion.to_string(1.11)).to eql("1.11") }
|
17
|
+
it { expect(BaseCRM::Coercion.to_string("1.11")).to eql("1.11") }
|
18
|
+
it { expect(BaseCRM::Coercion.to_string(BigDecimal("1.11"))).to eql("1.11") }
|
19
|
+
it { expect(BaseCRM::Coercion.to_string(BigDecimal(1.11, 15))).to eql("1.11") }
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: basecrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BaseCRM developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- lib/basecrm/services/tasks_service.rb
|
172
172
|
- lib/basecrm/services/users_service.rb
|
173
173
|
- lib/basecrm/sync.rb
|
174
|
+
- lib/basecrm/utils/coercion.rb
|
174
175
|
- lib/basecrm/version.rb
|
175
176
|
- spec/basecrm/sync_spec.rb
|
176
177
|
- spec/factories/associated_contact.rb
|
@@ -199,6 +200,8 @@ files:
|
|
199
200
|
- spec/services/users_service_spec.rb
|
200
201
|
- spec/spec_helper.rb
|
201
202
|
- spec/support/client_helpers.rb
|
203
|
+
- spec/utils/coercion.rb
|
204
|
+
- spec/utils/coercion_spec.rb
|
202
205
|
homepage: https://github.com/basecrm/basecrm-ruby
|
203
206
|
licenses:
|
204
207
|
- MIT
|
@@ -219,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
222
|
version: '0'
|
220
223
|
requirements: []
|
221
224
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.2.2
|
223
226
|
signing_key:
|
224
227
|
specification_version: 4
|
225
228
|
summary: BaseCRM Official API V2 library client for ruby
|
@@ -251,4 +254,6 @@ test_files:
|
|
251
254
|
- spec/services/users_service_spec.rb
|
252
255
|
- spec/spec_helper.rb
|
253
256
|
- spec/support/client_helpers.rb
|
257
|
+
- spec/utils/coercion.rb
|
258
|
+
- spec/utils/coercion_spec.rb
|
254
259
|
has_rdoc:
|