br_danfe 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/br_danfe.gemspec +3 -1
  4. data/circle.yml +5 -0
  5. data/config/locales/pt-BR.yml +4 -3
  6. data/lib/br_danfe/danfe.rb +2 -2
  7. data/lib/br_danfe/dest.rb +12 -22
  8. data/lib/br_danfe/det_header.rb +1 -2
  9. data/lib/br_danfe/document.rb +34 -9
  10. data/lib/br_danfe/emit.rb +8 -18
  11. data/lib/br_danfe/issqn.rb +3 -3
  12. data/lib/br_danfe/ticket.rb +10 -5
  13. data/lib/br_danfe/transp.rb +17 -4
  14. data/lib/br_danfe/version.rb +1 -1
  15. data/lib/br_danfe/xprod.rb +4 -4
  16. data/lib/br_danfe.rb +1 -0
  17. data/spec/features/br_danfe_spec.rb +2 -19
  18. data/spec/fixtures/lib/dest#render-with_cnpj.pdf +201 -0
  19. data/spec/fixtures/lib/dest#render-with_cpf.pdf +201 -0
  20. data/spec/fixtures/lib/dest#render-with_ie.pdf +208 -0
  21. data/spec/fixtures/lib/det_body#render-csosn.pdf +855 -0
  22. data/spec/fixtures/lib/det_body#render-cst.pdf +512 -0
  23. data/spec/fixtures/lib/det_body#render-fci.pdf +260 -0
  24. data/spec/fixtures/lib/det_body#render-icms_st.pdf +267 -0
  25. data/spec/fixtures/lib/det_header#render.pdf +207 -0
  26. data/spec/fixtures/lib/document#lcnpj-blank.pdf +74 -0
  27. data/spec/fixtures/lib/document#lcnpj-invalid.pdf +74 -0
  28. data/spec/fixtures/lib/document#lcnpj-valid.pdf +81 -0
  29. data/spec/fixtures/lib/document#lie-blank.pdf +74 -0
  30. data/spec/fixtures/lib/document#lie-invalid.pdf +74 -0
  31. data/spec/fixtures/lib/document#lie-valid.pdf +81 -0
  32. data/spec/fixtures/lib/dup#render.pdf +216 -0
  33. data/spec/fixtures/lib/emit#render.pdf +143 -0
  34. data/spec/fixtures/lib/emit_header#render-with_logo.pdf +712 -0
  35. data/spec/fixtures/lib/emit_header#render-without_logo.pdf +650 -0
  36. data/spec/fixtures/lib/icmstot#render.pdf +255 -0
  37. data/spec/fixtures/lib/infadic#render-extra_volume.pdf +295 -0
  38. data/spec/fixtures/lib/infadic#render.pdf +104 -0
  39. data/spec/fixtures/lib/issqn#render.pdf +143 -0
  40. data/spec/fixtures/lib/ticket#render.pdf +113 -0
  41. data/spec/fixtures/lib/transp#render.pdf +239 -0
  42. data/spec/fixtures/lib/vol#render.pdf +152 -0
  43. data/spec/fixtures/{v2.00/nfe_with_logo.xml.logo.png → logo.png} +0 -0
  44. data/spec/fixtures/v2.00/nfe_simples_nacional.xml.fixture.pdf +14 -14
  45. data/spec/fixtures/v2.00/nfe_with_extra_volumes.xml.fixture.pdf +29 -43
  46. data/spec/fixtures/v2.00/nfe_with_fci.xml.fixture.pdf +12 -12
  47. data/spec/fixtures/v2.00/nfe_with_logo.xml.fixture.pdf +16 -16
  48. data/spec/fixtures/v2.00/nfe_with_ns.xml.fixture.pdf +29 -43
  49. data/spec/fixtures/v2.00/nfe_without_ns.xml.fixture.pdf +13 -27
  50. data/spec/fixtures/v3.10/nfe_simples_nacional.xml.fixture.pdf +23 -23
  51. data/spec/lib/dest_spec.rb +69 -0
  52. data/spec/lib/det_body_spec.rb +299 -0
  53. data/spec/lib/det_header_spec.rb +26 -0
  54. data/spec/lib/document_spec.rb +172 -0
  55. data/spec/lib/dup_spec.rb +52 -0
  56. data/spec/lib/emit_header_spec.rb +76 -0
  57. data/spec/lib/emit_spec.rb +54 -0
  58. data/spec/lib/icmstot_spec.rb +48 -0
  59. data/spec/lib/infadic_spec.rb +81 -0
  60. data/spec/lib/issqn_spec.rb +45 -0
  61. data/spec/lib/ticket_spec.rb +42 -0
  62. data/spec/lib/transp_spec.rb +51 -0
  63. data/spec/lib/vol_spec.rb +65 -0
  64. data/spec/lib/xprod_spec.rb +2 -2
  65. metadata +96 -12
  66. data/spec/fixtures/v2.00/nfe_with_cpf.xml +0 -1
  67. data/spec/fixtures/v2.00/nfe_with_cpf.xml.fixture.pdf +0 -1871
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8820182a8bbc65175a5bcf053e329a3583edd374
4
- data.tar.gz: e2248c10394096c63619505c8eacb2f65d4f3cef
3
+ metadata.gz: 495bde96f88c5762bebf455e55b41d9ea1bda6c6
4
+ data.tar.gz: 1117b6d8838a67787ff32d1c3da4a903d76fbebc
5
5
  SHA512:
