nfe_reader 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -1
- data/lib/helpers/attribute_helper.rb +18 -0
- data/lib/helpers/creator_helper.rb +32 -0
- data/lib/nfe_reader/authorization.rb +10 -6
- data/lib/nfe_reader/carrier.rb +14 -10
- data/lib/nfe_reader/collection/duplicate.rb +10 -6
- data/lib/nfe_reader/collection.rb +28 -24
- data/lib/nfe_reader/customer.rb +56 -52
- data/lib/nfe_reader/delivery.rb +18 -14
- data/lib/nfe_reader/document.rb +65 -61
- data/lib/nfe_reader/export.rb +9 -5
- data/lib/nfe_reader/fiscal.rb +31 -27
- data/lib/nfe_reader/header.rb +120 -117
- data/lib/nfe_reader/information.rb +17 -26
- data/lib/nfe_reader/nfe.rb +130 -0
- data/lib/nfe_reader/product/armament.rb +20 -16
- data/lib/nfe_reader/product/cane.rb +22 -32
- data/lib/nfe_reader/product/exportation.rb +17 -13
- data/lib/nfe_reader/product/fuel.rb +15 -11
- data/lib/nfe_reader/product/importation.rb +44 -40
- data/lib/nfe_reader/product/medicament.rb +17 -13
- data/lib/nfe_reader/product/vehicle.rb +115 -111
- data/lib/nfe_reader/product.rb +67 -76
- data/lib/nfe_reader/provider.rb +39 -35
- data/lib/nfe_reader/purchase.rb +10 -6
- data/lib/nfe_reader/removal.rb +18 -14
- data/lib/nfe_reader/taxation/cofins.rb +41 -37
- data/lib/nfe_reader/taxation/cofins_st.rb +17 -13
- data/lib/nfe_reader/taxation/icms.rb +80 -76
- data/lib/nfe_reader/taxation/importation_tax.rb +16 -12
- data/lib/nfe_reader/taxation/ipi.rb +37 -33
- data/lib/nfe_reader/taxation/issqn.rb +19 -15
- data/lib/nfe_reader/taxation/pis.rb +41 -37
- data/lib/nfe_reader/taxation/pis_st.rb +18 -14
- data/lib/nfe_reader/total.rb +71 -67
- data/lib/nfe_reader/transport.rb +87 -83
- data/lib/nfe_reader/version.rb +1 -1
- data/lib/nfe_reader.rb +3 -130
- data/test/helpers/attributte_helper_test.rb +19 -0
- data/test/helpers/creator_helper_test.rb +28 -0
- data/test/{nokogiri_test.rb → helpers/nokogiri_test.rb} +1 -1
- data/test/nfe_reader/authorization_test.rb +2 -2
- data/test/nfe_reader/cane_test.rb +2 -2
- data/test/nfe_reader/carrier_test.rb +2 -2
- data/test/nfe_reader/collection/duplicate_test.rb +2 -2
- data/test/nfe_reader/collection_test.rb +3 -3
- data/test/nfe_reader/customer_test.rb +3 -3
- 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/nfe_reader/information_test.rb +2 -2
- data/test/{nfe_reader_test.rb → nfe_reader/nfe_test.rb} +15 -15
- 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 +27 -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 +6 -6
- data/test/nfe_reader/provider_test.rb +3 -3
- 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 +14 -7
- /data/lib/{nokogiri_hash.rb → helpers/nokogiri_hash.rb} +0 -0
data/lib/nfe_reader/total.rb
CHANGED
@@ -1,75 +1,79 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
module Nfe
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
:service_value, :service_base, :service_iss, :service_pis, :service_cofins,
|
7
|
-
:retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
|
8
|
-
:retention_irrf, :retention_foresight_base, :retention_foresight
|
3
|
+
module Reader
|
4
|
+
class Total
|
5
|
+
include ::AttributeHelper
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# Valor ICMS
|
16
|
-
@icms = attrs[:ICMSTot][:vICMS]
|
17
|
-
# Base ICMS ST
|
18
|
-
@st_base = attrs[:ICMSTot][:vBCST]
|
19
|
-
# Valor ICMS ST
|
20
|
-
@st = attrs[:ICMSTot][:vST]
|
21
|
-
# Total de Produtos
|
22
|
-
@product = attrs[:ICMSTot][:vProd]
|
23
|
-
# Total de Frete
|
24
|
-
@freight = attrs[:ICMSTot][:vFrete]
|
25
|
-
# Total de Seguro
|
26
|
-
@insurance = attrs[:ICMSTot][:vSeg]
|
27
|
-
# Total de Desconto
|
28
|
-
@descount = attrs[:ICMSTot][:vDesc]
|
29
|
-
# Total de Imposto de Importacao
|
30
|
-
@ii = attrs[:ICMSTot][:vII]
|
31
|
-
# Total de IPI
|
32
|
-
@ipi = attrs[:ICMSTot][:vIPI]
|
33
|
-
# Total de PIS
|
34
|
-
@pis = attrs[:ICMSTot][:vPIS]
|
35
|
-
# Total de COFINS
|
36
|
-
@cofins = attrs[:ICMSTot][:vCOFINS]
|
37
|
-
# Total de Outros
|
38
|
-
@another = attrs[:ICMSTot][:vOutro]
|
39
|
-
# Total NFe
|
40
|
-
@total = attrs[:ICMSTot][:vNF]
|
41
|
-
end
|
7
|
+
attr_reader :icms_base, :icms, :st_base, :st, :product, :freight,
|
8
|
+
:insurance, :descount, :ii, :ipi, :pis, :cofins, :another, :total,
|
9
|
+
:service_value, :service_base, :service_iss, :service_pis, :service_cofins,
|
10
|
+
:retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
|
11
|
+
:retention_irrf, :retention_foresight_base, :retention_foresight
|
42
12
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
13
|
+
def initialize(attrs = {})
|
14
|
+
# Impostos
|
15
|
+
if attrs[:ICMSTot]
|
16
|
+
# Base ICMS
|
17
|
+
@icms_base = attrs[:ICMSTot][:vBC]
|
18
|
+
# Valor ICMS
|
19
|
+
@icms = attrs[:ICMSTot][:vICMS]
|
20
|
+
# Base ICMS ST
|
21
|
+
@st_base = attrs[:ICMSTot][:vBCST]
|
22
|
+
# Valor ICMS ST
|
23
|
+
@st = attrs[:ICMSTot][:vST]
|
24
|
+
# Total de Produtos
|
25
|
+
@product = attrs[:ICMSTot][:vProd]
|
26
|
+
# Total de Frete
|
27
|
+
@freight = attrs[:ICMSTot][:vFrete]
|
28
|
+
# Total de Seguro
|
29
|
+
@insurance = attrs[:ICMSTot][:vSeg]
|
30
|
+
# Total de Desconto
|
31
|
+
@descount = attrs[:ICMSTot][:vDesc]
|
32
|
+
# Total de Imposto de Importacao
|
33
|
+
@ii = attrs[:ICMSTot][:vII]
|
34
|
+
# Total de IPI
|
35
|
+
@ipi = attrs[:ICMSTot][:vIPI]
|
36
|
+
# Total de PIS
|
37
|
+
@pis = attrs[:ICMSTot][:vPIS]
|
38
|
+
# Total de COFINS
|
39
|
+
@cofins = attrs[:ICMSTot][:vCOFINS]
|
40
|
+
# Total de Outros
|
41
|
+
@another = attrs[:ICMSTot][:vOutro]
|
42
|
+
# Total NFe
|
43
|
+
@total = attrs[:ICMSTot][:vNF]
|
44
|
+
end
|
45
|
+
|
46
|
+
# Servicos
|
47
|
+
if attrs[:ISSQNtot]
|
48
|
+
# Valor do Servico
|
49
|
+
@service_value = attrs[:ISSQNtot][:vServ]
|
50
|
+
# Base de calculo do Servico
|
51
|
+
@service_base = attrs[:ISSQNtot][:vBC]
|
52
|
+
# ISS do Servico
|
53
|
+
@service_iss = attrs[:ISSQNtot][:vISS]
|
54
|
+
# Pis do Servico
|
55
|
+
@service_pis = attrs[:ISSQNtot][:vPIS]
|
56
|
+
# Cofins do Servico
|
57
|
+
@service_cofins = attrs[:ISSQNtot][:vCOFINS]
|
58
|
+
end
|
56
59
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
60
|
+
# Retencoes
|
61
|
+
if attrs[:retTrib]
|
62
|
+
# Retencao de PIS
|
63
|
+
@retention_pis = attrs[:retTrib][:vRetPIS]
|
64
|
+
# Retencao de COFINS
|
65
|
+
@retention_cofins = attrs[:retTrib][:vRetCOFINS]
|
66
|
+
# Retencao de CSLL
|
67
|
+
@retention_csll = attrs[:retTrib][:vRetCSLL]
|
68
|
+
# Base de Retencao do IRRF
|
69
|
+
@retention_irrf_base = attrs[:retTrib][:vBCIRRF]
|
70
|
+
# Valor de Retencao do IRRF
|
71
|
+
@retention_irrf = attrs[:retTrib][:vIRRF]
|
72
|
+
# Base de Retencao da Previdencia
|
73
|
+
@retention_foresight_base = attrs[:retTrib][:vBCRetPrev]
|
74
|
+
# Valor de Retencao da Previdencia
|
75
|
+
@retention_foresight = attrs[:retTrib][:vRetPrev]
|
76
|
+
end
|
73
77
|
end
|
74
78
|
end
|
75
79
|
end
|
data/lib/nfe_reader/transport.rb
CHANGED
@@ -1,97 +1,101 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
module Nfe
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
:hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
|
7
|
-
:volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
|
3
|
+
module Reader
|
4
|
+
class Transport
|
5
|
+
include ::AttributeHelper
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
# 2- Por conta de terceiros;
|
14
|
-
# 9- Sem frete.
|
15
|
-
#
|
16
|
-
def initialize(attrs = {})
|
17
|
-
# Modalidade
|
18
|
-
@kind = attrs[:modFrete]
|
19
|
-
|
20
|
-
# == Grupo de Retenção do ICMS do transporte
|
21
|
-
if attrs[:retTransp]
|
22
|
-
# Valor do Servico
|
23
|
-
@service_value = attrs[:retTransp][:vServ]
|
24
|
-
# BC da Retenção do ICMS
|
25
|
-
@base = attrs[:retTransp][:vBCRet]
|
26
|
-
# Alíquota da Retenção
|
27
|
-
@icms_aliquot = attrs[:retTransp][:pICMSRet]
|
28
|
-
# Valor do ICMS Retido
|
29
|
-
@icms_value = attrs[:retTransp][:vICMSRet]
|
30
|
-
# CFOP
|
31
|
-
@cfop = attrs[:retTransp][:CFOP]
|
32
|
-
# Municipio gerador de ICMS
|
33
|
-
@city = attrs[:retTransp][:cMunFG]
|
34
|
-
end
|
7
|
+
attr_reader :kind, :service_value, :base, :icms_aliquot, :icms_value,
|
8
|
+
:cfop, :city, :vehicle_plaque, :vehicle_state, :vehicle_rntc, :hauling_palque,
|
9
|
+
:hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
|
10
|
+
:volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
|
35
11
|
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
12
|
+
# Fields Values:
|
13
|
+
#
|
14
|
+
# modFrete: 0- Por conta do emitente;
|
15
|
+
# 1- Por conta do destinatário/remetente;
|
16
|
+
# 2- Por conta de terceiros;
|
17
|
+
# 9- Sem frete.
|
18
|
+
#
|
19
|
+
def initialize(attrs = {})
|
20
|
+
# Modalidade
|
21
|
+
@kind = attrs[:modFrete]
|
22
|
+
|
23
|
+
# == Grupo de Retenção do ICMS do transporte
|
24
|
+
if attrs[:retTransp]
|
25
|
+
# Valor do Servico
|
26
|
+
@service_value = attrs[:retTransp][:vServ]
|
27
|
+
# BC da Retenção do ICMS
|
28
|
+
@base = attrs[:retTransp][:vBCRet]
|
29
|
+
# Alíquota da Retenção
|
30
|
+
@icms_aliquot = attrs[:retTransp][:pICMSRet]
|
31
|
+
# Valor do ICMS Retido
|
32
|
+
@icms_value = attrs[:retTransp][:vICMSRet]
|
33
|
+
# CFOP
|
34
|
+
@cfop = attrs[:retTransp][:CFOP]
|
35
|
+
# Municipio gerador de ICMS
|
36
|
+
@city = attrs[:retTransp][:cMunFG]
|
37
|
+
end
|
45
38
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
39
|
+
# == Veiculo
|
40
|
+
if attrs[:veicTransp]
|
41
|
+
# Placa
|
42
|
+
@vehicle_plaque = attrs[:veicTransp][:placa]
|
43
|
+
# Estado
|
44
|
+
@vehicle_state = attrs[:veicTransp][:UF]
|
45
|
+
# Registro Nacional de Transportador de Carga
|
46
|
+
@vehicle_rntc = attrs[:veicTransp][:RNTC]
|
47
|
+
end
|
55
48
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
# Espécie dos volumes
|
66
|
-
@volume_kind = attrs[:vol][:esp]
|
67
|
-
# Marca dos volumes
|
68
|
-
@volume_brand = attrs[:vol][:marca]
|
69
|
-
# Numeração dos volumes
|
70
|
-
@volume_number = attrs[:vol][:nVol]
|
71
|
-
# Peso Liquido
|
72
|
-
@weight_net = attrs[:vol][:pesoL]
|
73
|
-
# Peso Bruto
|
74
|
-
@weight_gross = attrs[:vol][:pesoB]
|
75
|
-
# Lacres
|
76
|
-
@seals = set_seals(attrs[:vol][:lacres])
|
77
|
-
end
|
49
|
+
# == Reboque
|
50
|
+
if attrs[:reboque]
|
51
|
+
# Placa
|
52
|
+
@hauling_palque = attrs[:reboque][:placa]
|
53
|
+
# Estado
|
54
|
+
@hauling_state = attrs[:reboque][:UF]
|
55
|
+
# Registro Nacional de Transportador de Carga
|
56
|
+
@hauling_rntc = attrs[:reboque][:RNTC]
|
57
|
+
end
|
78
58
|
|
79
|
-
|
80
|
-
|
81
|
-
|
59
|
+
# Vagao
|
60
|
+
@wagon = attrs[:vagao]
|
61
|
+
# Balsa
|
62
|
+
@ferry = attrs[:balsa]
|
63
|
+
|
64
|
+
# == Volume
|
65
|
+
if attrs[:vol]
|
66
|
+
# Quantidade de volumes
|
67
|
+
@volume_amount = attrs[:vol][:qVol]
|
68
|
+
# Espécie dos volumes
|
69
|
+
@volume_kind = attrs[:vol][:esp]
|
70
|
+
# Marca dos volumes
|
71
|
+
@volume_brand = attrs[:vol][:marca]
|
72
|
+
# Numeração dos volumes
|
73
|
+
@volume_number = attrs[:vol][:nVol]
|
74
|
+
# Peso Liquido
|
75
|
+
@weight_net = attrs[:vol][:pesoL]
|
76
|
+
# Peso Bruto
|
77
|
+
@weight_gross = attrs[:vol][:pesoB]
|
78
|
+
# Lacres
|
79
|
+
@seals = set_seals(attrs[:vol][:lacres])
|
80
|
+
end
|
81
|
+
|
82
|
+
# Transportadora
|
83
|
+
if attrs[:transporta]
|
84
|
+
@carrier = Carrier.new(attrs[:transporta])
|
85
|
+
end
|
82
86
|
end
|
83
|
-
end
|
84
87
|
|
85
|
-
|
86
|
-
|
88
|
+
def set_seals(attrs = {})
|
89
|
+
return unless attrs
|
87
90
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
91
|
+
if attrs.is_a? Array
|
92
|
+
seals = attrs.map { |l| l[:nLacre] }.join(', ')
|
93
|
+
else
|
94
|
+
seals = attrs[:nLacre]
|
95
|
+
end
|
93
96
|
|
94
|
-
|
97
|
+
seals
|
98
|
+
end
|
95
99
|
end
|
96
100
|
end
|
97
101
|
end
|
data/lib/nfe_reader/version.rb
CHANGED
data/lib/nfe_reader.rb
CHANGED
@@ -1,137 +1,10 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require "nfe_reader/version"
|
3
3
|
require "nokogiri"
|
4
|
-
require "nokogiri_hash"
|
4
|
+
require "helpers/nokogiri_hash"
|
5
|
+
require "helpers/attribute_helper"
|
6
|
+
require "helpers/creator_helper"
|
5
7
|
|
6
8
|
%w(nfe_reader/product nfe_reader/collection nfe_reader/taxation nfe_reader).each do |namespace|
|
7
9
|
Dir[File.dirname(__FILE__) + "/../lib/#{namespace}/*.rb"].each { |file| require file }
|
8
|
-
end
|
9
|
-
|
10
|
-
module Nfe
|
11
|
-
module Reader
|
12
|
-
class Base
|
13
|
-
attr_reader :version, :number, :signature, :client, :information,
|
14
|
-
:header, :provider, :customer, :products, :collection, :transport,
|
15
|
-
:purchase, :cane, :export, :delivery, :removal,:enviroment,
|
16
|
-
:version_app, :key, :date, :protocol, :digest, :status, :description,
|
17
|
-
:total, :authorizations, :error, :trace
|
18
|
-
|
19
|
-
def initialize(file)
|
20
|
-
|
21
|
-
xml = file.is_a?(Nokogiri::XML::Document) ? file : Nokogiri::XML(file)
|
22
|
-
xml = xml.to_hash
|
23
|
-
|
24
|
-
# Versao da NFe
|
25
|
-
@version = xml[:nfeProc][:versao]
|
26
|
-
# Assinatura
|
27
|
-
@signature = xml[:nfeProc][:NFe][:Signature]
|
28
|
-
|
29
|
-
# Protocolo
|
30
|
-
if xml[:nfeProc][:protNFe]
|
31
|
-
protocol = xml[:nfeProc][:protNFe][:infProt]
|
32
|
-
|
33
|
-
@enviroment = protocol[:tpAmb]
|
34
|
-
@version_app = protocol[:verAplic]
|
35
|
-
@key = protocol[:chNFe]
|
36
|
-
@date = protocol[:dhRecbto]
|
37
|
-
@protocol = protocol[:nProt]
|
38
|
-
@digest = protocol[:digVal]
|
39
|
-
@status = protocol[:cStat]
|
40
|
-
@description = protocol[:xMotivo]
|
41
|
-
end
|
42
|
-
|
43
|
-
xml = xml[:nfeProc][:NFe][:infNFe]
|
44
|
-
|
45
|
-
# Numero da Nfe
|
46
|
-
@number = xml[:Id]
|
47
|
-
|
48
|
-
# Identificação da Nota Fiscal eletrônica
|
49
|
-
@header = Nfe::Header.new(xml[:ide])
|
50
|
-
|
51
|
-
# Identificação do Emitente da Nota Fiscal eletrônica
|
52
|
-
@provider = Nfe::Provider.new(xml[:emit])
|
53
|
-
|
54
|
-
# Identificação do Fisco Emitente da NF-e
|
55
|
-
if xml[:avulsa]
|
56
|
-
@fiscal = Nfe::Fiscal.new(xml[:avulsa])
|
57
|
-
end
|
58
|
-
|
59
|
-
# Identificação do Destinatário da Nota Fiscal eletrônica
|
60
|
-
@customer = Nfe::Customer.new(xml[:dest])
|
61
|
-
|
62
|
-
# Informacoes Adicional
|
63
|
-
if xml[:infAdic]
|
64
|
-
@information = Nfe::Information.new(xml[:infAdic])
|
65
|
-
end
|
66
|
-
|
67
|
-
# Detalhamento de Produtos e Serviços da NF-e
|
68
|
-
@products = []
|
69
|
-
if xml[:det].is_a? Array
|
70
|
-
xml[:det].each do |product|
|
71
|
-
@products << Nfe::Product.new(product)
|
72
|
-
end
|
73
|
-
else
|
74
|
-
@products << Nfe::Product.new(xml[:det])
|
75
|
-
end
|
76
|
-
|
77
|
-
# Totalizadores
|
78
|
-
@total = Nfe::Total.new(xml[:total])
|
79
|
-
|
80
|
-
# Informacao de Pagamento
|
81
|
-
if xml[:cobr]
|
82
|
-
@collection = Nfe::Collection.new(xml[:cobr])
|
83
|
-
end
|
84
|
-
|
85
|
-
# Transporte
|
86
|
-
if xml[:transp]
|
87
|
-
@transport = Nfe::Transport.new(xml[:transp])
|
88
|
-
end
|
89
|
-
|
90
|
-
# Identificação do Local de Entrega
|
91
|
-
if xml[:retirada]
|
92
|
-
@removal = Nfe::Removal.new(xml[:retirada])
|
93
|
-
end
|
94
|
-
|
95
|
-
# Identificação do Local de Retirada
|
96
|
-
if xml[:entrega]
|
97
|
-
@delivery = Nfe::Delivery.new(xml[:entrega])
|
98
|
-
end
|
99
|
-
|
100
|
-
# Autorização para obter XML
|
101
|
-
@authorizations = []
|
102
|
-
if xml[:autXML].is_a? Array
|
103
|
-
xml[:autXML].each do |product|
|
104
|
-
@authorizations << Nfe::Authorization.new(product)
|
105
|
-
end
|
106
|
-
elsif xml[:autXML].is_a? Hash
|
107
|
-
@authorizations << Nfe::Authorization.new(xml[:autXML])
|
108
|
-
end
|
109
|
-
|
110
|
-
# Informacoes de Comercio Exterior
|
111
|
-
if xml[:exporta]
|
112
|
-
@export = Nfe::Export.new(xml[:exporta])
|
113
|
-
end
|
114
|
-
|
115
|
-
# Informacoes de Compra
|
116
|
-
if xml[:compra]
|
117
|
-
@purchase = Nfe::Purchase.new(xml[:compra])
|
118
|
-
end
|
119
|
-
|
120
|
-
# Cana de Acucar
|
121
|
-
if xml[:cana]
|
122
|
-
@cane = Nfe::Cane.new(xml[:cana])
|
123
|
-
end
|
124
|
-
|
125
|
-
rescue => exception
|
126
|
-
@error = exception
|
127
|
-
@trace = exception.backtrace
|
128
|
-
ensure
|
129
|
-
file.close if file.respond_to? :close
|
130
|
-
end
|
131
|
-
|
132
|
-
def error?
|
133
|
-
!error.nil?
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
10
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe AttributeHelper do
|
4
|
+
class AttributeTest
|
5
|
+
include AttributeHelper
|
6
|
+
attr_accessor :first_name, :last_name
|
7
|
+
|
8
|
+
def initialize( attrs= {})
|
9
|
+
@first_name = attrs[:first_name]
|
10
|
+
@last_name = attrs[:last_name]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:attribute_test) { AttributeTest.new(first_name: 'Foo', last_name: 'Bar') }
|
15
|
+
|
16
|
+
it '#attributes'do
|
17
|
+
assert_equal attribute_test.attributes, Hash['first_name' => 'Foo', 'last_name' => 'Bar']
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
|
+
|
3
|
+
describe CreatorHelper do
|
4
|
+
class CreatorTest < Struct.new(:name)
|
5
|
+
include CreatorHelper
|
6
|
+
end
|
7
|
+
|
8
|
+
class ResourceTest < Struct.new(:name)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:creator_test) { CreatorTest.new('Foo') }
|
12
|
+
|
13
|
+
describe '#to_array'do
|
14
|
+
it { assert_equal creator_test.to_array([{name: 'Foo'}, {name: 'Bar'}]), [['Foo'], ['Bar']] }
|
15
|
+
it { assert_equal creator_test.to_array({name: 'Foo'}), [['Foo']] }
|
16
|
+
end
|
17
|
+
|
18
|
+
it '#create_resource'do
|
19
|
+
creator_test.create_resource(ResourceTest, 'Foo').must_be_instance_of ResourceTest
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#create_resource'do
|
23
|
+
let(:resources) { creator_test.create_resources(ResourceTest, [['Name', 'Foo'], ['Name', 'Bar']]) }
|
24
|
+
|
25
|
+
it { resources.must_be_instance_of Array }
|
26
|
+
it { resources.first.must_be_instance_of ResourceTest }
|
27
|
+
end
|
28
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe Nfe::Authorization do
|
3
|
+
describe Nfe::Reader::Authorization do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
autXML: {
|
@@ -10,7 +10,7 @@ describe Nfe::Authorization do
|
|
10
10
|
}
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:authorization) { Nfe::Authorization.new(nfe_hash[:autXML]) }
|
13
|
+
let(:authorization) { Nfe::Reader::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 Nfe::Cane do
|
3
|
+
describe Nfe::Reader::Cane do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
cana: {
|
@@ -27,7 +27,7 @@ describe Nfe::Cane do
|
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
30
|
-
let(:cane) { Nfe::Cane.new(nfe_hash[:cana]) }
|
30
|
+
let(:cane) { Nfe::Reader::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 Nfe::Carrier do
|
3
|
+
describe Nfe::Reader::Carrier do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
transp: {
|
@@ -14,7 +14,7 @@ describe Nfe::Carrier do
|
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
|
-
let(:carrier) { Nfe::Carrier.new(nfe_hash[:transp]) }
|
17
|
+
let(:carrier) { Nfe::Reader::Carrier.new(nfe_hash[:transp]) }
|
18
18
|
|
19
19
|
it '#cnpj' do
|
20
20
|
carrier.cnpj.must_equal '99819146000120'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe Nfe::Duplicate do
|
3
|
+
describe Nfe::Reader::Duplicate do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
duplicate: {
|
@@ -11,7 +11,7 @@ describe Nfe::Duplicate do
|
|
11
11
|
}
|
12
12
|
end
|
13
13
|
|
14
|
-
let(:duplicate) { Nfe::Duplicate.new(nfe_hash[:duplicate]) }
|
14
|
+
let(:duplicate) { Nfe::Reader::Duplicate.new(nfe_hash[:duplicate]) }
|
15
15
|
|
16
16
|
it '#number' do
|
17
17
|
duplicate.number.must_equal '1'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe Nfe::Collection do
|
3
|
+
describe Nfe::Reader::Collection do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
collection: {
|
@@ -44,7 +44,7 @@ describe Nfe::Collection do
|
|
44
44
|
}
|
45
45
|
end
|
46
46
|
|
47
|
-
let(:collection) { Nfe::Collection.new(nfe_hash[:collection]) }
|
47
|
+
let(:collection) { Nfe::Reader::Collection.new(nfe_hash[:collection]) }
|
48
48
|
|
49
49
|
describe 'One duplicate' do
|
50
50
|
it '#number' do
|
@@ -69,7 +69,7 @@ describe Nfe::Collection do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
describe 'Two duplicate' do
|
72
|
-
let(:collection) { Nfe::Collection.new(collection_hash[:collection]) }
|
72
|
+
let(:collection) { Nfe::Reader::Collection.new(collection_hash[:collection]) }
|
73
73
|
|
74
74
|
it '#duplicates' do
|
75
75
|
collection.duplicates.size.must_equal 2
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe Nfe::Customer do
|
3
|
+
describe Nfe::Reader::Customer do
|
4
4
|
def customer_hash
|
5
5
|
{
|
6
6
|
dest: {
|
@@ -27,7 +27,7 @@ describe Nfe::Customer do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe 'with address' do
|
30
|
-
let(:customer) { Nfe::Customer.new(customer_hash[:dest]) }
|
30
|
+
let(:customer) { Nfe::Reader::Customer.new(customer_hash[:dest]) }
|
31
31
|
|
32
32
|
it '#foreign_code' do
|
33
33
|
customer.foreign_code.must_equal '10021312198423'
|
@@ -94,7 +94,7 @@ describe Nfe::Customer do
|
|
94
94
|
end
|
95
95
|
|
96
96
|
describe 'without address' do
|
97
|
-
let(:customer) { Nfe::Customer.new }
|
97
|
+
let(:customer) { Nfe::Reader::Customer.new }
|
98
98
|
it '#phone' do
|
99
99
|
customer.number.must_be_nil
|
100
100
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
|
-
describe Nfe::Delivery do
|
3
|
+
describe Nfe::Reader::Delivery do
|
4
4
|
def nfe_hash
|
5
5
|
{
|
6
6
|
entrega: {
|
@@ -17,7 +17,7 @@ describe Nfe::Delivery do
|
|
17
17
|
}
|
18
18
|
end
|
19
19
|
|
20
|
-
let(:delivery) { Nfe::Delivery.new(nfe_hash[:entrega]) }
|
20
|
+
let(:delivery) { Nfe::Reader::Delivery.new(nfe_hash[:entrega]) }
|
21
21
|
|
22
22
|
it '#cnpj' do
|
23
23
|
delivery.cnpj.must_equal '99819146000120'
|