nfe 0.0.0 → 0.0.1a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/.gitignore +2 -0
  2. data/.rspec +3 -0
  3. data/Gemfile +5 -0
  4. data/lib/nfe.rb +1 -1
  5. data/lib/nfe/template.rb +44 -0
  6. data/lib/nfe/template/cobr.mustache +4 -0
  7. data/lib/nfe/template/cobr.rb +15 -0
  8. data/lib/nfe/template/cofins.mustache +3 -0
  9. data/lib/nfe/template/cofins.rb +11 -0
  10. data/lib/nfe/template/cofins_aliq.mustache +6 -0
  11. data/lib/nfe/template/cofins_aliq.rb +20 -0
  12. data/lib/nfe/template/dest.mustache +7 -0
  13. data/lib/nfe/template/dest.rb +12 -0
  14. data/lib/nfe/template/det.mustache +5 -0
  15. data/lib/nfe/template/det.rb +16 -0
  16. data/lib/nfe/template/dup.mustache +5 -0
  17. data/lib/nfe/template/dup.rb +12 -0
  18. data/lib/nfe/template/emit.mustache +10 -0
  19. data/lib/nfe/template/emit.rb +12 -0
  20. data/lib/nfe/template/ender_dest.mustache +12 -0
  21. data/lib/nfe/template/ender_dest.rb +7 -0
  22. data/lib/nfe/template/ender_emit.mustache +13 -0
  23. data/lib/nfe/template/ender_emit.rb +7 -0
  24. data/lib/nfe/template/fat.mustache +5 -0
  25. data/lib/nfe/template/fat.rb +6 -0
  26. data/lib/nfe/template/icms.mustache +3 -0
  27. data/lib/nfe/template/icms.rb +11 -0
  28. data/lib/nfe/template/icms00.mustache +8 -0
  29. data/lib/nfe/template/icms00.rb +6 -0
  30. data/lib/nfe/template/icms_tot.mustache +16 -0
  31. data/lib/nfe/template/icms_tot.rb +40 -0
  32. data/lib/nfe/template/ide.mustache +19 -0
  33. data/lib/nfe/template/ide.rb +7 -0
  34. data/lib/nfe/template/imposto.mustache +6 -0
  35. data/lib/nfe/template/imposto.rb +23 -0
  36. data/lib/nfe/template/inf_adic.mustache +4 -0
  37. data/lib/nfe/template/inf_adic.rb +12 -0
  38. data/lib/nfe/template/inf_nfe.mustache +10 -0
  39. data/lib/nfe/template/inf_nfe.rb +40 -0
  40. data/lib/nfe/template/ipi.mustache +4 -0
  41. data/lib/nfe/template/ipi.rb +11 -0
  42. data/lib/nfe/template/ipint.mustache +3 -0
  43. data/lib/nfe/template/ipint.rb +6 -0
  44. data/lib/nfe/template/obs_cont.mustache +3 -0
  45. data/lib/nfe/template/obs_cont.rb +7 -0
  46. data/lib/nfe/template/pis.mustache +3 -0
  47. data/lib/nfe/template/pis.rb +11 -0
  48. data/lib/nfe/template/pis_aliq.mustache +6 -0
  49. data/lib/nfe/template/pis_aliq.rb +20 -0
  50. data/lib/nfe/template/prod.mustache +18 -0
  51. data/lib/nfe/template/prod.rb +7 -0
  52. data/lib/nfe/template/root.mustache +4 -0
  53. data/lib/nfe/template/root.rb +11 -0
  54. data/lib/nfe/template/total.mustache +3 -0
  55. data/lib/nfe/template/total.rb +11 -0
  56. data/lib/nfe/template/transp.mustache +5 -0
  57. data/lib/nfe/template/transp.rb +16 -0
  58. data/lib/nfe/template/transporta.mustache +3 -0
  59. data/lib/nfe/template/transporta.rb +7 -0
  60. data/lib/nfe/template/vol.mustache +6 -0
  61. data/lib/nfe/template/vol.rb +16 -0
  62. data/lib/nfe/version.rb +1 -1
  63. data/nfe.gemspec +5 -0
  64. data/spec/fixtures/nfe.xml +167 -0
  65. data/spec/nfe/template/cobr_spec.rb +13 -0
  66. data/spec/nfe/template/cofins_aliq_spec.rb +11 -0
  67. data/spec/nfe/template/cofins_spec.rb +11 -0
  68. data/spec/nfe/template/dest_spec.rb +13 -0
  69. data/spec/nfe/template/det_spec.rb +13 -0
  70. data/spec/nfe/template/dup_spec.rb +13 -0
  71. data/spec/nfe/template/emit_spec.rb +13 -0
  72. data/spec/nfe/template/ender_dest_spec.rb +13 -0
  73. data/spec/nfe/template/ender_emit_spec.rb +13 -0
  74. data/spec/nfe/template/fat_spec.rb +13 -0
  75. data/spec/nfe/template/icms00_spec.rb +13 -0
  76. data/spec/nfe/template/icms_spec.rb +13 -0
  77. data/spec/nfe/template/icms_tot_spec.rb +13 -0
  78. data/spec/nfe/template/ide_spec.rb +13 -0
  79. data/spec/nfe/template/imposto_spec.rb +13 -0
  80. data/spec/nfe/template/inf_adic_spec.rb +13 -0
  81. data/spec/nfe/template/inf_nfe_spec.rb +13 -0
  82. data/spec/nfe/template/ipi_spec.rb +13 -0
  83. data/spec/nfe/template/ipint_spec.rb +13 -0
  84. data/spec/nfe/template/obs_cont_spec.rb +13 -0
  85. data/spec/nfe/template/pis_aliq_spec.rb +13 -0
  86. data/spec/nfe/template/pis_spec.rb +13 -0
  87. data/spec/nfe/template/prod_spec.rb +13 -0
  88. data/spec/nfe/template/root_spec.rb +13 -0
  89. data/spec/nfe/template/total_spec.rb +13 -0
  90. data/spec/nfe/template/transp_spec.rb +13 -0
  91. data/spec/nfe/template/transporta_spec.rb +13 -0
  92. data/spec/nfe/template/vol_spec.rb +13 -0
  93. data/spec/spec_helper.rb +306 -0
  94. metadata +158 -7