6
- metadata.gz: 38ba94bcf2d4b47664f3be6d5f0f00aa58b3c47b12cfb57a547a4e39bb36ca74555fc7bc0471bf5f4eba4e84d5590a836aa06cc1751a4f11f61137cdbbd4bf0a
7
- data.tar.gz: 5e77bfccdf34f992a5e775269318cf40ad9c5e7c34578905b8f561cab9170586e248b5f8da89b713507dfafcdf06f02c0f9ec21677e258d45e4a2c20a7b67fb9
6
+ metadata.gz: 0a8868c455f39fe42752c198453e3357f34a39d5d6b9572212300e631ee90e2cbec2cefab159e1dd19129df9ae28404a3032fbab41fc435246e4aedcd02219d3
7
+ data.tar.gz: f5db6c1c3b5a0146bf1b33b0b21e4cd0a7067ca8eaed888247731ae8d483e8d8730ef84fe8599126564f64f4732a471fb6bbb780282feaca58f114b45ec70a36
data/README.md CHANGED
@@ -6,7 +6,7 @@ This gem generates PDF files for Brazilian DANFE (_Documento Auxiliar da Nota Fi
6
6
 
7
7
  [See an example here.](https://github.com/asseinfo/br_danfe/blob/master/spec/fixtures/v2.00/nfe_with_logo.xml.fixture.pdf?raw=true)
8
8
 
9
- This gem requires `ruby >= 1.9.x`.
9
+ This gem requires `ruby >= 1.9.3`.
10
10
 
11
11
  ## Supported NF-e versions
12
12
 
@@ -132,6 +132,7 @@ City | Sumaré - SP
132
132
  Phone | (19) 2345-6789
133
133
  CNPJ | 71.058.884/0001-83
134
134
  IE | 671.008.375.110
135
+ IE ST | 611.724.092.039
135
136
 
136
137
  Field | Content
137
138
  ------------ | -------------------------
data/br_danfe.gemspec CHANGED
@@ -15,9 +15,11 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  spec.require_paths = ["lib"]
18
+ spec.required_ruby_version = ">= 2.0"
18
19
 
19
20
  spec.add_dependency "nokogiri"
20
- spec.add_dependency "prawn", "1.0.0"
21
+ spec.add_dependency "prawn", "1.3.0"
22
+ spec.add_dependency "prawn-table", "0.2.1"
21
23
  spec.add_dependency "barby", "0.5.1"
22
24
  spec.add_dependency "i18n"
23
25
  spec.add_dependency "br_documents", ">= 0.0.8"
data/circle.yml ADDED
@@ -0,0 +1,5 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.1.2
4
+ timezone:
5
+ America/Sao_Paulo
@@ -102,9 +102,10 @@ pt-BR:
102
102
  issqn:
103
103
  title: "CÁLCULO DO ISSQN"
104
104
  total:
105
- vServ: "VALOR TOTAL DOS SERVIÇOS"
106
- vBCISS: "BASE DE CÁLCULO DO ISSQN"
107
- ISSTot: "VALOR DO ISSQN"
105
+ ISSQNtot:
106
+ vServ: "VALOR TOTAL DOS SERVIÇOS"
107
+ vBC: "BASE DE CÁLCULO DO ISSQN"
108
+ vISS: "VALOR DO ISSQN"
108
109
  infAdic:
109
110
  title: "DADOS ADICIONAIS"
110
111
  infCpl: "INFORMAÇÕES COMPLEMENTARES"
@@ -57,7 +57,7 @@ module BrDanfe
57
57
  end
58
58
 
59
59
  def repeat_on_each_page
60
- Ticket.render(@pdf, @xml)
60
+ Ticket.new(@pdf, @xml).render
61
61
  EmitHeader.new(@pdf, @xml, @options.logo_path).render
62
62
  Emit.new(@pdf, @xml).render
63
63
  Dest.new(@pdf, @xml).render
@@ -65,7 +65,7 @@ module BrDanfe
65
65
  Icmstot.new(@pdf, @xml).render
66
66
  Transp.new(@pdf, @xml).render
67
67
  nVol = Vol.new(@pdf, @xml).render
68
- DetHeader.new(@pdf, @xml).render
68
+ DetHeader.new(@pdf).render
69
69
  Issqn.new(@pdf, @xml).render
70
70
  Infadic.new(@pdf, @xml).render(nVol)
71
71
  end
data/lib/br_danfe/dest.rb CHANGED
@@ -30,26 +30,21 @@ module BrDanfe
30
30
 
31
31
  def render_cnpj_cpf
32
32
  if @xml["dest/CNPJ"] == ""
33
- @pdf.ibox LINE_HEIGHT, 4.87, 12.57, @l1, I18n.t("danfe.dest.CPF"), cpf
33
+ @pdf.i18n_lbox LINE_HEIGHT, 4.87, 12.57, @l1, "dest.CPF", cpf
34
34
  else
35
- @pdf.ibox LINE_HEIGHT, 4.87, 12.57, @l1, I18n.t("danfe.dest.CNPJ"), cnpj
35
+ @pdf.lcnpj LINE_HEIGHT, 4.87, 12.57, @l1, @xml, "dest/CNPJ"
36
36
  end
37
37
  end
38
38
 
39
- def cnpj
40
- cnpj = BrDocuments::CnpjCpf::Cnpj.new(@xml["dest/CNPJ"])
41
- cnpj.formatted
42
- end
43
-
44
39
  def cpf
45
40
  cpf = BrDocuments::CnpjCpf::Cpf.new(@xml["dest/CPF"])
46
41
  cpf.formatted
47
42
  end
48
43
 
49
44
  def render_line2
50
- @pdf.ibox LINE_HEIGHT, 10.16, 0.25, @l2, I18n.t("danfe.enderDest.xLgr"), street
45
+ @pdf.i18n_lbox LINE_HEIGHT, 10.16, 0.25, @l2, "enderDest.xLgr", street
51
46
  @pdf.lbox LINE_HEIGHT, 4.83, 10.41, @l2, @xml, "enderDest/xBairro"
52
- @pdf.ibox LINE_HEIGHT, 2.20, 15.24, @l2, I18n.t("danfe.enderDest.CEP"), cep
47
+ @pdf.i18n_lbox LINE_HEIGHT, 2.20, 15.24, @l2, "enderDest.CEP", cep
53
48
  end
54
49
 
55
50
  def street
@@ -62,33 +57,28 @@ module BrDanfe
62
57
 
63
58
  def render_line3
64
59
  @pdf.lbox LINE_HEIGHT, 7.11, 0.25, @l3, @xml, "enderDest/xMun"
65
- @pdf.ibox LINE_HEIGHT, 4.06, 7.36, @l3, I18n.t("danfe.enderDest.fone"), phone
60
+ @pdf.i18n_lbox LINE_HEIGHT, 4.06, 7.36, @l3, "enderDest.fone", phone
66
61
  @pdf.lbox LINE_HEIGHT, 1.14, 11.42, @l3, @xml, "enderDest/UF"
67
- @pdf.ibox LINE_HEIGHT, 4.88, 12.56, @l3, I18n.t("danfe.dest.IE"), ie
62
+ @pdf.lie LINE_HEIGHT, 4.88, 12.56, @l3, @xml, "enderDest/UF", "dest/IE"
68
63
  end
69
64
 
70
65
  def render_dates_block
71
66
  @pdf.ldate LINE_HEIGHT, 2.92, 17.90, @l1, "ide.dEmi", @xml["ide/dEmi"], { align: :right }
72
67
 
73
68
  if @xml.version_310?
74
- dSaiEnt = @xml["ide/dhSaiEnt"]
75
- hSaiEnt = @xml["ide/dhSaiEnt"]
69
+ dSaiEnt = "ide/dhSaiEnt"
70
+ hSaiEnt = "ide/dhSaiEnt"
76
71
  else
77
- dSaiEnt = @xml["ide/dSaiEnt"]
78
- hSaiEnt = @xml["ide/hSaiEnt"]
72
+ dSaiEnt = "ide/dSaiEnt"
73
+ hSaiEnt = "ide/hSaiEnt"
79
74
  end
80
75
 
81
- @pdf.ldate LINE_HEIGHT, 2.92, 17.90, @l2, "ide.dSaiEnt", dSaiEnt, { align: :right }
82
- @pdf.ltime LINE_HEIGHT, 2.92, 17.90, @l3, "ide.hSaiEnt", hSaiEnt, { align: :right }
76
+ @pdf.ldate LINE_HEIGHT, 2.92, 17.90, @l2, "ide.dSaiEnt", @xml[dSaiEnt], { align: :right }
77
+ @pdf.ltime LINE_HEIGHT, 2.92, 17.90, @l3, "ide.hSaiEnt", @xml[hSaiEnt], { align: :right }
83
78
  end
84
79
 
85
80
  def phone
86
81
  Phone.format(@xml["enderDest/fone"])
87
82
  end
88
-
89
- def ie
90
- ie = BrDocuments::IE::Factory.create(@xml["enderDest/UF"], @xml["dest/IE"])
91
- ie.formatted
92
- end
93
83
  end
94
84
  end
@@ -2,9 +2,8 @@ module BrDanfe
2
2
  Y = 17.39 + SPACE_BETWEEN_GROUPS
3
3
 
4
4
  class DetHeader
5
- def initialize(pdf, xml)
5
+ def initialize(pdf)
6
6
  @pdf = pdf
7
- @xml = xml
8
7
 
9
8
  @ltitle = Y - 0.42
10
9
  @l1 = Y
@@ -33,7 +33,7 @@ module BrDanfe
33
33
  end
34
34
 
35
35
  def lbox(h, w, x, y, xml, xpath, options = {})
36
- i18n = xpath.sub("/", ".");
36
+ i18n = xpath.gsub("/", ".");
37
37
  label = I18n.t("danfe.#{i18n}")
38
38
  data = xml[xpath]
39
39
 
@@ -50,8 +50,33 @@ module BrDanfe
50
50
  i18n_lbox(h, w, x, y, i18n, data, options)
51
51
  end
52
52
 
53
+ def lcnpj(h, w, x, y, xml, xpath, options = {})
54
+ i18n = xpath.gsub("/", ".");
55
+
56
+ cnpj = BrDocuments::CnpjCpf::Cnpj.new(xml[xpath])
57
+ if cnpj.valid?
58
+ data = cnpj.formatted
59
+ else
60
+ data = ""
61
+ end
62
+
63
+ i18n_lbox(h, w, x, y, i18n, data, options)
64
+ end
65
+
66
+ def lie(h, w, x, y, xml, xpath_uf, xpath_ie, options = {})
67
+ i18n = xpath_ie.gsub("/", ".");
68
+
69
+ data = ""
70
+ if xml[xpath_uf].present? #BrDocument bug - review this in the future
71
+ ie = BrDocuments::IE::Factory.create(xml[xpath_uf], xml[xpath_ie])
72
+ data = ie.formatted if ie.valid?
73
+ end
74
+
75
+ i18n_lbox(h, w, x, y, i18n, data, options)
76
+ end
77
+
53
78
  def lnumeric(h, w, x, y, xml, xpath, options = {})
54
- i18n = xpath.sub("/", ".");
79
+ i18n = xpath.gsub("/", ".");
55
80
  data = xml[xpath]
56
81
 
57
82
  inumeric(h, w, x, y, i18n, data, options)
@@ -64,6 +89,13 @@ module BrDanfe
64
89
  numeric [x.cm, Helper.invert(y.cm)], w.cm, h.cm, label, data, options
65
90
  end
66
91
 
92
+ def i18n_lbox(h, w, x, y, i18n = "", info = "", options = {})
93
+ label = ""
94
+ label = I18n.t("danfe.#{i18n}") if i18n != ""
95
+
96
+ ibox h, w, x, y, label, info, options
97
+ end
98
+
67
99
  private
68
100
  def numeric(at, w, h, title = "", info = "", options = {})
69
101
  options = {
@@ -74,13 +106,6 @@ module BrDanfe
74
106
  box at, w, h, title, info, options.merge({align: :right})
75
107
  end
76
108
 
77
- def i18n_lbox(h, w, x, y, i18n = "", info = "", options = {})
78
- label = ""
79
- label = I18n.t("danfe.#{i18n}") if i18n != ""
80
-
81
- ibox h, w, x, y, label, info, options
82
- end
83
-
84
109
  def box(at, w, h, title = "", info = "", options = {})
85
110
  options = {
86
111
  align: :left,
data/lib/br_danfe/emit.rb CHANGED
@@ -1,31 +1,21 @@
1
1
  module BrDanfe
2
2
  class Emit
3
3
  Y = 6.46
4
- L1 = Y
5
- L2 = Y + LINE_HEIGHT
6
4
 
7
5
  def initialize(pdf, xml)
8
6
  @pdf = pdf
9
7
  @xml = xml
10
- end
11
8
 
12
- def render
13
- @pdf.lbox LINE_HEIGHT, 10.54, 0.25, L1, @xml, "ide/natOp"
14
- @pdf.ibox LINE_HEIGHT, 10.02, 10.79, L1, I18n.t("danfe.infProt"), @xml["infProt/nProt"] + " " + Helper.format_datetime(@xml["infProt/dhRecbto"]), { align: :center }
15
- ie(0.25, "IE")
16
- ie(7.11, "IE_ST")
17
- cnpj_box
9
+ @l1 = Y
10
+ @l2 = Y + LINE_HEIGHT
18
11
  end
19
12
 
20
- private
21
- def ie(x, field)
22
- ie = BrDocuments::IE::Factory.create(@xml["enderEmit/UF"], @xml["emit/#{field}"])
23
- @pdf.ibox LINE_HEIGHT, 6.86, x, L2, I18n.t("danfe.emit.#{field}"), ie.formatted
24
- end
25
-
26
- def cnpj_box
27
- cnpj = BrDocuments::CnpjCpf::Cnpj.new(@xml["emit/CNPJ"])
28
- @pdf.ibox LINE_HEIGHT, 6.84, 13.97, L2, I18n.t("danfe.emit.CNPJ"), cnpj.formatted
13
+ def render
14
+ @pdf.lbox LINE_HEIGHT, 10.54, 0.25, @l1, @xml, "ide/natOp"
15
+ @pdf.ibox LINE_HEIGHT, 10.02, 10.79, @l1, I18n.t("danfe.infProt"), @xml["infProt/nProt"] + " " + Helper.format_datetime(@xml["infProt/dhRecbto"]), { align: :center }
16
+ @pdf.lie LINE_HEIGHT, 6.86, 0.25, @l2, @xml, "enderEmit/UF", "emit/IE"
17
+ @pdf.lie LINE_HEIGHT, 6.86, 7.11, @l2, @xml, "enderEmit/UF", "emit/IE_ST"
18
+ @pdf.lcnpj LINE_HEIGHT, 6.84, 13.97, @l2, @xml, "emit/CNPJ"
29
19
  end
30
20
  end
31
21
  end
@@ -14,9 +14,9 @@ module BrDanfe
14
14
  @pdf.ititle 0.42, 10.00, 0.25, @ltitle, "issqn.title"
15
15
 
16
16
  @pdf.lbox LINE_HEIGHT, 5.14, 0.25, @l1, @xml, "emit/IM"
17
- @pdf.lbox LINE_HEIGHT, 5.14, 5.39, @l1, @xml, "total/vServ"
18
- @pdf.lbox LINE_HEIGHT, 5.14, 10.53, @l1, @xml, "total/vBCISS"
19
- @pdf.lbox LINE_HEIGHT, 5.14, 15.67, @l1, @xml, "total/ISSTot"
17
+ @pdf.lnumeric LINE_HEIGHT, 5.14, 5.39, @l1, @xml, "total/ISSQNtot/vServ"
18
+ @pdf.lnumeric LINE_HEIGHT, 5.14, 10.53, @l1, @xml, "total/ISSQNtot/vBC"
19
+ @pdf.lnumeric LINE_HEIGHT, 5.14, 15.67, @l1, @xml, "total/ISSQNtot/vISS"
20
20
  end
21
21
  end
22
22
  end
@@ -1,10 +1,15 @@
1
1
  module BrDanfe
2
2
  class Ticket
3
- def self.render(pdf, xml)
4
- pdf.ibox 0.85, 16.10, 0.25, 0.42, I18n.t("danfe.ticket.xNome", xNome: xml["emit/xNome"])
5
- pdf.ibox 0.85, 4.10, 0.25, 1.27, I18n.t("danfe.ticket.received_at")
6
- pdf.ibox 0.85, 12.00, 4.35, 1.27, I18n.t("danfe.ticket.receiver")
7
- pdf.ibox 1.70, 4.50, 16.35, 0.42, "", I18n.t("danfe.ticket.document", nNF: xml["ide/nNF"], serie: xml["ide/serie"]), {align: :center, valign: :center}
3
+ def initialize(pdf, xml)
4
+ @pdf = pdf
5
+ @xml = xml
6
+ end
7
+
8
+ def render
9
+ @pdf.ibox 0.85, 16.10, 0.25, 0.42, I18n.t("danfe.ticket.xNome", xNome: @xml["emit/xNome"])
10
+ @pdf.ibox 0.85, 4.10, 0.25, 1.27, I18n.t("danfe.ticket.received_at")
11
+ @pdf.ibox 0.85, 12.00, 4.35, 1.27, I18n.t("danfe.ticket.receiver")
12
+ @pdf.ibox 1.70, 4.50, 16.35, 0.42, "", I18n.t("danfe.ticket.document", nNF: @xml["ide/nNF"], serie: @xml["ide/serie"]), {align: :center, valign: :center}
8
13
  end
9
14
  end
10
15
  end
@@ -15,15 +15,28 @@ module BrDanfe
15
15
  @pdf.ititle 0.42, 10.00, 0.25, @ltitle, "transporta.title"
16
16
 
17
17
  @pdf.lbox LINE_HEIGHT, 9.02, 0.25, @l1, @xml, "transporta/xNome"
18
- @pdf.ibox LINE_HEIGHT, 2.79, 9.27, @l1, I18n.t("danfe.transp.modFrete.title"), @xml["transp/modFrete"] == "0" ? I18n.t("danfe.transp.modFrete.emitter") : I18n.t("danfe.transp.modFrete.recipient")
18
+ @pdf.i18n_lbox LINE_HEIGHT, 2.79, 9.27, @l1, "transp.modFrete.title", mod_frete
19
19
  @pdf.lbox LINE_HEIGHT, 1.78, 12.06, @l1, @xml, "veicTransp/RNTC"
20
- @pdf.ibox LINE_HEIGHT, 2.29, 13.84, @l1, I18n.t("danfe.veicTransp.placa"), Plate.format(@xml["veicTransp/placa"])
20
+ @pdf.i18n_lbox LINE_HEIGHT, 2.29, 13.84, @l1, "veicTransp.placa", plate
21
21
  @pdf.lbox LINE_HEIGHT, 0.76, 16.13, @l1, @xml, "veicTransp/UF"
22
- @pdf.lbox LINE_HEIGHT, 3.94, 16.89, @l1, @xml, "transporta/CNPJ"
22
+ @pdf.lcnpj LINE_HEIGHT, 3.94, 16.89, @l1, @xml, "transporta/CNPJ"
23
23
  @pdf.lbox LINE_HEIGHT, 9.02, 0.25, @l2, @xml, "transporta/xEnder"
24
24
  @pdf.lbox LINE_HEIGHT, 6.86, 9.27, @l2, @xml, "transporta/xMun"
25
25
  @pdf.lbox LINE_HEIGHT, 0.76, 16.13, @l2, @xml, "transporta/UF"
26
- @pdf.lbox LINE_HEIGHT, 3.94, 16.89, @l2, @xml, "transporta/IE"
26
+ @pdf.lie LINE_HEIGHT, 3.94, 16.89, @l2, @xml, "transporta/UF", "transporta/IE"
27
+ end
28
+
29
+ private
30
+ def plate
31
+ Plate.format(@xml["veicTransp/placa"])
32
+ end
33
+
34
+ def mod_frete
35
+ if @xml["transp/modFrete"] == "0"
36
+ I18n.t("danfe.transp.modFrete.emitter")
37
+ else
38
+ I18n.t("danfe.transp.modFrete.recipient")
39
+ end
27
40
  end
28
41
  end
29
42
  end
@@ -1,3 +1,3 @@
1
1
  module BrDanfe
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -37,10 +37,10 @@ module BrDanfe
37
37
 
38
38
  def st
39
39
  "\n" + I18n.t("danfe.det.prod.xProdST",
40
- pMVAST: @det.css('ICMS/*/pMVAST').text,
41
- pICMSST: @det.css('ICMS/*/pICMSST').text,
42
- vBCST: @det.css('ICMS/*/vBCST').text,
43
- vICMSST: @det.css('ICMS/*/vICMSST').text)
40
+ pMVAST: Helper.numerify(@det.css('ICMS/*/pMVAST').text, 2),
41
+ pICMSST: Helper.numerify(@det.css('ICMS/*/pICMSST').text, 2),
42
+ vBCST: Helper.numerify(@det.css('ICMS/*/vBCST').text, 2),
43
+ vICMSST: Helper.numerify(@det.css('ICMS/*/vICMSST').text, 2))
44
44
  end
45
45
  end
46
46
  end
data/lib/br_danfe.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "prawn"
2
2
  require "prawn/measurement_extensions"
3
+ require "prawn/table"
3
4
  require "barby"
4
5
  require "barby/barcode/code_128"
5
6
  require "barby/outputter/prawn_outputter"
@@ -49,20 +49,12 @@ describe BrDanfe::Danfe do
49
49
 
50
50
  it "renders a NF-e with logo" do
51
51
  danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_logo.xml"))
52
- danfe.options.logo_path = "#{base_dir}nfe_with_logo.xml.logo.png"
52
+ danfe.options.logo_path = "spec/fixtures/logo.png"
53
53
 
54
54
  expected = IO.binread("#{base_dir}nfe_with_logo.xml.fixture.pdf")
55
55
 
56
56
  expect(danfe.render_pdf).to eq expected
57
57
  end
58
-
59
- it "renders a NF-e with CPF" do
60
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_cpf.xml"))
61
-
62
- expected = IO.binread("#{base_dir}nfe_with_cpf.xml.fixture.pdf")
63
-
64
- expect(danfe.render_pdf).to eq expected
65
- end
66
58
  end
67
59
 
68
60
  describe "#save_pdf" do
@@ -117,20 +109,11 @@ describe BrDanfe::Danfe do
117
109
  expect(File.exist?(output_pdf)).to be_falsey
118
110
 
119
111
  danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_logo.xml"))
120
- danfe.options.logo_path = "#{base_dir}nfe_with_logo.xml.logo.png"
112
+ danfe.options.logo_path = "spec/fixtures/logo.png"
121
113
  danfe.save_pdf output_pdf
122
114
 
123
115
  expect("#{base_dir}nfe_with_logo.xml.fixture.pdf").to be_same_file_as(output_pdf)
124
116
  end
125
-
126
- it "renders a NF-e with CPF" do
127
- expect(File.exist?(output_pdf)).to be_falsey
128
-
129
- danfe = BrDanfe::Danfe.new(File.read("#{base_dir}nfe_with_cpf.xml"))
130
- danfe.save_pdf output_pdf
131
-
132
- expect("#{base_dir}nfe_with_cpf.xml.fixture.pdf").to be_same_file_as(output_pdf)
133
- end
134
117
  end
135
118
  end
136
119
 
@@ -0,0 +1,201 @@
1
+ %PDF-1.3
2
+ %����
3
+ 1 0 obj
4
+ << /Creator <feff0050007200610077006e>
5
+ /Producer <feff0050007200610077006e>
6
+ >>
7
+ endobj
8
+ 2 0 obj
9
+ << /Type /Catalog
10
+ /Pages 3 0 R
11
+ >>
12
+ endobj
13
+ 3 0 obj
14
+ << /Type /Pages
15
+ /Count 1
16
+ /Kids [5 0 R]
17
+ >>
18
+ endobj
19
+ 4 0 obj
20
+ << /Length 1916
21
+ >>
22
+ stream
23
+ q
24
+ 0.3 w
25
+
26
+ BT
27
+ 7.086614173228347 608.772220472441 Td
28
+ /F2.0 8 Tf
29
+ [<44455354494e> 20 <41> 95 <54> 90 <c152494f202f2052454d4554454e5445>] TJ
30
+ ET
31
+
32
+ 7.087 583.654 349.228 22.677 re
33
+ S
34
+
35
+ BT
36
+ 9.086614173228348 600.2327086614175 Td
37
+ /F1.0 6 Tf
38
+ [<4e4f4d452f52415ac3> 55 <4f20534f4349414c>] TJ
39
+ ET
40
+
41
+ 356.315 583.654 138.047 22.677 re
42
+ S
43
+
44
+ BT
45
+ 358.3149606299213 600.2327086614175 Td
46
+ /F1.0 6 Tf
47
+ [<434e504a2f435046>] TJ
48
+ ET
49
+
50
+
51
+ BT
52
+ 358.3149606299213 586.5007086614174 Td
53
+ /F1.0 10 Tf
54
+ [<37312e3035382e3838342f303030312d3833>] TJ
55
+ ET
56
+
57
+ 7.087 560.976 288.000 22.677 re
58
+ S
59
+
60
+ BT
61
+ 9.086614173228348 577.5555433070867 Td
62
+ /F1.0 6 Tf
63
+ [<454e44455245c74f>] TJ
64
+ ET
65
+
66
+
67
+ BT
68
+ 9.086614173228348 563.8235433070867 Td
69
+ /F1.0 10 Tf
70
+ [<>] TJ
71
+ ET
72
+
73
+ 295.087 560.976 136.913 22.677 re
74
+ S
75
+
76
+ BT
77
+ 297.0866141732284 577.5555433070867 Td
78
+ /F1.0 6 Tf
79
+ [<42> 35 <41495252> 40 <4f>] TJ
80
+ ET
81
+
82
+ 432.000 560.976 62.362 22.677 re
83
+ S
84
+
85
+ BT
86
+ 434.00000000000006 577.5555433070867 Td
87
+ /F1.0 6 Tf
88
+ [<434550>] TJ
89
+ ET
90
+
91
+ 7.087 538.299 201.543 22.677 re
92
+ S
93
+
94
+ BT
95
+ 9.086614173228348 554.878377952756 Td
96
+ /F1.0 6 Tf
97
+ [<4d554e4943cd50494f>] TJ
98
+ ET
99
+
100
+ 208.630 538.299 115.087 22.677 re
101
+ S
102
+
103
+ BT
104
+ 210.62992125984258 554.878377952756 Td
105
+ /F1.0 6 Tf
106
+ [<464f4e452f46> 74 <4158>] TJ
107
+ ET
108
+
109
+ 323.717 538.299 32.315 22.677 re
110
+ S
111
+
112
+ BT
113
+ 325.71653543307093 554.878377952756 Td
114
+ /F1.0 6 Tf
115
+ [<5546>] TJ
116
+ ET
117
+
118
+ 356.031 538.299 138.331 22.677 re
119
+ S
120
+
121
+ BT
122
+ 358.0314960629922 554.878377952756 Td
123
+ /F1.0 6 Tf
124
+ [<494e53435249c7c3> 55 <4f20455354> 93 <414455> 40 <414c>] TJ
125
+ ET
126
+
127
+ 507.402 583.654 82.772 22.677 re
128
+ S
129
+
130
+ BT
131
+ 509.4015748031497 600.2327086614175 Td
132
+ /F1.0 6 Tf
133
+ [<44> 40 <41> 111 <54> 93 <412044> 40 <4120454d495353c3> 55 <4f>] TJ
134
+ ET
135
+
136
+ 507.402 560.976 82.772 22.677 re
137
+ S
138
+
139
+ BT
140
+ 509.4015748031497 577.5555433070867 Td
141
+ /F1.0 6 Tf
142
+ [<44> 40 <41> 111 <54> 93 <412044> 40 <4120454e54524144> 40 <412f5341cd44> 40 <41>] TJ
143
+ ET
144
+
145
+ 507.402 538.299 82.772 22.677 re
146
+ S
147
+
148
+ BT
149
+ 509.4015748031497 554.878377952756 Td
150
+ /F1.0 6 Tf
151
+ [<484f524120444520454e54524144> 40 <412f5341cd44> 40 <41>] TJ
152
+ ET
153
+
154
+ Q
155
+
156
+ endstream
157
+ endobj
158
+ 5 0 obj
159
+ << /Type /Page
160
+ /Parent 3 0 R
161
+ /MediaBox [0 0 595.28 841.89]
162
+ /Contents 4 0 R
163
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
164
+ /Font << /F2.0 6 0 R
165
+ /F1.0 7 0 R
166
+ >>
167
+ >>
168
+ >>
169
+ endobj
170
+ 6 0 obj
171
+ << /Type /Font
172
+ /Subtype /Type1
173
+ /BaseFont /Times-Bold
174
+ /Encoding /WinAnsiEncoding
175
+ >>
176
+ endobj
177
+ 7 0 obj
178
+ << /Type /Font
179
+ /Subtype /Type1
180
+ /BaseFont /Times-Roman
181
+ /Encoding /WinAnsiEncoding
182
+ >>
183
+ endobj
184
+ xref
185
+ 0 8
186
+ 0000000000 65535 f
187
+ 0000000015 00000 n
188
+ 0000000109 00000 n
189
+ 0000000158 00000 n
190
+ 0000000215 00000 n
191
+ 0000002183 00000 n
192
+ 0000002375 00000 n
193
+ 0000002473 00000 n
194
+ trailer
195
+ << /Size 8
196
+ /Root 2 0 R
197
+ /Info 1 0 R
198
+ >>
199
+ startxref
200
+ 2572
201
+ %%EOF