nova-api 0.6.0 → 0.7.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/CHANGELOG.md +14 -0
- data/Gemfile.lock +1 -1
- data/lib/nova/api.rb +1 -0
- data/lib/nova/api/base.rb +9 -7
- data/lib/nova/api/list_response.rb +5 -1
- data/lib/nova/api/resource/bill.rb +26 -3
- data/lib/nova/api/resource/card.rb +2 -2
- data/lib/nova/api/resource/current_asset.rb +1 -1
- data/lib/nova/api/resource/installment.rb +2 -2
- data/lib/nova/api/resource/payable.rb +4 -0
- data/lib/nova/api/resource/receivable.rb +5 -1
- data/lib/nova/api/resource/response/current_asset_statement.rb +1 -1
- data/lib/nova/api/resource/third_party.rb +5 -5
- data/lib/nova/api/resource/write_off.rb +1 -1
- data/lib/nova/api/search_params/bill.rb +9 -0
- data/lib/nova/api/utils/base_struct.rb +5 -1
- data/lib/nova/api/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b216822cbce6773c2c57891e535c183cce4fa84a659c58ea03b57f9137fd7a06
|
4
|
+
data.tar.gz: 9a0203ee8e6fffda09ea938d49d02394148ba5cb04514962aaa6150d8a918fa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c02e39188f050e491dae8d8cea5cf96650e7718bef05b8d9bb0d5161396e89daecd10ff5751b2c1cb68030bdef3bfb07d8f0f6ff5489a5bdaefe2d31144fcd7d
|
7
|
+
data.tar.gz: 603d6ec2bad145e6e7917819407c6db33f03ec9a2e23c0ab17768fc3b71763a3a239115110e622335ac0b838cb10d8a8fc25cebdb44a758aa0f8cba9d7ce83f6
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [0.7.0] - 2021-03-12
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- Bill document types constants
|
13
|
+
|
14
|
+
- Bill due types constants
|
15
|
+
|
16
|
+
- Identifier attribute to bill resource
|
17
|
+
|
18
|
+
- Receivables search endpoint
|
19
|
+
|
20
|
+
- Payables search endpoint
|
21
|
+
|
8
22
|
## [0.6.0] - 2021-03-10
|
9
23
|
|
10
24
|
### Added
|
data/Gemfile.lock
CHANGED
data/lib/nova/api.rb
CHANGED
@@ -27,6 +27,7 @@ require "nova/api/resource/write_off"
|
|
27
27
|
require "nova/api/resource/response/current_asset_statement"
|
28
28
|
|
29
29
|
require "nova/api/search_params/apportionment"
|
30
|
+
require "nova/api/search_params/bill"
|
30
31
|
require "nova/api/search_params/current_asset"
|
31
32
|
require "nova/api/search_params/current_asset_statement"
|
32
33
|
require "nova/api/search_params/third_party"
|
data/lib/nova/api/base.rb
CHANGED
@@ -32,13 +32,7 @@ module Nova
|
|
32
32
|
data = klass.schema.type.keys.map do |field|
|
33
33
|
name = field.name
|
34
34
|
|
35
|
-
|
36
|
-
[name, additional_attributes[name]]
|
37
|
-
else
|
38
|
-
type = field.type
|
39
|
-
|
40
|
-
type.optional? ? [name, nil] : [name, generate_valid_value_for(type)]
|
41
|
-
end
|
35
|
+
value_for_field(name, additional_attributes[name], field)
|
42
36
|
end
|
43
37
|
|
44
38
|
klass.new(Hash[*data.flatten].merge(id: id))
|
@@ -96,6 +90,14 @@ module Nova
|
|
96
90
|
|
97
91
|
private
|
98
92
|
|
93
|
+
def self.value_for_field(name, override_value, field)
|
94
|
+
return [name, override_value] if override_value
|
95
|
+
|
96
|
+
type = field.type
|
97
|
+
|
98
|
+
type.optional? ? [name, nil] : [name, generate_valid_value_for(type)]
|
99
|
+
end
|
100
|
+
|
99
101
|
def self.perform_get(endpoint, query, headers = {})
|
100
102
|
set_base_uri
|
101
103
|
|
@@ -17,7 +17,7 @@ module Nova
|
|
17
17
|
records = nil
|
18
18
|
|
19
19
|
if parsed_response.is_a?(Array)
|
20
|
-
records = klass
|
20
|
+
records = build_records(klass, parsed_response)
|
21
21
|
else
|
22
22
|
parsed_response = parsed_response.to_h
|
23
23
|
|
@@ -37,6 +37,10 @@ module Nova
|
|
37
37
|
|
38
38
|
response[field].is_a?(Array) ? response[field] : [response[field]]
|
39
39
|
end
|
40
|
+
|
41
|
+
def self.build_records(klass, response)
|
42
|
+
response.map { |object| klass.new(object) } unless klass.nil?
|
43
|
+
end
|
40
44
|
end
|
41
45
|
end
|
42
46
|
end
|
@@ -2,16 +2,38 @@ module Nova
|
|
2
2
|
module API
|
3
3
|
module Resource
|
4
4
|
class Bill < Nova::API::Base
|
5
|
+
module DOCUMENT_TYPE
|
6
|
+
INVOICE = 0
|
7
|
+
RECEIPT = 1
|
8
|
+
COUPON_TAX = 2
|
9
|
+
BILL = 3
|
10
|
+
BILLET = 4
|
11
|
+
CHEQUE = 5
|
12
|
+
INITIAL_BALANCE = 6
|
13
|
+
TRANSFERENCE = 7
|
14
|
+
CONTRACT = 8
|
15
|
+
OTHER = 9
|
16
|
+
STATEMENT = 10
|
17
|
+
end
|
18
|
+
|
19
|
+
module DUE_TYPE
|
20
|
+
MONTHLY = 0
|
21
|
+
BIWEEKLY = 1
|
22
|
+
TEN_DAYS = 2
|
23
|
+
FIXED = 3
|
24
|
+
WEEKLY = 4
|
25
|
+
end
|
26
|
+
|
5
27
|
class Apportionment < Nova::API::Utils::BaseStruct
|
6
28
|
ALLOWED_ATTRIBUTES = [:value, :apportionment_value_ids]
|
7
29
|
|
8
30
|
attribute :apportionment_value_ids, Dry::Types['strict.array'].of(Dry::Types['coercible.integer'].optional)
|
9
|
-
attribute :value, Dry::Types['coercible.
|
31
|
+
attribute :value, Dry::Types['coercible.float']
|
10
32
|
end
|
11
33
|
|
12
34
|
ALLOWED_ATTRIBUTES = [
|
13
35
|
:additional_information, :apportionments, :company_id, :date, :document_type, :document_number, :due_type, :financial_account_id,
|
14
|
-
:first_due_date, :forecast, :installments, :installments_number, :third_party_id, :total_value
|
36
|
+
:first_due_date, :forecast, :identifier, :installments, :installments_number, :third_party_id, :total_value
|
15
37
|
]
|
16
38
|
|
17
39
|
attribute? :id, Dry::Types['coercible.integer'].optional
|
@@ -25,10 +47,11 @@ module Nova
|
|
25
47
|
attribute :financial_account_id, Dry::Types['coercible.integer']
|
26
48
|
attribute :first_due_date, Dry::Types['coercible.string'].constrained(format: DATE_REGEX)
|
27
49
|
attribute :forecast, Dry::Types['strict.bool']
|
50
|
+
attribute? :identifier, Dry::Types['coercible.string'].optional
|
28
51
|
attribute? :installments, Dry::Types['strict.array'].of(Nova::API::Resource::Installment).optional
|
29
52
|
attribute :installments_number, Dry::Types['coercible.integer']
|
30
53
|
attribute :third_party_id, Dry::Types['coercible.integer']
|
31
|
-
attribute :total_value, Dry::Types['coercible.
|
54
|
+
attribute :total_value, Dry::Types['coercible.float']
|
32
55
|
|
33
56
|
def self.endpoint
|
34
57
|
'/api/bills'
|
@@ -5,8 +5,8 @@ module Nova
|
|
5
5
|
class Tax < Nova::API::Utils::BaseStruct
|
6
6
|
ALLOWED_ATTRIBUTES = %i[]
|
7
7
|
|
8
|
-
attribute :percentage, Dry::Types['coercible.
|
9
|
-
attribute :fixed, Dry::Types['coercible.
|
8
|
+
attribute :percentage, Dry::Types['coercible.float']
|
9
|
+
attribute :fixed, Dry::Types['coercible.float']
|
10
10
|
attribute :type, Dry::Types['coercible.string']
|
11
11
|
attribute :installments, Dry::Types['coercible.integer']
|
12
12
|
attribute :days, Dry::Types['coercible.integer']
|
@@ -8,7 +8,7 @@ module Nova
|
|
8
8
|
attribute? :company, Nova::API::Resource::Company.optional
|
9
9
|
attribute? :active, Dry::Types['strict.bool'].optional
|
10
10
|
attribute? :image, Dry::Types['coercible.string'].optional
|
11
|
-
attribute? :balance, Dry::Types['coercible.
|
11
|
+
attribute? :balance, Dry::Types['coercible.float'].optional
|
12
12
|
|
13
13
|
def self.endpoint
|
14
14
|
'/api/current_assets'
|
@@ -6,9 +6,9 @@ module Nova
|
|
6
6
|
|
7
7
|
attribute? :id, Dry::Types['coercible.integer'].optional
|
8
8
|
attribute :due_date, Dry::Types['coercible.string'].constrained(format: DATE_REGEX)
|
9
|
-
attribute? :gross_value, Dry::Types['coercible.
|
9
|
+
attribute? :gross_value, Dry::Types['coercible.float'].optional
|
10
10
|
attribute :number, Dry::Types['coercible.integer']
|
11
|
-
attribute :value, Dry::Types['coercible.
|
11
|
+
attribute :value, Dry::Types['coercible.float']
|
12
12
|
|
13
13
|
def self.endpoint
|
14
14
|
'/api/installments'
|
@@ -4,12 +4,16 @@ module Nova
|
|
4
4
|
class Receivable < Nova::API::Resource::Bill
|
5
5
|
ALLOWED_ATTRIBUTES = Nova::API::Resource::Bill::ALLOWED_ATTRIBUTES.dup << :gross_value
|
6
6
|
|
7
|
-
attribute? :gross_value, Dry::Types['coercible.
|
7
|
+
attribute? :gross_value, Dry::Types['coercible.float'].optional
|
8
8
|
|
9
9
|
def self.endpoint
|
10
10
|
'/api/receivables'
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.list(parameters = {})
|
14
|
+
do_get_search(endpoint, parameters.to_h)
|
15
|
+
end
|
16
|
+
|
13
17
|
def self.create(parameters)
|
14
18
|
model = new parameters
|
15
19
|
|
@@ -3,7 +3,7 @@ module Nova
|
|
3
3
|
module Resource
|
4
4
|
module Response
|
5
5
|
class CurrentAssetStatement < Nova::API::Utils::BaseStruct
|
6
|
-
attribute? :last_statement, Dry::Types['coercible.
|
6
|
+
attribute? :last_statement, Dry::Types['coercible.float'].optional
|
7
7
|
attribute? :write_offs, Dry::Types['strict.array'].of(Nova::API::Resource::WriteOff).optional
|
8
8
|
end
|
9
9
|
end
|
@@ -27,11 +27,11 @@ module Nova
|
|
27
27
|
attribute? :google, Dry::Types['coercible.string'].optional
|
28
28
|
attribute? :instagram, Dry::Types['coercible.string'].optional
|
29
29
|
attribute? :site, Dry::Types['coercible.string'].optional
|
30
|
-
attribute? :csll, Dry::Types['coercible.
|
31
|
-
attribute? :pis, Dry::Types['coercible.
|
32
|
-
attribute? :cofins, Dry::Types['coercible.
|
33
|
-
attribute? :irpj, Dry::Types['coercible.
|
34
|
-
attribute? :values_past, Dry::Types['coercible.
|
30
|
+
attribute? :csll, Dry::Types['coercible.float'].optional
|
31
|
+
attribute? :pis, Dry::Types['coercible.float'].optional
|
32
|
+
attribute? :cofins, Dry::Types['coercible.float'].optional
|
33
|
+
attribute? :irpj, Dry::Types['coercible.float'].optional
|
34
|
+
attribute? :values_past, Dry::Types['coercible.float'].optional
|
35
35
|
|
36
36
|
def self.endpoint
|
37
37
|
'/api/third_parties'
|
@@ -5,7 +5,7 @@ module Nova
|
|
5
5
|
ALLOWED_ATTRIBUTES = %i[]
|
6
6
|
|
7
7
|
attribute? :date, Dry::Types['coercible.string'].constrained(format: DATE_REGEX).optional
|
8
|
-
attribute? :value, Dry::Types['coercible.
|
8
|
+
attribute? :value, Dry::Types['coercible.float'].optional
|
9
9
|
attribute? :financial_account, Nova::API::Resource::FinancialAccount.optional
|
10
10
|
attribute? :third_party, Nova::API::Resource::ThirdParty.optional
|
11
11
|
end
|
@@ -19,7 +19,7 @@ module Nova
|
|
19
19
|
|
20
20
|
value = attributes[key]
|
21
21
|
|
22
|
-
data[key.to_sym] =
|
22
|
+
data[key.to_sym] = extract_value(key, value)
|
23
23
|
end
|
24
24
|
|
25
25
|
data
|
@@ -27,6 +27,10 @@ module Nova
|
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
+
def extract_value(key, value)
|
31
|
+
value.is_a?(Array) ? value.map { |attribute| permit_value(key, attribute) } : permit_value(key, value)
|
32
|
+
end
|
33
|
+
|
30
34
|
def permit_value(key, value)
|
31
35
|
value.respond_to?(:allowed_attributes) ? value.allowed_attributes : value
|
32
36
|
end
|
data/lib/nova/api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nova-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Coyô Software
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -191,6 +191,7 @@ files:
|
|
191
191
|
- lib/nova/api/resource/write_off.rb
|
192
192
|
- lib/nova/api/response.rb
|
193
193
|
- lib/nova/api/search_params/apportionment.rb
|
194
|
+
- lib/nova/api/search_params/bill.rb
|
194
195
|
- lib/nova/api/search_params/current_asset.rb
|
195
196
|
- lib/nova/api/search_params/current_asset_statement.rb
|
196
197
|
- lib/nova/api/search_params/third_party.rb
|