ruby_xml_nfe 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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