ruby_xml_nfe 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +12 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +77 -0
- data/Guardfile +70 -0
- data/LICENSE.txt +21 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/ruby_xml_nfe.rb +6 -0
- data/lib/ruby_xml_nfe/aut_xml.rb +16 -0
- data/lib/ruby_xml_nfe/cobr.rb +26 -0
- data/lib/ruby_xml_nfe/cofins.rb +28 -0
- data/lib/ruby_xml_nfe/cofins_aliq.rb +22 -0
- data/lib/ruby_xml_nfe/cofins_outr.rb +22 -0
- data/lib/ruby_xml_nfe/dat_pag.rb +20 -0
- data/lib/ruby_xml_nfe/dest.rb +32 -0
- data/lib/ruby_xml_nfe/dup.rb +20 -0
- data/lib/ruby_xml_nfe/emit.rb +36 -0
- data/lib/ruby_xml_nfe/ender_dest.rb +39 -0
- data/lib/ruby_xml_nfe/ender_emit.rb +38 -0
- data/lib/ruby_xml_nfe/fat.rb +22 -0
- data/lib/ruby_xml_nfe/icms.rb +19 -0
- data/lib/ruby_xml_nfe/icms00.rb +30 -0
- data/lib/ruby_xml_nfe/icms_tot.rb +59 -0
- data/lib/ruby_xml_nfe/ide.rb +57 -0
- data/lib/ruby_xml_nfe/ii.rb +22 -0
- data/lib/ruby_xml_nfe/imposto.rb +47 -0
- data/lib/ruby_xml_nfe/inf_adic.rb +18 -0
- data/lib/ruby_xml_nfe/ipi.rb +20 -0
- data/lib/ruby_xml_nfe/ipi_int.rb +16 -0
- data/lib/ruby_xml_nfe/items.rb +27 -0
- data/lib/ruby_xml_nfe/pag.rb +19 -0
- data/lib/ruby_xml_nfe/pis.rb +28 -0
- data/lib/ruby_xml_nfe/pis_aliq.rb +22 -0
- data/lib/ruby_xml_nfe/pis_outr.rb +22 -0
- data/lib/ruby_xml_nfe/prod.rb +52 -0
- data/lib/ruby_xml_nfe/total.rb +19 -0
- data/lib/ruby_xml_nfe/transp.rb +21 -0
- data/lib/ruby_xml_nfe/version.rb +3 -0
- data/lib/ruby_xml_nfe/vol.rb +21 -0
- data/lib/ruby_xml_nfe/xml.rb +78 -0
- data/ruby_xml_nfe.gemspec +45 -0
- metadata +178 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class Ii
|
3
|
+
attr_reader :xml, :vBC, :vDespAdu, :vII, :vIOF
|
4
|
+
|
5
|
+
def initialize(xml, params)
|
6
|
+
@xml = xml
|
7
|
+
@vBC = params[:vBC]
|
8
|
+
@vDespAdu = params[:vDespAdu]
|
9
|
+
@vII = params[:vII]
|
10
|
+
@vIOF = params[:vIOF]
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
xml.II do
|
15
|
+
xml.vBC vBC
|
16
|
+
xml.vDespAdu vDespAdu
|
17
|
+
xml.vII vII
|
18
|
+
xml.vIOF vIOF
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'ruby_xml_nfe/icms'
|
2
|
+
require 'ruby_xml_nfe/ipi'
|
3
|
+
require 'ruby_xml_nfe/ii'
|
4
|
+
require 'ruby_xml_nfe/pis'
|
5
|
+
require 'ruby_xml_nfe/cofins'
|
6
|
+
|
7
|
+
module RubyXmlNfe
|
8
|
+
class Imposto
|
9
|
+
attr_reader :xml, :icms_params, :ipi_params, :ii_params, :pis_params, :cofins_params
|
10
|
+
|
11
|
+
def initialize(xml, params)
|
12
|
+
@xml = xml
|
13
|
+
@icms_params = params[:ICMS]
|
14
|
+
@ipi_params = params[:IPI]
|
15
|
+
@ii_params = params[:II]
|
16
|
+
@pis_params = params[:PIS]
|
17
|
+
@cofins_params = params[:COFINS]
|
18
|
+
end
|
19
|
+
|
20
|
+
def build
|
21
|
+
xml.imposto do
|
22
|
+
icms = RubyXmlNfe::Icms.new(xml, icms_params)
|
23
|
+
icms.build
|
24
|
+
|
25
|
+
if ipi_params
|
26
|
+
ipi = RubyXmlNfe::Ipi.new(xml, ipi_params)
|
27
|
+
ipi.build
|
28
|
+
end
|
29
|
+
|
30
|
+
if ii_params
|
31
|
+
ii = RubyXmlNfe::Ii.new(xml, ii_params)
|
32
|
+
ii.build
|
33
|
+
end
|
34
|
+
|
35
|
+
if pis_params
|
36
|
+
pis = RubyXmlNfe::Pis.new(xml, pis_params)
|
37
|
+
pis.build
|
38
|
+
end
|
39
|
+
|
40
|
+
if cofins_params
|
41
|
+
cofins = RubyXmlNfe::Cofins.new(xml, cofins_params)
|
42
|
+
cofins.build
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class InfAdic
|
3
|
+
attr_reader :xml, :infAdFisco, :infCpl
|
4
|
+
|
5
|
+
def initialize(xml, params)
|
6
|
+
@xml = xml
|
7
|
+
@infAdFisco = params[:infAdFisco]
|
8
|
+
@infCpl = params[:infCpl]
|
9
|
+
end
|
10
|
+
|
11
|
+
def build
|
12
|
+
xml.infAdic do
|
13
|
+
xml.infAdFisco infAdFisco
|
14
|
+
xml.infCpl infCpl
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'ruby_xml_nfe/ipi_int'
|
2
|
+
|
3
|
+
module RubyXmlNfe
|
4
|
+
class Ipi
|
5
|
+
attr_reader :xml, :cEnq, :ipi_int_params
|
6
|
+
def initialize(xml, params)
|
7
|
+
@xml = xml
|
8
|
+
@cEnq = params[:cEnq]
|
9
|
+
@ipi_int_params = params[:IPINT]
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
xml.IPI do
|
14
|
+
xml.cEnq cEnq
|
15
|
+
ipi_int = RubyXmlNfe::IpiInt.new(xml, ipi_int_params)
|
16
|
+
ipi_int.build
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'ruby_xml_nfe/prod'
|
2
|
+
require 'ruby_xml_nfe/imposto'
|
3
|
+
|
4
|
+
module RubyXmlNfe
|
5
|
+
class Items
|
6
|
+
attr_reader :xml, :items, :infAdProd
|
7
|
+
|
8
|
+
def initialize(xml, items)
|
9
|
+
@xml = xml
|
10
|
+
@items = items
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
items.map.with_index do |item, index|
|
15
|
+
xml.det(nItem: index + 1) do
|
16
|
+
prod = RubyXmlNfe::Prod.new(xml, item[:prod])
|
17
|
+
prod.build
|
18
|
+
|
19
|
+
imposto = RubyXmlNfe::Imposto.new(xml, item[:imposto])
|
20
|
+
imposto.build
|
21
|
+
|
22
|
+
xml.infAdProd item[:infAdProd] if item[:infAdProd]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ruby_xml_nfe/dat_pag'
|
2
|
+
|
3
|
+
module RubyXmlNfe
|
4
|
+
class Pag
|
5
|
+
attr_reader :xml, :dat_pag_params
|
6
|
+
|
7
|
+
def initialize(xml, params)
|
8
|
+
@xml = xml
|
9
|
+
@dat_pag_params = params[:detPag]
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
xml.pag do
|
14
|
+
det_pag = RubyXmlNfe::DatPag.new(xml, dat_pag_params)
|
15
|
+
det_pag.build
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'ruby_xml_nfe/pis_aliq'
|
2
|
+
require 'ruby_xml_nfe/pis_outr'
|
3
|
+
|
4
|
+
module RubyXmlNfe
|
5
|
+
class Pis
|
6
|
+
attr_reader :xml, :pis_aliq_params, :pis_outr_params
|
7
|
+
|
8
|
+
def initialize(xml, params)
|
9
|
+
@xml = xml
|
10
|
+
@pis_aliq_params = params[:PISAliq]
|
11
|
+
@pis_outr_params = params[:PISOutr]
|
12
|
+
end
|
13
|
+
|
14
|
+
def build
|
15
|
+
xml.PIS do
|
16
|
+
if pis_aliq_params
|
17
|
+
pis_aliq = RubyXmlNfe::PisAliq.new(xml, pis_aliq_params)
|
18
|
+
pis_aliq.build
|
19
|
+
end
|
20
|
+
|
21
|
+
if pis_outr_params
|
22
|
+
pis_outr = RubyXmlNfe::PisOutr.new(xml, pis_outr_params)
|
23
|
+
pis_outr.build
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class PisAliq
|
3
|
+
attr_reader :xml, :cst, :vBC, :pPIS, :vPIS
|
4
|
+
|
5
|
+
def initialize(xml, params)
|
6
|
+
@xml = xml
|
7
|
+
@cst = params[:CST]
|
8
|
+
@vBC = params[:vBC]
|
9
|
+
@pPIS = params[:pPIS]
|
10
|
+
@vPIS = params[:vPIS]
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
xml.PISAliq do
|
15
|
+
xml.CST cst
|
16
|
+
xml.vBC vBC
|
17
|
+
xml.pPIS pPIS
|
18
|
+
xml.vPIS vPIS
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class PisOutr
|
3
|
+
attr_reader :xml, :cst, :vBC, :pPIS, :vPIS
|
4
|
+
|
5
|
+
def initialize(xml, params)
|
6
|
+
@xml = xml
|
7
|
+
@cst = params[:CST]
|
8
|
+
@vBC = params[:vBC]
|
9
|
+
@pPIS = params[:pPIS]
|
10
|
+
@vPIS = params[:vPIS]
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
xml.PISOutr do
|
15
|
+
xml.CST cst
|
16
|
+
xml.vBC vBC
|
17
|
+
xml.pPIS pPIS
|
18
|
+
xml.vPIS vPIS
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class Prod
|
3
|
+
attr_reader :xml, :cProd, :cEAN, :xProd, :ncm, :cest, :cfop, :uCom, :qCom, :vUnCom,
|
4
|
+
:vProd, :cEANTrib, :uTrib, :qTrib, :vUnTrib, :indTot, :xPed, :nItemPed, :nFCI
|
5
|
+
|
6
|
+
def initialize(xml, params)
|
7
|
+
@xml = xml
|
8
|
+
|
9
|
+
@cProd = params[:cProd]
|
10
|
+
@cEAN = params[:cEAN]
|
11
|
+
@xProd = params[:xProd]
|
12
|
+
@ncm = params[:NCM]
|
13
|
+
@cest = params[:CEST]
|
14
|
+
@cfop = params[:CFOP]
|
15
|
+
@uCom = params[:uCom]
|
16
|
+
@qCom = params[:qCom]
|
17
|
+
@vUnCom = params[:vUnCom]
|
18
|
+
@vProd = params[:vProd]
|
19
|
+
@cEANTrib = params[:cEANTrib]
|
20
|
+
@uTrib = params[:uTrib]
|
21
|
+
@qTrib = params[:qTrib]
|
22
|
+
@vUnTrib = params[:vUnTrib]
|
23
|
+
@indTot = params[:indTot]
|
24
|
+
@xPed = params[:xPed]
|
25
|
+
@nItemPed = params[:nItemPed]
|
26
|
+
@nFCI = params[:nFCI]
|
27
|
+
end
|
28
|
+
|
29
|
+
def build
|
30
|
+
xml.prod do
|
31
|
+
xml.cProd cProd
|
32
|
+
xml.cEAN cEAN
|
33
|
+
xml.xProd xProd
|
34
|
+
xml.NCM ncm
|
35
|
+
xml.CEST cest if cest
|
36
|
+
xml.CFOP cfop
|
37
|
+
xml.uCom uCom
|
38
|
+
xml.qCom qCom
|
39
|
+
xml.vUnCom vUnCom
|
40
|
+
xml.vProd vProd
|
41
|
+
xml.cEANTrib cEANTrib
|
42
|
+
xml.uTrib uTrib
|
43
|
+
xml.qTrib qTrib
|
44
|
+
xml.vUnTrib vUnTrib
|
45
|
+
xml.indTot indTot
|
46
|
+
xml.xPed xPed if xPed
|
47
|
+
xml.nItemPed nItemPed if nItemPed
|
48
|
+
xml.nFCI nFCI if nFCI
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ruby_xml_nfe/icms_tot'
|
2
|
+
|
3
|
+
module RubyXmlNfe
|
4
|
+
class Total
|
5
|
+
attr_reader :xml, :icms_tot_params
|
6
|
+
|
7
|
+
def initialize(xml, params)
|
8
|
+
@xml = xml
|
9
|
+
@icms_tot_params = params[:ICMSTot]
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
xml.total do
|
14
|
+
ipi_int = RubyXmlNfe::IcmsTot.new(xml, icms_tot_params)
|
15
|
+
ipi_int.build
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'ruby_xml_nfe/vol'
|
2
|
+
|
3
|
+
module RubyXmlNfe
|
4
|
+
class Transp
|
5
|
+
attr_reader :xml, :modFrete, :vol_params
|
6
|
+
|
7
|
+
def initialize(xml, params)
|
8
|
+
@xml = xml
|
9
|
+
@modFrete = params[:modFrete]
|
10
|
+
@vol_params = params[:vol]
|
11
|
+
end
|
12
|
+
|
13
|
+
def build
|
14
|
+
xml.transp do
|
15
|
+
xml.modFrete modFrete
|
16
|
+
ipi_int = RubyXmlNfe::Vol.new(xml, vol_params)
|
17
|
+
ipi_int.build
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubyXmlNfe
|
2
|
+
class Vol
|
3
|
+
attr_reader :xml, :qVol, :esp, :pesoL, :pesoB
|
4
|
+
def initialize(xml, params)
|
5
|
+
@xml = xml
|
6
|
+
@qVol = params[:qVol]
|
7
|
+
@esp = params[:esp]
|
8
|
+
@pesoL = params[:pesoL]
|
9
|
+
@pesoB = params[:pesoB]
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
xml.vol do
|
14
|
+
xml.qVol qVol if qVol
|
15
|
+
xml.esp esp if esp
|
16
|
+
xml.pesoL pesoL
|
17
|
+
xml.pesoB pesoB
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'ruby_xml_nfe/ide'
|
3
|
+
require 'ruby_xml_nfe/emit'
|
4
|
+
require 'ruby_xml_nfe/dest'
|
5
|
+
require 'ruby_xml_nfe/aut_xml'
|
6
|
+
require 'ruby_xml_nfe/items'
|
7
|
+
require 'ruby_xml_nfe/total'
|
8
|
+
require 'ruby_xml_nfe/transp'
|
9
|
+
require 'ruby_xml_nfe/cobr'
|
10
|
+
require 'ruby_xml_nfe/pag'
|
11
|
+
require 'ruby_xml_nfe/inf_adic'
|
12
|
+
|
13
|
+
module RubyXmlNfe
|
14
|
+
class Xml
|
15
|
+
attr_reader :chNFe, :ide_params, :emit_params, :dest_params, :aut_xml_params,
|
16
|
+
:items_params, :total_params, :transp_params, :cobr_params, :pag_params,
|
17
|
+
:inf_adc_params
|
18
|
+
|
19
|
+
def initialize(name, params)
|
20
|
+
@name = name
|
21
|
+
@chNFe = params[:chNFe]
|
22
|
+
@ide_params = params[:ide]
|
23
|
+
@emit_params = params[:emit]
|
24
|
+
@dest_params = params[:dest]
|
25
|
+
@aut_xml_params = params[:autXML]
|
26
|
+
@items_params = params[:items]
|
27
|
+
@total_params = params[:total]
|
28
|
+
@transp_params = params[:transp]
|
29
|
+
@cobr_params = params[:cobr]
|
30
|
+
@pag_params = params[:pag]
|
31
|
+
@inf_adc_params = params[:infAdic]
|
32
|
+
end
|
33
|
+
|
34
|
+
def build
|
35
|
+
builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
36
|
+
xml.NFe(xmlns: "http://www.portalfiscal.inf.br/nfe") do
|
37
|
+
xml.infNFe(Id: "NFe#{chNFe}", versao: "4.00") do
|
38
|
+
ide = RubyXmlNfe::Ide.new(xml, ide_params)
|
39
|
+
ide.build
|
40
|
+
|
41
|
+
emit = RubyXmlNfe::Emit.new(xml, emit_params)
|
42
|
+
emit.build
|
43
|
+
|
44
|
+
dest = RubyXmlNfe::Dest.new(xml, dest_params)
|
45
|
+
dest.build
|
46
|
+
|
47
|
+
if aut_xml_params
|
48
|
+
aut_xml = RubyXmlNfe::AutXml.new(xml, aut_xml_params)
|
49
|
+
aut_xml.build
|
50
|
+
end
|
51
|
+
|
52
|
+
items = RubyXmlNfe::Items.new(xml, items_params)
|
53
|
+
items.build
|
54
|
+
|
55
|
+
total = RubyXmlNfe::Total.new(xml, total_params)
|
56
|
+
total.build
|
57
|
+
|
58
|
+
transp = RubyXmlNfe::Transp.new(xml, transp_params)
|
59
|
+
transp.build
|
60
|
+
|
61
|
+
if cobr_params
|
62
|
+
cobr = RubyXmlNfe::Cobr.new(xml, cobr_params)
|
63
|
+
cobr.build
|
64
|
+
end
|
65
|
+
|
66
|
+
pag = RubyXmlNfe::Pag.new(xml, pag_params)
|
67
|
+
pag.build
|
68
|
+
|
69
|
+
inf_adic = RubyXmlNfe::InfAdic.new(xml, inf_adc_params)
|
70
|
+
inf_adic.build
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
builder.to_xml
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|