data/.gitignore CHANGED
@@ -15,3 +15,5 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ bin
19
+ vendor/ruby
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format progress
3
+ --fail-fast
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in nfe.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem "pry"
8
+ gem "activesupport", :require => false
9
+ end
data/lib/nfe.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "nfe/version"
2
2
 
3
3
  module Nfe
4
- # Your code goes here...
4
+ autoload :Template, "nfe/template"
5
5
  end
@@ -0,0 +1,44 @@
1
+ require "mustache"
2
+
3
+ module Nfe
4
+ module Template
5
+ class Base < Mustache
6
+ def initialize(*args)
7
+ self.template_path = File.expand_path("../../", __FILE__)
8
+ self.raise_on_context_miss = true
9
+ super
10
+ end
11
+ end
12
+
13
+ autoload :Root, "nfe/template/root"
14
+ autoload :Cobr, "nfe/template/cobr"
15
+ autoload :CofinsAliq, "nfe/template/cofins_aliq"
16
+ autoload :Cofins, "nfe/template/cofins"
17
+ autoload :Dest, "nfe/template/dest"
18
+ autoload :Det, "nfe/template/det"
19
+ autoload :EnderDest, "nfe/template/ender_dest"
20
+ autoload :Prod, "nfe/template/prod"
21
+ autoload :Imposto, "nfe/template/imposto"
22
+ autoload :Ide, "nfe/template/ide"
23
+ autoload :Fat, "nfe/template/fat"
24
+ autoload :Dup, "nfe/template/dup"
25
+ autoload :Icms, "nfe/template/icms"
26
+ autoload :Icms00, "nfe/template/icms00"
27
+ autoload :Ipi, "nfe/template/ipi"
28
+ autoload :Pis, "nfe/template/pis"
29
+ autoload :Ipint, "nfe/template/ipint"
30
+ autoload :PisAliq, "nfe/template/pis_aliq"
31
+ autoload :InfNfe, "nfe/template/inf_nfe"
32
+ autoload :Emit, "nfe/template/emit"
33
+ autoload :EnderEmit, "nfe/template/ender_emit"
34
+ autoload :Total, "nfe/template/total"
35
+ autoload :Transp, "nfe/template/transp"
36
+ autoload :IcmsTot, "nfe/template/icms_tot"
37
+ autoload :Transporta, "nfe/template/transporta"
38
+ autoload :Vol, "nfe/template/vol"
39
+ autoload :InfAdic, "nfe/template/inf_adic"
40
+ autoload :ObsCont, "nfe/template/obs_cont"
41
+
42
+ autoload :Signature, "nfe/template/signature"
43
+ end
44
+ end
@@ -0,0 +1,4 @@
1
+ <cobr>
2
+ {{{fat}}}
3
+ {{{dup}}}
4
+ </cobr>
@@ -0,0 +1,15 @@
1
+ module Nfe
2
+ module Template
3
+ class Cobr < Base
4
+ attr_writer :fat, :dup
5
+
6
+ def fat
7
+ @fat.render
8
+ end
9
+
10
+ def dup
11
+ @dup.render
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ <COFINS>
2
+ {{{cofins_aliq}}}
3
+ </COFINS>
@@ -0,0 +1,11 @@
1
+ module Nfe
2
+ module Template
3
+ class Cofins < Base
4
+ attr_writer :cofins_aliq
5
+
6
+ def cofins_aliq
7
+ @cofins_aliq.render
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ <COFINSAliq>
2
+ <CST>{{cst}}</CST>
3
+ <vBC>{{v_bc}}</vBC>
4
+ <pCOFINS>{{p_cofins}}</pCOFINS>
5
+ <vCOFINS>{{v_cofins}}</vCOFINS>
6
+ </COFINSAliq>
@@ -0,0 +1,20 @@
1
+ module Nfe
2
+ module Template
3
+ class CofinsAliq < Base
4
+ attr_accessor :cst
5
+ attr_accessor :v_bc, :p_cofins, :v_cofins
6
+
7
+ def v_bc
8
+ "%0.2f" % @v_bc
9
+ end
10
+
11
+ def p_cofins
12
+ "%0.2f" % @p_cofins
13
+ end
14
+
15
+ def v_cofins
16
+ "%0.2f" % @v_cofins
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ <dest>
2
+ <CNPJ>{{cnpj}}</CNPJ>
3
+ <xNome>{{x_nome}}</xNome>
4
+ {{{ender_dest}}}
5
+ <IE>{{ie}}</IE>
6
+ <email>{{email}}</email>
7
+ </dest>
@@ -0,0 +1,12 @@
1
+ module Nfe
2
+ module Template
3
+ class Dest < Base
4
+ attr_accessor :cnpj, :x_nome, :ie, :email
5
+ attr_writer :ender_dest
6
+
7
+ def ender_dest
8
+ @ender_dest.render
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ <det nItem="1">
2
+ {{{prod}}}
3
+ {{{imposto}}}
4
+ <infAdProd>{{inf_ad_prod}}</infAdProd>
5
+ </det>
@@ -0,0 +1,16 @@
1
+ module Nfe
2
+ module Template
3
+ class Det < Base
4
+ attr_accessor :inf_ad_prod
5
+ attr_writer :prod, :imposto
6
+
7
+ def prod
8
+ @prod.render
9
+ end
10
+
11
+ def imposto
12
+ @imposto.render
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ <dup>
2
+ <nDup>{{n_dup}}</nDup>
3
+ <dVenc>{{d_venc}}</dVenc>
4
+ <vDup>{{v_dup}}</vDup>
5
+ </dup>
@@ -0,0 +1,12 @@
1
+ module Nfe
2
+ module Template
3
+ class Dup < Base
4
+ attr_accessor :n_dup, :d_venc
5
+ attr_writer :v_dup
6
+
7
+ def v_dup
8
+ "%0.2f" % @v_dup
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ <emit>
2
+ <CNPJ>58716523000119</CNPJ>
3
+ <xNome>FIMATEC TEXTIL LTDA</xNome>
4
+ <xFant>FIMATEC</xFant>
5
+ {{{ender_emit}}}
6
+ <IE>112006603110</IE>
7
+ <IM>95095870</IM>
8
+ <CNAE>0131380</CNAE>
9
+ <CRT>3</CRT>
10
+ </emit>
@@ -0,0 +1,12 @@
1
+ module Nfe
2
+ module Template
3
+ class Emit < Base
4
+ attr_accessor :cnpj, :x_nome, :x_fant, :ie, :im, :cnae, :crt
5
+ attr_writer :ender_emit
6
+
7
+ def ender_emit
8
+ @ender_emit.render
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ <enderDest>
2
+ <xLgr>RUA PARAIBA</xLgr>
3
+ <nro>73</nro>
4
+ <xBairro>BRAS</xBairro>
5
+ <cMun>3550308</cMun>
6
+ <xMun>Sao Paulo</xMun>
7
+ <UF>SP</UF>
8
+ <CEP>03013030</CEP>
9
+ <cPais>1058</cPais>
10
+ <xPais>BRASIL</xPais>
11
+ <fone>1122910590</fone>
12
+ </enderDest>
@@ -0,0 +1,7 @@
1
+ module Nfe
2
+ module Template
3
+ class EnderDest < Base
4
+ attr_accessor :x_lgr, :nro, :x_bairro, :c_mun, :x_mun, :uf, :cep, :c_pais, :x_pais, :fone
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ <enderEmit>
2
+ <xLgr>{{x_lgr}}</xLgr>
3
+ <nro>{{nro}}</nro>
4
+ <xCpl>{{x_cpl}}</xCpl>
5
+ <xBairro>{{x_bairro}}</xBairro>
6
+ <cMun>{{c_mun}}</cMun>
7
+ <xMun>{{x_mun}}</xMun>
8
+ <UF>{{uf}}</UF>
9
+ <CEP>{{cep}}</CEP>
10
+ <cPais>{{c_pais}}</cPais>
11
+ <xPais>{{x_pais}}</xPais>
12
+ <fone>{{fone}}</fone>
13
+ </enderEmit>
@@ -0,0 +1,7 @@
1
+ module Nfe
2
+ module Template
3
+ class EnderEmit < Base
4
+ attr_accessor :x_lgr, :nro, :x_cpl, :x_bairro, :c_mun, :x_mun, :uf, :cep, :c_pais, :x_pais, :fone
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ <fat>
2
+ <nFat>0001</nFat>
3
+ <vOrig>883.12</vOrig>
4
+ <vLiq>883.12</vLiq>
5
+ </fat>
@@ -0,0 +1,6 @@
1
+ module Nfe
2
+ module Template
3
+ class Fat < Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ <ICMS>
2
+ {{{icms00}}}
3
+ </ICMS>
@@ -0,0 +1,11 @@
1
+ module Nfe
2
+ module Template
3
+ class Icms < Base
4
+ attr_writer :icms00
5
+
6
+ def icms00
7
+ @icms00.render
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ <ICMS00>
2
+ <orig>0</orig>
3
+ <CST>00</CST>
4
+ <modBC>3</modBC>
5
+ <vBC>588.78</vBC>
6
+ <pICMS>18.00</pICMS>
7
+ <vICMS>105.98</vICMS>
8
+ </ICMS00>
@@ -0,0 +1,6 @@
1
+ module Nfe
2
+ module Template
3
+ class Icms00 < Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+ <ICMSTot>
2
+ <vBC>{{v_bc}}</vBC>
3
+ <vICMS>{{v_icms}}</vICMS>
4
+ <vBCST>{{v_bcst}}</vBCST>
5
+ <vST>{{v_st}}</vST>
6
+ <vProd>{{v_prod}}</vProd>
7
+ <vFrete>{{v_frete}}</vFrete>
8
+ <vSeg>{{v_seg}}</vSeg>
9
+ <vDesc>{{v_desc}}</vDesc>
10
+ <vII>{{v_ii}}</vII>
11
+ <vIPI>{{v_ipi}}</vIPI>
12
+ <vPIS>{{v_pis}}</vPIS>
13
+ <vCOFINS>{{v_cofins}}</vCOFINS>
14
+ <vOutro>{{v_outro}}</vOutro>
15
+ <vNF>{{v_nf}}</vNF>
16
+ </ICMSTot>
@@ -0,0 +1,40 @@
1
+ module Nfe
2
+ module Template
3
+ class IcmsTot < Base
4
+ attr_accessor :v_bc, :v_icms, :v_prod, :v_pis, :v_cofins, :v_nf
5
+ attr_writer :v_bcst, :v_st, :v_frete, :v_seg, :v_desc, :v_ii, :v_ipi, :v_outro
6
+
7
+ def v_bcst
8
+ "%0.2f" % @v_bcst
9
+ end
10
+
11
+ def v_st
12
+ "%0.2f" % @v_st
13
+ end
14
+
15
+ def v_frete
16
+ "%0.2f" % @v_frete
17
+ end
18
+
19
+ def v_seg
20
+ "%0.2f" % @v_seg
21
+ end
22
+
23
+ def v_desc
24
+ "%0.2f" % @v_desc
25
+ end
26
+
27
+ def v_ii
28
+ "%0.2f" % @v_ii
29
+ end
30
+
31
+ def v_ipi
32
+ "%0.2f" % @v_ipi
33
+ end
34
+
35
+ def v_outro
36
+ "%0.2f" % @v_outro
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+ <ide>
2
+ <cUF>{{c_uf}}</cUF>
3
+ <cNF>{{c_nf}}</cNF>
4
+ <natOp>{{nat_op}}</natOp>
5
+ <indPag>{{ind_pag}}</indPag>
6
+ <mod>{{mod}}</mod>
7
+ <serie>{{serie}}</serie>
8
+ <nNF>{{n_nf}}</nNF>
9
+ <dEmi>{{d_emi}}</dEmi>
10
+ <tpNF>{{tp_nf}}</tpNF>
11
+ <cMunFG>{{c_mun_fg}}</cMunFG>
12
+ <tpImp>{{tp_imp}}</tpImp>
13
+ <tpEmis>{{tp_emis}}</tpEmis>
14
+ <cDV>{{c_dv}}</cDV>
15
+ <tpAmb>{{tp_amb}}</tpAmb>
16
+ <finNFe>{{fin_nfe}}</finNFe>
17
+ <procEmi>{{proc_emi}}</procEmi>
18
+ <verProc>{{ver_proc}}</verProc>
19
+ </ide>
@@ -0,0 +1,7 @@
1
+ module Nfe
2
+ module Template
3
+ class Ide < Base
4
+ attr_accessor :c_uf, :c_nf, :nat_op, :ind_pag, :mod, :serie, :n_nf, :d_emi, :tp_nf, :c_mun_fg, :tp_imp, :tp_emis, :c_dv, :tp_amb, :fin_nfe, :proc_emi, :ver_proc
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ <imposto>
2
+ {{{icms}}}
3
+ {{{ipi}}}
4
+ {{{pis}}}
5
+ {{{cofins}}}
6
+ </imposto>
@@ -0,0 +1,23 @@
1
+ module Nfe
2
+ module Template
3
+ class Imposto < Base
4
+ attr_writer :icms, :ipi, :pis, :cofins
5
+
6
+ def icms
7
+ @icms.render
8
+ end
9
+
10
+ def ipi
11
+ @ipi.render
12
+ end
13
+
14
+ def pis
15
+ @pis.render
16
+ end
17
+
18
+ def cofins
19
+ @cofins.render
20
+ end
21
+ end
22
+ end
23
+ end