nfe_reader 1.0.5 → 1.0.6
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 +3 -3
- data/lib/nfe_reader.rb +4 -4
- data/lib/nfe_reader/address.rb +38 -0
- data/lib/nfe_reader/authorization.rb +8 -10
- data/lib/nfe_reader/billing.rb +21 -0
- data/lib/nfe_reader/billing/duplicate.rb +14 -0
- data/lib/nfe_reader/carrier.rb +12 -14
- data/lib/nfe_reader/customer.rb +15 -57
- data/lib/nfe_reader/delivery.rb +16 -18
- data/lib/nfe_reader/document.rb +63 -65
- data/lib/nfe_reader/export.rb +8 -10
- data/lib/nfe_reader/fiscal.rb +29 -31
- data/lib/nfe_reader/header.rb +114 -123
- data/lib/nfe_reader/helpers/attribute_helper.rb +24 -0
- data/lib/nfe_reader/helpers/creator_helper.rb +40 -0
- data/lib/{helpers → nfe_reader/helpers}/nokogiri_hash.rb +2 -0
- data/lib/nfe_reader/information.rb +17 -19
- data/lib/nfe_reader/nfe.rb +78 -87
- data/lib/nfe_reader/person.rb +53 -0
- data/lib/nfe_reader/product.rb +69 -67
- data/lib/nfe_reader/product/armament.rb +18 -20
- data/lib/nfe_reader/product/cane.rb +22 -24
- data/lib/nfe_reader/product/exportation.rb +15 -17
- data/lib/nfe_reader/product/fuel.rb +13 -15
- data/lib/nfe_reader/product/importation.rb +42 -44
- data/lib/nfe_reader/product/medicament.rb +15 -17
- data/lib/nfe_reader/product/vehicle.rb +113 -115
- data/lib/nfe_reader/provider.rb +10 -40
- data/lib/nfe_reader/purchase.rb +9 -12
- data/lib/nfe_reader/removal.rb +17 -19
- data/lib/nfe_reader/taxation/cofins.rb +41 -41
- data/lib/nfe_reader/taxation/cofins_st.rb +15 -17
- data/lib/nfe_reader/taxation/icms.rb +80 -81
- data/lib/nfe_reader/taxation/importation_tax.rb +14 -16
- data/lib/nfe_reader/taxation/ipi.rb +35 -37
- data/lib/nfe_reader/taxation/issqn.rb +17 -19
- data/lib/nfe_reader/taxation/pis.rb +41 -41
- data/lib/nfe_reader/taxation/pis_st.rb +16 -18
- data/lib/nfe_reader/total.rb +71 -71
- data/lib/nfe_reader/transport.rb +76 -89
- data/lib/nfe_reader/version.rb +2 -4
- data/nfe-reader.gemspec +2 -1
- data/test/nfe_reader/address_test.rb +75 -0
- data/test/nfe_reader/authorization_test.rb +2 -2
- data/test/nfe_reader/{collection → billing}/duplicate_test.rb +2 -2
- data/test/nfe_reader/{collection_test.rb → billing_test.rb} +13 -13
- data/test/nfe_reader/cane_test.rb +2 -2
- data/test/nfe_reader/carrier_test.rb +4 -4
- data/test/nfe_reader/customer_test.rb +6 -101
- data/test/nfe_reader/delivery_test.rb +2 -2
- data/test/nfe_reader/document_test.rb +2 -2
- data/test/nfe_reader/export_test.rb +2 -2
- data/test/nfe_reader/fiscal_test.rb +2 -2
- data/test/nfe_reader/header_test.rb +2 -2
- data/test/{helpers → nfe_reader/helpers}/attributte_helper_test.rb +3 -3
- data/test/{helpers → nfe_reader/helpers}/creator_helper_test.rb +3 -3
- data/test/{helpers → nfe_reader/helpers}/nokogiri_test.rb +1 -1
- data/test/nfe_reader/information_test.rb +2 -2
- data/test/nfe_reader/nfe_test.rb +13 -13
- data/test/nfe_reader/person_test.rb +60 -0
- data/test/nfe_reader/product/armament_test.rb +2 -2
- data/test/nfe_reader/product/exportation_test.rb +2 -2
- data/test/nfe_reader/product/fuel_test.rb +2 -2
- data/test/nfe_reader/product/importation_test.rb +2 -2
- data/test/nfe_reader/product/medicament_test.rb +2 -2
- data/test/nfe_reader/product/vehicle_test.rb +2 -2
- data/test/nfe_reader/product_test.rb +2 -2
- data/test/nfe_reader/provider_test.rb +5 -118
- data/test/nfe_reader/purchase_test.rb +2 -2
- data/test/nfe_reader/removal_test.rb +2 -2
- data/test/nfe_reader/taxation/cofins_st_test.rb +2 -2
- data/test/nfe_reader/taxation/cofins_test.rb +2 -2
- data/test/nfe_reader/taxation/icms_test.rb +2 -2
- data/test/nfe_reader/taxation/importation_tax_test.rb +2 -2
- data/test/nfe_reader/taxation/ipi_test.rb +2 -2
- data/test/nfe_reader/taxation/issqn_test.rb +2 -2
- data/test/nfe_reader/taxation/pis_st_test.rb +2 -2
- data/test/nfe_reader/taxation/pis_test.rb +2 -2
- data/test/nfe_reader/total_test.rb +2 -2
- data/test/nfe_reader/transport_test.rb +3 -3
- metadata +37 -17
- data/lib/helpers/attribute_helper.rb +0 -18
- data/lib/helpers/creator_helper.rb +0 -32
- data/lib/nfe_reader/collection.rb +0 -38
- data/lib/nfe_reader/collection/duplicate.rb +0 -16
data/lib/nfe_reader/version.rb
CHANGED
data/nfe-reader.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'nfe_reader/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "nfe_reader"
|
8
|
-
spec.version =
|
8
|
+
spec.version = NfeReader::VERSION
|
9
9
|
spec.authors = ["Eduardo Becker"]
|
10
10
|
spec.email = ["edu.bkr@gmail.com"]
|
11
11
|
spec.summary = %q{NFe XML Extractor}
|
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "turn", "~> 0.9"
|
24
|
+
spec.add_development_dependency "minitest"
|
24
25
|
spec.add_dependency "nokogiri", "~> 1.6"
|
25
26
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe NfeReader::Address do
|
4
|
+
def cte_hash
|
5
|
+
{
|
6
|
+
CNPJ: '58571647000153',
|
7
|
+
CPF: '28113502254',
|
8
|
+
fone: '55 5555-5555',
|
9
|
+
xLgr: 'Address',
|
10
|
+
nro: 'Number',
|
11
|
+
xCpl: 'Complement',
|
12
|
+
xBairro: 'Neighborhood',
|
13
|
+
cMun: '1001',
|
14
|
+
xMun: 'City',
|
15
|
+
CEP: '00000-000',
|
16
|
+
UF: 'State',
|
17
|
+
cPais: '1058',
|
18
|
+
xPais: 'Brazil'
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:address) { NfeReader::Address.new(cte_hash) }
|
23
|
+
|
24
|
+
it '#cnpj' do
|
25
|
+
address.cnpj.must_equal cte_hash[:CNPJ]
|
26
|
+
end
|
27
|
+
|
28
|
+
it '#cpf' do
|
29
|
+
address.cpf.must_equal cte_hash[:CPF]
|
30
|
+
end
|
31
|
+
|
32
|
+
it '#phone' do
|
33
|
+
address.phone.must_equal cte_hash[:fone]
|
34
|
+
end
|
35
|
+
|
36
|
+
it '#address' do
|
37
|
+
address.address.must_equal cte_hash[:xLgr]
|
38
|
+
end
|
39
|
+
|
40
|
+
it '#number' do
|
41
|
+
address.number.must_equal cte_hash[:nro]
|
42
|
+
end
|
43
|
+
|
44
|
+
it '#complement' do
|
45
|
+
address.complement.must_equal cte_hash[:xCpl]
|
46
|
+
end
|
47
|
+
|
48
|
+
it '#neighborhood' do
|
49
|
+
address.neighborhood.must_equal cte_hash[:xBairro]
|
50
|
+
end
|
51
|
+
|
52
|
+
it '#city_code' do
|
53
|
+
address.city_code.must_equal cte_hash[:cMun]
|
54
|
+
end
|
55
|
+
|
56
|
+
it '#city' do
|
57
|
+
address.city.must_equal cte_hash[:xMun]
|
58
|
+
end
|
59
|
+
|
60
|
+
it '#zip_code' do
|
61
|
+
address.zip_code.must_equal cte_hash[:CEP]
|
62
|
+
end
|
63
|
+
|
64
|
+
it '#state' do
|
65
|
+
address.state.must_equal cte_hash[:UF]
|
66
|
+
end
|
67
|
+
|
68
|
+
it '#country_code' do
|
69
|
+
address.country_code.must_equal cte_hash[:cPais]
|
70
|
+
end
|
71
|
+
|
72
|
+
it '#country' do
|
73
|
+
address.country.must_equal cte_hash[:xPais]
|
74
|
+
end
|
75
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Authorization do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
autXML: {
|
@@ -10,7 +10,7 @@ describe Nfe::Reader::Authorization do
|
|
10
10
|
}
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:authorization) {
|
13
|
+
let(:authorization) { NfeReader::Authorization.new(nfe_hash[:autXML]) }
|
14
14
|
|
15
15
|
it '#cnpj' do
|
16
16
|
authorization.cnpj.must_equal '99819146000120'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Duplicate do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
duplicate: {
|
@@ -11,7 +11,7 @@ describe Nfe::Reader::Duplicate do
|
|
11
11
|
}
|
12
12
|
end
|
13
13
|
|
14
|
-
let(:duplicate) {
|
14
|
+
let(:duplicate) { NfeReader::Duplicate.new(nfe_hash[:duplicate]) }
|
15
15
|
|
16
16
|
it '#number' do
|
17
17
|
duplicate.number.must_equal '1'
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Billing do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
|
-
|
6
|
+
billing: {
|
7
7
|
fat:{
|
8
8
|
nFat: '1000',
|
9
9
|
vOrig: '1500.00',
|
@@ -19,9 +19,9 @@ describe Nfe::Reader::Collection do
|
|
19
19
|
}
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def billing_hash
|
23
23
|
{
|
24
|
-
|
24
|
+
billing: {
|
25
25
|
fat:{
|
26
26
|
nFat: '1000',
|
27
27
|
vOrig: '1500.00',
|
@@ -44,35 +44,35 @@ describe Nfe::Reader::Collection do
|
|
44
44
|
}
|
45
45
|
end
|
46
46
|
|
47
|
-
let(:
|
47
|
+
let(:billing) { NfeReader::Billing.new(nfe_hash[:billing]) }
|
48
48
|
|
49
49
|
describe 'One duplicate' do
|
50
50
|
it '#number' do
|
51
|
-
|
51
|
+
billing.number.must_equal '1000'
|
52
52
|
end
|
53
53
|
|
54
54
|
it '#value' do
|
55
|
-
|
55
|
+
billing.value.must_equal '1500.00'
|
56
56
|
end
|
57
57
|
|
58
|
-
it '#
|
59
|
-
|
58
|
+
it '#descount' do
|
59
|
+
billing.descount.must_equal '0.00'
|
60
60
|
end
|
61
61
|
|
62
62
|
it '#value_net' do
|
63
|
-
|
63
|
+
billing.value_net.must_equal '1500.00'
|
64
64
|
end
|
65
65
|
|
66
66
|
it '#duplicates' do
|
67
|
-
|
67
|
+
billing.duplicates.size.must_equal 1
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
describe 'Two duplicate' do
|
72
|
-
let(:
|
72
|
+
let(:billing) { NfeReader::Billing.new(billing_hash[:billing]) }
|
73
73
|
|
74
74
|
it '#duplicates' do
|
75
|
-
|
75
|
+
billing.duplicates.size.must_equal 2
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Cane do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
cana: {
|
@@ -27,7 +27,7 @@ describe Nfe::Reader::Cane do
|
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
30
|
-
let(:cane) {
|
30
|
+
let(:cane) { NfeReader::Cane.new(nfe_hash[:cana]) }
|
31
31
|
|
32
32
|
it '#harvest' do
|
33
33
|
cane.harvest.must_equal '2000'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Carrier do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
transp: {
|
@@ -14,7 +14,7 @@ describe Nfe::Reader::Carrier do
|
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
|
-
let(:carrier) {
|
17
|
+
let(:carrier) { NfeReader::Carrier.new(nfe_hash[:transp]) }
|
18
18
|
|
19
19
|
it '#cnpj' do
|
20
20
|
carrier.cnpj.must_equal '99819146000120'
|
@@ -28,8 +28,8 @@ describe Nfe::Reader::Carrier do
|
|
28
28
|
carrier.name.must_equal 'Carrier'
|
29
29
|
end
|
30
30
|
|
31
|
-
it '#
|
32
|
-
carrier.
|
31
|
+
it '#state_registration' do
|
32
|
+
carrier.state_registration.must_equal '15786913'
|
33
33
|
end
|
34
34
|
|
35
35
|
it '#address' do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Customer do
|
4
4
|
def customer_hash
|
5
5
|
{
|
6
6
|
dest: {
|
@@ -26,108 +26,13 @@ describe Nfe::Reader::Customer do
|
|
26
26
|
}
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
let(:customer) { Nfe::Reader::Customer.new(customer_hash[:dest]) }
|
29
|
+
let(:customer) { NfeReader::Customer.new(customer_hash[:dest]) }
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
it '#cnpj' do
|
37
|
-
customer.cnpj.must_equal '99819146000120'
|
38
|
-
end
|
39
|
-
|
40
|
-
it '#cpf' do
|
41
|
-
customer.cpf.must_equal '64046757655'
|
42
|
-
end
|
43
|
-
|
44
|
-
it '#name' do
|
45
|
-
customer.name.must_equal 'Customer'
|
46
|
-
end
|
47
|
-
|
48
|
-
it '#state_registration' do
|
49
|
-
customer.state_registration.must_equal '15786913'
|
50
|
-
end
|
51
|
-
|
52
|
-
it '#email' do
|
53
|
-
customer.email.must_equal 'customer@test.mail'
|
54
|
-
end
|
55
|
-
|
56
|
-
it '#suframa' do
|
57
|
-
customer.suframa.must_equal '1234567890'
|
58
|
-
end
|
59
|
-
|
60
|
-
it '#phone' do
|
61
|
-
customer.phone.must_equal '55 5555-5555'
|
62
|
-
end
|
63
|
-
|
64
|
-
it '#number' do
|
65
|
-
customer.number.must_equal '123'
|
66
|
-
end
|
67
|
-
|
68
|
-
it '#address' do
|
69
|
-
customer.address.must_equal 'Green Street'
|
70
|
-
end
|
71
|
-
it '#neighborhood' do
|
72
|
-
customer.neighborhood.must_equal 'Neighborhood'
|
73
|
-
end
|
74
|
-
|
75
|
-
it '#city_code' do
|
76
|
-
customer.city_code.must_equal '1246'
|
77
|
-
end
|
78
|
-
|
79
|
-
it '#city' do
|
80
|
-
customer.city.must_equal 'City'
|
81
|
-
end
|
82
|
-
|
83
|
-
it '#state' do
|
84
|
-
customer.state.must_equal 'ST'
|
85
|
-
end
|
86
|
-
|
87
|
-
it '#country_code' do
|
88
|
-
customer.country_code.must_equal '1058'
|
89
|
-
end
|
90
|
-
|
91
|
-
it '#country' do
|
92
|
-
customer.country.must_equal 'Brazil'
|
93
|
-
end
|
31
|
+
it '#person' do
|
32
|
+
customer.person.must_be_instance_of NfeReader::Person
|
94
33
|
end
|
95
34
|
|
96
|
-
|
97
|
-
|
98
|
-
it '#phone' do
|
99
|
-
customer.number.must_be_nil
|
100
|
-
end
|
101
|
-
|
102
|
-
it '#number' do
|
103
|
-
customer.number.must_be_nil
|
104
|
-
end
|
105
|
-
|
106
|
-
it '#address' do
|
107
|
-
customer.address.must_be_nil
|
108
|
-
end
|
109
|
-
it '#neighborhood' do
|
110
|
-
customer.neighborhood.must_be_nil
|
111
|
-
end
|
112
|
-
|
113
|
-
it '#city_code' do
|
114
|
-
customer.city_code.must_be_nil
|
115
|
-
end
|
116
|
-
|
117
|
-
it '#city' do
|
118
|
-
customer.city.must_be_nil
|
119
|
-
end
|
120
|
-
|
121
|
-
it '#state' do
|
122
|
-
customer.state.must_be_nil
|
123
|
-
end
|
124
|
-
|
125
|
-
it '#country_code' do
|
126
|
-
customer.country_code.must_be_nil
|
127
|
-
end
|
128
|
-
|
129
|
-
it '#country' do
|
130
|
-
customer.country.must_be_nil
|
131
|
-
end
|
35
|
+
it '#address' do
|
36
|
+
customer.address.must_be_instance_of NfeReader::Address
|
132
37
|
end
|
133
38
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Delivery do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
entrega: {
|
@@ -17,7 +17,7 @@ describe Nfe::Reader::Delivery do
|
|
17
17
|
}
|
18
18
|
end
|
19
19
|
|
20
|
-
let(:delivery) {
|
20
|
+
let(:delivery) { NfeReader::Delivery.new(nfe_hash[:entrega]) }
|
21
21
|
|
22
22
|
it '#cnpj' do
|
23
23
|
delivery.cnpj.must_equal '99819146000120'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Document do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
NFref: {
|
@@ -33,7 +33,7 @@ describe Nfe::Reader::Document do
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
36
|
-
let(:document) {
|
36
|
+
let(:document) { NfeReader::Document.new(nfe_hash[:NFref]) }
|
37
37
|
|
38
38
|
it '#key' do
|
39
39
|
document.key.must_equal '1000000000000'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Export do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
exporta: {
|
@@ -10,7 +10,7 @@ describe Nfe::Reader::Export do
|
|
10
10
|
}
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:export) {
|
13
|
+
let(:export) { NfeReader::Export.new(nfe_hash[:exporta]) }
|
14
14
|
|
15
15
|
it '#state' do
|
16
16
|
export.state.must_equal 'ST'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Fiscal do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
avulsa: {
|
@@ -19,7 +19,7 @@ describe Nfe::Reader::Fiscal do
|
|
19
19
|
}
|
20
20
|
end
|
21
21
|
|
22
|
-
let(:fiscal) {
|
22
|
+
let(:fiscal) { NfeReader::Fiscal.new(nfe_hash[:avulsa]) }
|
23
23
|
|
24
24
|
it '#cnpj' do
|
25
25
|
fiscal.cnpj.must_equal '99819146000120'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NfeReader::Header do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
ide: {
|
@@ -31,7 +31,7 @@ describe Nfe::Reader::Header do
|
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
34
|
-
let(:header) {
|
34
|
+
let(:header) { NfeReader::Header.new(nfe_hash[:ide]) }
|
35
35
|
|
36
36
|
it '#final_consumer' do
|
37
37
|
header.final_consumer.must_equal '0'
|