ruby_xml_nfe 0.1.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 +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
|