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.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +12 -0
  3. data/.gitignore +11 -0
  4. data/.rspec +3 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +7 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +6 -0
  10. data/Gemfile.lock +77 -0
  11. data/Guardfile +70 -0
  12. data/LICENSE.txt +21 -0
  13. data/README.md +43 -0
  14. data/Rakefile +6 -0
  15. data/bin/console +14 -0
  16. data/bin/setup +8 -0
  17. data/lib/ruby_xml_nfe.rb +6 -0
  18. data/lib/ruby_xml_nfe/aut_xml.rb +16 -0
  19. data/lib/ruby_xml_nfe/cobr.rb +26 -0
  20. data/lib/ruby_xml_nfe/cofins.rb +28 -0
  21. data/lib/ruby_xml_nfe/cofins_aliq.rb +22 -0
  22. data/lib/ruby_xml_nfe/cofins_outr.rb +22 -0
  23. data/lib/ruby_xml_nfe/dat_pag.rb +20 -0
  24. data/lib/ruby_xml_nfe/dest.rb +32 -0
  25. data/lib/ruby_xml_nfe/dup.rb +20 -0
  26. data/lib/ruby_xml_nfe/emit.rb +36 -0
  27. data/lib/ruby_xml_nfe/ender_dest.rb +39 -0
  28. data/lib/ruby_xml_nfe/ender_emit.rb +38 -0
  29. data/lib/ruby_xml_nfe/fat.rb +22 -0
  30. data/lib/ruby_xml_nfe/icms.rb +19 -0
  31. data/lib/ruby_xml_nfe/icms00.rb +30 -0
  32. data/lib/ruby_xml_nfe/icms_tot.rb +59 -0
  33. data/lib/ruby_xml_nfe/ide.rb +57 -0
  34. data/lib/ruby_xml_nfe/ii.rb +22 -0
  35. data/lib/ruby_xml_nfe/imposto.rb +47 -0
  36. data/lib/ruby_xml_nfe/inf_adic.rb +18 -0
  37. data/lib/ruby_xml_nfe/ipi.rb +20 -0
  38. data/lib/ruby_xml_nfe/ipi_int.rb +16 -0
  39. data/lib/ruby_xml_nfe/items.rb +27 -0
  40. data/lib/ruby_xml_nfe/pag.rb +19 -0
  41. data/lib/ruby_xml_nfe/pis.rb +28 -0
  42. data/lib/ruby_xml_nfe/pis_aliq.rb +22 -0
  43. data/lib/ruby_xml_nfe/pis_outr.rb +22 -0
  44. data/lib/ruby_xml_nfe/prod.rb +52 -0
  45. data/lib/ruby_xml_nfe/total.rb +19 -0
  46. data/lib/ruby_xml_nfe/transp.rb +21 -0
  47. data/lib/ruby_xml_nfe/version.rb +3 -0
  48. data/lib/ruby_xml_nfe/vol.rb +21 -0
  49. data/lib/ruby_xml_nfe/xml.rb +78 -0
  50. data/ruby_xml_nfe.gemspec +45 -0
  51. 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,16 @@
1
+ module RubyXmlNfe
2
+ class IpiInt
3
+ attr_reader :xml, :cst
4
+
5
+ def initialize(xml, params)
6
+ @xml = xml
7
+ @cst = params[:CST]
8
+ end
9
+
10
+ def build
11
+ xml.IPINT do
12
+ xml.CST cst
13
+ end
14
+ end
15
+ end
16
+ 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,3 @@
1
+ module RubyXmlNfe
2
+ VERSION = "0.1.0"
3
+ 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