nfe_reader 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +38 -0
- data/Rakefile +13 -0
- data/lib/nfe_reader/authorization.rb +12 -0
- data/lib/nfe_reader/carrier.rb +16 -0
- data/lib/nfe_reader/collection/duplicate.rb +12 -0
- data/lib/nfe_reader/collection.rb +34 -0
- data/lib/nfe_reader/customer.rb +62 -0
- data/lib/nfe_reader/delivery.rb +20 -0
- data/lib/nfe_reader/document.rb +73 -0
- data/lib/nfe_reader/export.rb +12 -0
- data/lib/nfe_reader/fiscal.rb +33 -0
- data/lib/nfe_reader/header.rb +129 -0
- data/lib/nfe_reader/information.rb +38 -0
- data/lib/nfe_reader/product/armament.rb +22 -0
- data/lib/nfe_reader/product/cane.rb +42 -0
- data/lib/nfe_reader/product/exportation.rb +20 -0
- data/lib/nfe_reader/product/fuel.rb +18 -0
- data/lib/nfe_reader/product/importation.rb +49 -0
- data/lib/nfe_reader/product/medicament.rb +19 -0
- data/lib/nfe_reader/product/vehicle.rb +117 -0
- data/lib/nfe_reader/product.rb +90 -0
- data/lib/nfe_reader/provider.rb +43 -0
- data/lib/nfe_reader/purchase.rb +14 -0
- data/lib/nfe_reader/removal.rb +20 -0
- data/lib/nfe_reader/taxation/cofins.rb +43 -0
- data/lib/nfe_reader/taxation/cofins_st.rb +19 -0
- data/lib/nfe_reader/taxation/icms.rb +86 -0
- data/lib/nfe_reader/taxation/importation_tax.rb +17 -0
- data/lib/nfe_reader/taxation/ipi.rb +41 -0
- data/lib/nfe_reader/taxation/issqn.rb +22 -0
- data/lib/nfe_reader/taxation/pis.rb +42 -0
- data/lib/nfe_reader/taxation/pis_st.rb +19 -0
- data/lib/nfe_reader/total.rb +76 -0
- data/lib/nfe_reader/transport.rb +97 -0
- data/lib/nfe_reader/version.rb +5 -0
- data/lib/nfe_reader.rb +129 -0
- data/lib/nokogiri_hash.rb +60 -0
- data/nfe-reader.gemspec +24 -0
- data/test/files/sample-nfe.xml +234 -0
- data/test/files/sample2-nfe.xml +192 -0
- data/test/nfe_reader/authorization_test.rb +22 -0
- data/test/nfe_reader/cane_test.rb +71 -0
- data/test/nfe_reader/carrier_test.rb +46 -0
- data/test/nfe_reader/collection/duplicate_test.rb +27 -0
- data/test/nfe_reader/collection_test.rb +78 -0
- data/test/nfe_reader/customer_test.rb +133 -0
- data/test/nfe_reader/delivery_test.rb +57 -0
- data/test/nfe_reader/document_test.rb +113 -0
- data/test/nfe_reader/export_test.rb +22 -0
- data/test/nfe_reader/fiscal_test.rb +67 -0
- data/test/nfe_reader/header_test.rb +135 -0
- data/test/nfe_reader/information_test.rb +37 -0
- data/test/nfe_reader/product/armament_test.rb +32 -0
- data/test/nfe_reader/product/exportation_test.rb +34 -0
- data/test/nfe_reader/product/fuel_test.rb +44 -0
- data/test/nfe_reader/product/importation_test.rb +64 -0
- data/test/nfe_reader/product/medicament_test.rb +37 -0
- data/test/nfe_reader/product/vehicle_test.rb +133 -0
- data/test/nfe_reader/product_test.rb +125 -0
- data/test/nfe_reader/provider_test.rb +155 -0
- data/test/nfe_reader/purchase_test.rb +27 -0
- data/test/nfe_reader/removal_test.rb +57 -0
- data/test/nfe_reader/taxation/cofins_st_test.rb +37 -0
- data/test/nfe_reader/taxation/cofins_test.rb +42 -0
- data/test/nfe_reader/taxation/icms_test.rb +122 -0
- data/test/nfe_reader/taxation/importation_tax_test.rb +32 -0
- data/test/nfe_reader/taxation/ipi_test.rb +78 -0
- data/test/nfe_reader/taxation/issqn_test.rb +42 -0
- data/test/nfe_reader/taxation/pis_st_test.rb +37 -0
- data/test/nfe_reader/taxation/pis_test.rb +42 -0
- data/test/nfe_reader/total_test.rb +148 -0
- data/test/nfe_reader/transport_test.rb +172 -0
- data/test/nfe_reader_test.rb +125 -0
- data/test/nokogiri_test.rb +27 -0
- data/test/test_helper.rb +13 -0
- metadata +201 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path("../../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::ImportationTax do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
II: {
|
7
|
+
vBC: '100.00',
|
8
|
+
vDespAdu: '17.00',
|
9
|
+
vII: '17.00',
|
10
|
+
vIOF: '5.00'
|
11
|
+
}
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:cofins) { Nfe::ImportationTax.new(nfe_hash[:II]) }
|
16
|
+
|
17
|
+
it '#base' do
|
18
|
+
cofins.base.must_equal '100.00'
|
19
|
+
end
|
20
|
+
|
21
|
+
it '#expenditure' do
|
22
|
+
cofins.expenditure.must_equal '17.00'
|
23
|
+
end
|
24
|
+
|
25
|
+
it '#taxes' do
|
26
|
+
cofins.taxes.must_equal '17.00'
|
27
|
+
end
|
28
|
+
|
29
|
+
it '#iof' do
|
30
|
+
cofins.iof.must_equal '5.00'
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require File.expand_path("../../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Ipi do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
ipi: {
|
7
|
+
clEnq: '0',
|
8
|
+
cEnq: '0',
|
9
|
+
CNPJProd: '99819146000120',
|
10
|
+
cSelo: '0',
|
11
|
+
qSelo: '0',
|
12
|
+
|
13
|
+
IPITrib: {
|
14
|
+
CST: '20',
|
15
|
+
vBC: '100.00',
|
16
|
+
qUnid: '0.00',
|
17
|
+
vUnid: '0.00',
|
18
|
+
pIPI: '15.00',
|
19
|
+
vIPI: '15.00',
|
20
|
+
},
|
21
|
+
|
22
|
+
IPINT:{
|
23
|
+
CST: '10'
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
let(:ipi) { Nfe::Ipi.new(nfe_hash[:ipi]) }
|
30
|
+
|
31
|
+
it '#frame_class' do
|
32
|
+
ipi.frame_class.must_equal '0'
|
33
|
+
end
|
34
|
+
|
35
|
+
it '#frame_code' do
|
36
|
+
ipi.frame_code.must_equal '0'
|
37
|
+
end
|
38
|
+
|
39
|
+
it '#cnpj' do
|
40
|
+
ipi.cnpj.must_equal '99819146000120'
|
41
|
+
end
|
42
|
+
|
43
|
+
it '#seal' do
|
44
|
+
ipi.seal.must_equal '0'
|
45
|
+
end
|
46
|
+
|
47
|
+
it '#seal_amount' do
|
48
|
+
ipi.seal_amount.must_equal '0'
|
49
|
+
end
|
50
|
+
|
51
|
+
it '#cst' do
|
52
|
+
ipi.cst.must_equal '20'
|
53
|
+
end
|
54
|
+
|
55
|
+
it '#ipi_base' do
|
56
|
+
ipi.ipi_base.must_equal '100.00'
|
57
|
+
end
|
58
|
+
|
59
|
+
it '#amount' do
|
60
|
+
ipi.amount.must_equal '0.00'
|
61
|
+
end
|
62
|
+
|
63
|
+
it '#value_unit' do
|
64
|
+
ipi.value_unit.must_equal '0.00'
|
65
|
+
end
|
66
|
+
|
67
|
+
it '#percentage' do
|
68
|
+
ipi.percentage.must_equal '15.00'
|
69
|
+
end
|
70
|
+
|
71
|
+
it '#value' do
|
72
|
+
ipi.value.must_equal '15.00'
|
73
|
+
end
|
74
|
+
|
75
|
+
it '#cst_group' do
|
76
|
+
ipi.cst_group.must_equal '10'
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path("../../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Issqn do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
issqn: {
|
7
|
+
vBC: '100.00',
|
8
|
+
vISSQN: '17.00',
|
9
|
+
cMunFG: '1467',
|
10
|
+
cListServ: '0',
|
11
|
+
vAliq: '17.00',
|
12
|
+
cSitTrib: '10',
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:issqn) { Nfe::Issqn.new(nfe_hash[:issqn]) }
|
18
|
+
|
19
|
+
it '#cst' do
|
20
|
+
issqn.cst.must_equal '10'
|
21
|
+
end
|
22
|
+
|
23
|
+
it '#base' do
|
24
|
+
issqn.base.must_equal '100.00'
|
25
|
+
end
|
26
|
+
|
27
|
+
it '#aliquot' do
|
28
|
+
issqn.aliquot.must_equal '17.00'
|
29
|
+
end
|
30
|
+
|
31
|
+
it '#value' do
|
32
|
+
issqn.value.must_equal '17.00'
|
33
|
+
end
|
34
|
+
|
35
|
+
it '#city' do
|
36
|
+
issqn.city.must_equal '1467'
|
37
|
+
end
|
38
|
+
|
39
|
+
it '#services' do
|
40
|
+
issqn.services.must_equal '0'
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.expand_path("../../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::PisSt do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
pisst: {
|
7
|
+
vBC: '100.00',
|
8
|
+
pPIS: '17.00',
|
9
|
+
vPIS: '17.00',
|
10
|
+
qBCProd: '0',
|
11
|
+
vAliqProd: '0'
|
12
|
+
}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:pis) { Nfe::PisSt.new(nfe_hash[:pisst]) }
|
17
|
+
|
18
|
+
it '#base' do
|
19
|
+
pis.base.must_equal '100.00'
|
20
|
+
end
|
21
|
+
|
22
|
+
it '#percentage' do
|
23
|
+
pis.percentage.must_equal '17.00'
|
24
|
+
end
|
25
|
+
|
26
|
+
it '#value' do
|
27
|
+
pis.value.must_equal '17.00'
|
28
|
+
end
|
29
|
+
|
30
|
+
it '#amount' do
|
31
|
+
pis.amount.must_equal '0'
|
32
|
+
end
|
33
|
+
|
34
|
+
it '#aliquot' do
|
35
|
+
pis.aliquot.must_equal '0'
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path("../../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Pis do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
pis: {
|
7
|
+
CST: '10',
|
8
|
+
vBC: '100.00',
|
9
|
+
pPIS: '17.00',
|
10
|
+
vPIS: '17.00',
|
11
|
+
qBCProd: '0',
|
12
|
+
vAliqProd: '0'
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:pis) { Nfe::Pis.new(nfe_hash[:pis]) }
|
18
|
+
|
19
|
+
it '#cst' do
|
20
|
+
pis.cst.must_equal '10'
|
21
|
+
end
|
22
|
+
|
23
|
+
it '#base' do
|
24
|
+
pis.base.must_equal '100.00'
|
25
|
+
end
|
26
|
+
|
27
|
+
it '#percentage' do
|
28
|
+
pis.percentage.must_equal '17.00'
|
29
|
+
end
|
30
|
+
|
31
|
+
it '#value' do
|
32
|
+
pis.value.must_equal '17.00'
|
33
|
+
end
|
34
|
+
|
35
|
+
it '#amount' do
|
36
|
+
pis.amount.must_equal '0'
|
37
|
+
end
|
38
|
+
|
39
|
+
it '#aliquot' do
|
40
|
+
pis.aliquot.must_equal '0'
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Total do
|
4
|
+
def nfe_hash
|
5
|
+
{
|
6
|
+
total: {
|
7
|
+
ICMSTot: {
|
8
|
+
vBC: '1000.00',
|
9
|
+
vICMS: '500.00',
|
10
|
+
vBCST: '200.00',
|
11
|
+
vST: '50.00',
|
12
|
+
vProd: '750.00',
|
13
|
+
vFrete: '10.00',
|
14
|
+
vSeg: '45.00',
|
15
|
+
vDesc: '12.00',
|
16
|
+
vII: '0.00',
|
17
|
+
vIPI: '12.00',
|
18
|
+
vPIS: '4.00',
|
19
|
+
vCOFINS: '16.00',
|
20
|
+
vOutro: '15.99',
|
21
|
+
vNF: '1250.00'
|
22
|
+
},
|
23
|
+
ISSQNtot: {
|
24
|
+
vServ: '125.00',
|
25
|
+
vBC: '100.00',
|
26
|
+
vISS: '10.00',
|
27
|
+
vPIS: '2.00',
|
28
|
+
vCOFINS: '4.00'
|
29
|
+
},
|
30
|
+
retTrib:{
|
31
|
+
vRetPIS: '1.00',
|
32
|
+
vRetCOFINS: '2.00',
|
33
|
+
vRetCSLL: '5.00',
|
34
|
+
vBCIRRF: '10.00',
|
35
|
+
vIRRF: '1.50',
|
36
|
+
vBCRetPrev: '100.00',
|
37
|
+
vRetPrev: '25.00'
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:total) { Nfe::Total.new(nfe_hash[:total]) }
|
44
|
+
|
45
|
+
it '#icms_base' do
|
46
|
+
total.icms_base.must_equal '1000.00'
|
47
|
+
end
|
48
|
+
|
49
|
+
it '#icms' do
|
50
|
+
total.icms.must_equal '500.00'
|
51
|
+
end
|
52
|
+
|
53
|
+
it '#st_base' do
|
54
|
+
total.st_base.must_equal '200.00'
|
55
|
+
end
|
56
|
+
|
57
|
+
it '#st' do
|
58
|
+
total.st.must_equal '50.00'
|
59
|
+
end
|
60
|
+
|
61
|
+
it '#product' do
|
62
|
+
total.product.must_equal '750.00'
|
63
|
+
end
|
64
|
+
|
65
|
+
it '#freight' do
|
66
|
+
total.freight.must_equal '10.00'
|
67
|
+
end
|
68
|
+
|
69
|
+
it '#insurance' do
|
70
|
+
total.insurance.must_equal '45.00'
|
71
|
+
end
|
72
|
+
|
73
|
+
it '#descount' do
|
74
|
+
total.descount.must_equal '12.00'
|
75
|
+
end
|
76
|
+
|
77
|
+
it '#ii' do
|
78
|
+
total.ii.must_equal '0.00'
|
79
|
+
end
|
80
|
+
|
81
|
+
it '#ipi' do
|
82
|
+
total.ipi.must_equal '12.00'
|
83
|
+
end
|
84
|
+
|
85
|
+
it '#pis' do
|
86
|
+
total.pis.must_equal '4.00'
|
87
|
+
end
|
88
|
+
|
89
|
+
it '#cofins' do
|
90
|
+
total.cofins.must_equal '16.00'
|
91
|
+
end
|
92
|
+
|
93
|
+
it '#another' do
|
94
|
+
total.another.must_equal '15.99'
|
95
|
+
end
|
96
|
+
|
97
|
+
it '#total' do
|
98
|
+
total.total.must_equal '1250.00'
|
99
|
+
end
|
100
|
+
|
101
|
+
it '#service_value' do
|
102
|
+
total.service_value.must_equal '125.00'
|
103
|
+
end
|
104
|
+
|
105
|
+
it '#service_base' do
|
106
|
+
total.service_base.must_equal '100.00'
|
107
|
+
end
|
108
|
+
|
109
|
+
it '#service_iss' do
|
110
|
+
total.service_iss.must_equal '10.00'
|
111
|
+
end
|
112
|
+
|
113
|
+
it '#service_pis' do
|
114
|
+
total.service_pis.must_equal '2.00'
|
115
|
+
end
|
116
|
+
|
117
|
+
it '#service_cofins' do
|
118
|
+
total.service_cofins.must_equal '4.00'
|
119
|
+
end
|
120
|
+
|
121
|
+
it '#retention_pis' do
|
122
|
+
total.retention_pis.must_equal '1.00'
|
123
|
+
end
|
124
|
+
|
125
|
+
it '#retention_cofins' do
|
126
|
+
total.retention_cofins.must_equal '2.00'
|
127
|
+
end
|
128
|
+
|
129
|
+
it '#retention_csll' do
|
130
|
+
total.retention_csll.must_equal '5.00'
|
131
|
+
end
|
132
|
+
|
133
|
+
it '#retention_irrf_base' do
|
134
|
+
total.retention_irrf_base.must_equal '10.00'
|
135
|
+
end
|
136
|
+
|
137
|
+
it '#retention_irrf' do
|
138
|
+
total.retention_irrf.must_equal '1.50'
|
139
|
+
end
|
140
|
+
|
141
|
+
it '#retention_foresight_base' do
|
142
|
+
total.retention_foresight_base.must_equal '100.00'
|
143
|
+
end
|
144
|
+
|
145
|
+
it '#retention_foresight' do
|
146
|
+
total.retention_foresight.must_equal '25.00'
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Transport do
|
4
|
+
def transport_hash
|
5
|
+
{
|
6
|
+
transport: {
|
7
|
+
modFrete: '1',
|
8
|
+
|
9
|
+
retTransp: {
|
10
|
+
vServ: '1000.00',
|
11
|
+
vBCRet: '1000.00',
|
12
|
+
pICMSRet: '12.00',
|
13
|
+
vICMSRet: '120.00',
|
14
|
+
CFOP: '1111',
|
15
|
+
cMunFG: '1356'
|
16
|
+
},
|
17
|
+
|
18
|
+
veicTransp:{
|
19
|
+
placa: 'BBB-1210',
|
20
|
+
UF: 'UF',
|
21
|
+
RNTC: '1129853'
|
22
|
+
},
|
23
|
+
|
24
|
+
reboque: {
|
25
|
+
placa: 'AAA-1210',
|
26
|
+
UF: 'ST',
|
27
|
+
RNTC: '139754'
|
28
|
+
},
|
29
|
+
|
30
|
+
vagao: '0010',
|
31
|
+
balsa: '1000',
|
32
|
+
|
33
|
+
vol: {
|
34
|
+
qVol: '1',
|
35
|
+
esp: '1',
|
36
|
+
marca: '1',
|
37
|
+
nVol: '1',
|
38
|
+
pesoL: '100',
|
39
|
+
pesoB: '130',
|
40
|
+
lacres: {
|
41
|
+
nLacre: '1234567890'
|
42
|
+
}
|
43
|
+
},
|
44
|
+
|
45
|
+
transporta: {
|
46
|
+
CNPJ: '99819146000120',
|
47
|
+
xNome: 'Carrier',
|
48
|
+
IE: '15786913',
|
49
|
+
xEnder: 'Address',
|
50
|
+
xMun: 'City',
|
51
|
+
UF: 'ST'
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def seals_hash
|
58
|
+
{
|
59
|
+
transport: {
|
60
|
+
vol: {
|
61
|
+
lacres: [
|
62
|
+
{ nLacre: '1234567890' },
|
63
|
+
{ nLacre: '1239126304' },
|
64
|
+
{ nLacre: '1231313123' }
|
65
|
+
]
|
66
|
+
},
|
67
|
+
}
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
let(:transport) { Nfe::Transport.new(transport_hash[:transport]) }
|
72
|
+
|
73
|
+
it '#kind' do
|
74
|
+
transport.kind.must_equal '1'
|
75
|
+
end
|
76
|
+
|
77
|
+
it '#service_value' do
|
78
|
+
transport.service_value.must_equal '1000.00'
|
79
|
+
end
|
80
|
+
|
81
|
+
it '#base' do
|
82
|
+
transport.base.must_equal '1000.00'
|
83
|
+
end
|
84
|
+
|
85
|
+
it '#icms_aliquot' do
|
86
|
+
transport.icms_aliquot.must_equal '12.00'
|
87
|
+
end
|
88
|
+
|
89
|
+
it '#icms_value' do
|
90
|
+
transport.icms_value.must_equal '120.00'
|
91
|
+
end
|
92
|
+
|
93
|
+
it '#cfop' do
|
94
|
+
transport.cfop.must_equal '1111'
|
95
|
+
end
|
96
|
+
|
97
|
+
it '#city' do
|
98
|
+
transport.city.must_equal '1356'
|
99
|
+
end
|
100
|
+
|
101
|
+
it '#vehicle_plaque' do
|
102
|
+
transport.vehicle_plaque.must_equal 'BBB-1210'
|
103
|
+
end
|
104
|
+
|
105
|
+
it '#vehicle_state' do
|
106
|
+
transport.vehicle_state.must_equal 'UF'
|
107
|
+
end
|
108
|
+
|
109
|
+
it '#vehicle_rntc' do
|
110
|
+
transport.vehicle_rntc.must_equal '1129853'
|
111
|
+
end
|
112
|
+
|
113
|
+
it '#hauling_palque' do
|
114
|
+
transport.hauling_palque.must_equal 'AAA-1210'
|
115
|
+
end
|
116
|
+
|
117
|
+
it '#hauling_state' do
|
118
|
+
transport.hauling_state.must_equal 'ST'
|
119
|
+
end
|
120
|
+
|
121
|
+
it '#hauling_rntc' do
|
122
|
+
transport.hauling_rntc.must_equal '139754'
|
123
|
+
end
|
124
|
+
|
125
|
+
it '#wagon' do
|
126
|
+
transport.wagon.must_equal '0010'
|
127
|
+
end
|
128
|
+
|
129
|
+
it '#ferry' do
|
130
|
+
transport.ferry.must_equal '1000'
|
131
|
+
end
|
132
|
+
|
133
|
+
it '#volume_amount' do
|
134
|
+
transport.volume_amount.must_equal '1'
|
135
|
+
end
|
136
|
+
|
137
|
+
it '#volume_kind' do
|
138
|
+
transport.volume_kind.must_equal '1'
|
139
|
+
end
|
140
|
+
|
141
|
+
it '#volume_brand' do
|
142
|
+
transport.volume_brand.must_equal '1'
|
143
|
+
end
|
144
|
+
|
145
|
+
it '#volume_number' do
|
146
|
+
transport.volume_number.must_equal '1'
|
147
|
+
end
|
148
|
+
|
149
|
+
it '#weight_net' do
|
150
|
+
transport.weight_net.must_equal '100'
|
151
|
+
end
|
152
|
+
|
153
|
+
it '#weight_gross' do
|
154
|
+
transport.weight_gross.must_equal '130'
|
155
|
+
end
|
156
|
+
|
157
|
+
it '#seals' do
|
158
|
+
transport.seals.must_equal '1234567890'
|
159
|
+
end
|
160
|
+
|
161
|
+
it '#carrier' do
|
162
|
+
transport.carrier.wont_be_nil
|
163
|
+
end
|
164
|
+
|
165
|
+
describe 'seals' do
|
166
|
+
let(:transport) { Nfe::Transport.new(seals_hash[:transport]) }
|
167
|
+
|
168
|
+
it 'have a string with all seal' do
|
169
|
+
transport.seals.must_equal '1234567890, 1239126304, 1231313123'
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require File.expand_path("../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nfe::Reader do
|
4
|
+
let (:nfe) { Nfe::Reader::Base.new(File.open(file)) }
|
5
|
+
|
6
|
+
describe 'many products' do
|
7
|
+
let(:file) { File.open(File.expand_path("../files/sample-nfe.xml", __FILE__))}
|
8
|
+
|
9
|
+
it '#version' do
|
10
|
+
nfe.version.must_equal '2.00'
|
11
|
+
end
|
12
|
+
|
13
|
+
it '#number' do
|
14
|
+
nfe.number.must_equal 'NFe12300384950081649000148500001000001310002342'
|
15
|
+
end
|
16
|
+
|
17
|
+
it '#signature' do
|
18
|
+
nfe.signature.must_be_instance_of Hash
|
19
|
+
end
|
20
|
+
|
21
|
+
it '#customer' do
|
22
|
+
nfe.customer.must_be_instance_of Nfe::Customer
|
23
|
+
end
|
24
|
+
|
25
|
+
it '#information' do
|
26
|
+
nfe.information.must_be_instance_of Nfe::Information
|
27
|
+
end
|
28
|
+
|
29
|
+
it '#header' do
|
30
|
+
nfe.header.must_be_instance_of Nfe::Header
|
31
|
+
end
|
32
|
+
|
33
|
+
it '#provider' do
|
34
|
+
nfe.provider.must_be_instance_of Nfe::Provider
|
35
|
+
end
|
36
|
+
|
37
|
+
it '#customer' do
|
38
|
+
nfe.customer.must_be_instance_of Nfe::Customer
|
39
|
+
end
|
40
|
+
|
41
|
+
it '#products' do
|
42
|
+
nfe.products.must_be_instance_of Array
|
43
|
+
end
|
44
|
+
|
45
|
+
it '#products' do
|
46
|
+
nfe.products.first.must_be_instance_of Nfe::Product
|
47
|
+
end
|
48
|
+
|
49
|
+
it '#collection' do
|
50
|
+
nfe.collection.must_be_instance_of Nfe::Collection
|
51
|
+
end
|
52
|
+
|
53
|
+
it '#transport' do
|
54
|
+
nfe.transport.must_be_instance_of Nfe::Transport
|
55
|
+
end
|
56
|
+
|
57
|
+
it '#purchase' do
|
58
|
+
nfe.purchase.must_be_nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it '#cane' do
|
62
|
+
nfe.cane.must_be_nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it '#export' do
|
66
|
+
nfe.export.must_be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it '#delivery' do
|
70
|
+
nfe.delivery.must_be_nil
|
71
|
+
end
|
72
|
+
|
73
|
+
it '#removal' do
|
74
|
+
nfe.removal.must_be_nil
|
75
|
+
end
|
76
|
+
|
77
|
+
it '#enviroment' do
|
78
|
+
nfe.enviroment.must_equal '1'
|
79
|
+
end
|
80
|
+
|
81
|
+
it '#version_app' do
|
82
|
+
nfe.version_app.must_equal 'SVRS2000101120000'
|
83
|
+
end
|
84
|
+
|
85
|
+
it '#key' do
|
86
|
+
nfe.key.must_equal '12300384950081649000148500001000001310002342'
|
87
|
+
end
|
88
|
+
|
89
|
+
it '#date' do
|
90
|
+
nfe.date.must_equal '2000-01-01T12:00:00'
|
91
|
+
end
|
92
|
+
|
93
|
+
it '#protocol' do
|
94
|
+
nfe.protocol.must_equal '100000481241129'
|
95
|
+
end
|
96
|
+
|
97
|
+
it '#digest' do
|
98
|
+
nfe.digest.must_equal 'aklOQ0184NjoeaqCIRT01927Crf='
|
99
|
+
end
|
100
|
+
|
101
|
+
it '#status' do
|
102
|
+
nfe.status.must_equal '100'
|
103
|
+
end
|
104
|
+
|
105
|
+
it '#description' do
|
106
|
+
nfe.description.must_equal 'Autorizado o uso da NF-e'
|
107
|
+
end
|
108
|
+
|
109
|
+
it '#total' do
|
110
|
+
nfe.total.must_be_instance_of Nfe::Total
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe 'single product' do
|
115
|
+
let(:file) { File.open(File.expand_path("../files/sample2-nfe.xml", __FILE__))}
|
116
|
+
|
117
|
+
it '#products' do
|
118
|
+
nfe.products.must_be_instance_of Array
|
119
|
+
end
|
120
|
+
|
121
|
+
it '#products' do
|
122
|
+
nfe.products.first.must_be_instance_of Nfe::Product
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path("../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe Nokogiri::XML::Node do
|
4
|
+
def xml
|
5
|
+
%q{
|
6
|
+
<xml>
|
7
|
+
<tag_one version='1.0'>
|
8
|
+
<subtag_one>Subtag One</subtag_one>
|
9
|
+
</tag_one>
|
10
|
+
<tag_two>Tag Two</tag_two>
|
11
|
+
<empty_tag/>
|
12
|
+
</xml>
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def xml_in_hash
|
17
|
+
{:xml=>{:tag_one=>{:version=>"1.0", :subtag_one=>"Subtag One"}, :tag_two=>"Tag Two", :empty_tag=> nil}}
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:nokogiri_xml) { Nokogiri::XML(xml) }
|
21
|
+
|
22
|
+
it { assert_equal nokogiri_xml.to_hash, xml_in_hash }
|
23
|
+
it { assert_equal nokogiri_xml.to_hash[:xml][:tag_one][:version], "1.0" }
|
24
|
+
it { assert_equal nokogiri_xml.to_hash[:xml][:tag_one][:subtag_one], "Subtag One" }
|
25
|
+
it { assert_equal nokogiri_xml.to_hash[:xml][:tag_two], "Tag Two" }
|
26
|
+
it { assert_equal nokogiri_xml.to_hash[:xml][:empty_tag], nil }
|
27
|
+
end
|