ruby_danfe 1.11.5 → 1.13.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f371621258cdb5a61f30f3a2f8a2380872585c35
4
+ data.tar.gz: 7e9f02f772f2baf428af82696ba0e7cdfc980752
5
+ SHA512:
6
+ metadata.gz: efb679811efa892d3ab45d513e68408fd61d2a69e88cd89c63389bafc75d80fb65902cd53d4d810d90ab5bf11fec822b44b175a6e6a30cf07db0458ddc2b44d8
7
+ data.tar.gz: 4c22ac1d6ba1167505670b176d2cea8e7bf4d90c74dde1b6b81dd4f2cfe6d93a81c98e59047e2d40c753c869c52945f0d318b27bd88a46c34129d9216dadb1fb
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ ruby-danfe
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.3.1
@@ -35,7 +35,7 @@ module RubyDanfe
35
35
  private
36
36
  def render_emitente
37
37
  @pdf.ibox 2.27, 7.67, 0.25, 0.54
38
- @pdf.ibox 2.27, 7.67, 0.25, 0.84, '',
38
+ @pdf.ibox 2.27, 7.67, 0.25, 0.74, '',
39
39
  @xml['emit/xNome'],
40
40
  { :align => :center, :size => 9, :border => 0, :style => :bold }
41
41
 
@@ -47,11 +47,15 @@ module RubyDanfe
47
47
  fone = @xml['enderEmit/fone'][0,4] + '-' + @xml['enderEmit/fone'][4,4]
48
48
  end
49
49
  end
50
- @pdf.ibox 2.27, 7.67, 0.25, 1.30, '',
50
+ @pdf.ibox 2.27, 7.67, 0.25, 1.20, '',
51
51
  @xml['enderEmit/xLgr'] + ", " + @xml['enderEmit/nro'] + " " + @xml['enderEmit/xCpl'] + "\n" +
52
52
  @xml['enderEmit/xMun'] + " - " + @xml['enderEmit/UF'] + " " + @xml['enderEmit/xPais'] + "\n" +
53
53
  "Fone/Fax: " + fone,
54
54
  { :align => :center, :size => 8, :border => 0, :style => :bold }
55
+
56
+ @pdf.ibox 2.27, 7.67, 0.25, 2.30, '',
57
+ "CNPJ: " + Helper.format_cnpj(@xml['emit/CNPJ']) + " " + "IE: " + @xml['emit/IE'],
58
+ { :align => :center, :size => 7, :border => 0, :style => :bold }
55
59
  end
56
60
 
57
61
  def render_tipo_cte
@@ -164,7 +168,7 @@ module RubyDanfe
164
168
  @pdf.ibox 0.90, 3.00, 6.50, 8.02, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
165
169
  @pdf.ibox 0.90, 3.00, 7.20, 8.02, '', @xml['enderReme/CEP'][0,2] + '.' + @xml['enderReme/CEP'][3,3] + '-' + @xml['enderReme/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml['enderReme/CEP'] != ''
166
170
  @pdf.ibox 0.90, 10.00, 0.28, 8.41, '', 'CNPJ/CPF: ', { :size => 7, :border => 0, :style => :italic }
167
- @pdf.ibox 0.90, 10.00, 1.88, 8.41, '', @xml['rem/CNPJ'][0,2] + '.' + @xml['rem/CNPJ'][2,3] + '.' + @xml['rem/CNPJ'][5,3] + '/' + @xml['rem/CNPJ'][8,4] + '-' + @xml['rem/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['rem/CNPJ'] != ''
171
+ @pdf.ibox 0.90, 10.00, 1.88, 8.41, '', Helper.format_cnpj(@xml['rem/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['rem/CNPJ'] != ''
168
172
  @pdf.ibox 0.90, 10.00, 1.88, 8.41, '', @xml['rem/CPF'][0,3] + '.' + @xml['rem/CPF'][3,3] + '.' + @xml['rem/CPF'][6,3] + '-' + @xml['rem/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['rem/CPF'] != ''
169
173
  @pdf.ibox 0.90, 3.50, 6.50, 8.41, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
170
174
  @pdf.ibox 0.90, 3.50, 7.85, 8.41, '', @xml['rem/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -194,7 +198,7 @@ module RubyDanfe
194
198
  @pdf.ibox 0.90, 3.00, 16.75, 8.02, '', 'CEP: ' , { :size => 7, :border => 0, :style => :italic }
195
199
  @pdf.ibox 0.90, 3.00, 17.40, 8.02, '', @xml['enderDest/CEP'][0,2] + '.' + @xml['enderDest/CEP'][3,3] + '-' + @xml['enderDest/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml['enderDest/CEP'] != ''
196
200
  @pdf.ibox 0.90, 10.00, 10.53, 8.41, '', 'CNPJ/CPF: ', { :size => 7, :border => 0, :style => :italic }
197
- @pdf.ibox 0.90, 10.00, 12.10, 8.41, '', @xml['dest/CNPJ'][0,2] + '.' + @xml['dest/CNPJ'][2,3] + '.' + @xml['dest/CNPJ'][5,3] + '/' + @xml['dest/CNPJ'][8,4] + '-' + @xml['dest/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['dest/CNPJ'] != ''
201
+ @pdf.ibox 0.90, 10.00, 12.10, 8.41, '', Helper.format_cnpj(@xml['dest/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['dest/CNPJ'] != ''
198
202
  @pdf.ibox 0.90, 10.00, 12.10, 8.41, '', @xml['dest/CPF'][0,3] + '.' + @xml['dest/CPF'][3,3] + '.' + @xml['dest/CPF'][6,3] + '-' + @xml['dest/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['dest/CPF'] != ''
199
203
  @pdf.ibox 0.90, 3.50, 16.75, 8.41, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
200
204
  @pdf.ibox 0.90, 3.50, 18.05, 8.41, '', @xml['dest/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -224,7 +228,7 @@ module RubyDanfe
224
228
  @pdf.ibox 0.90, 3.00, 6.50, 10.78, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
225
229
  @pdf.ibox 0.90, 3.00, 7.20, 10.78, '', @xml['enderExped/CEP'][0,2] + '.' + @xml['enderExped/CEP'][3,3] + '-' + @xml['enderExped/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml['enderExped/CEP'] != ''
226
230
  @pdf.ibox 0.90, 10.00, 0.28, 11.17, '', 'CNPJ/CPF: ', { :size => 7, :border => 0, :style => :italic }
227
- @pdf.ibox 0.90, 10.00, 1.88, 11.17, '', @xml['exped/CNPJ'][0,2] + '.' + @xml['exped/CNPJ'][2,3] + '.' + @xml['exped/CNPJ'][5,3] + '/' + @xml['exped/CNPJ'][8,4] + '-' + @xml['exped/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['exped/CNPJ'] != ''
231
+ @pdf.ibox 0.90, 10.00, 1.88, 11.17, '', Helper.format_cnpj(@xml['exped/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['exped/CNPJ'] != ''
228
232
  @pdf.ibox 0.90, 10.00, 1.88, 11.17, '', @xml['exped/CPF'][0,3] + '.' + @xml['exped/CPF'][3,3] + '.' + @xml['exped/CPF'][6,3] + '-' + @xml['exped/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['exped/CPF'] != ''
229
233
  @pdf.ibox 0.90, 3.50, 6.50, 11.17, '', 'Inscr. Est.:' , { :size => 7, :border => 0, :style => :italic }
230
234
  @pdf.ibox 0.90, 3.50, 7.85, 11.17, '', @xml['exped/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -254,7 +258,7 @@ module RubyDanfe
254
258
  @pdf.ibox 0.90, 3.00, 16.75, 10.78, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
255
259
  @pdf.ibox 0.90, 3.00, 17.40, 10.78, '', @xml['enderReceb/CEP'][0,2] + '.' + @xml['enderReceb/CEP'][3,3] + '-' + @xml['enderReceb/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml['enderReceb/CEP'] != ''
256
260
  @pdf.ibox 0.90, 10.00, 10.53, 11.17, '', 'CNPJ/CPF: ', { :size => 7, :border => 0, :style => :italic }
257
- @pdf.ibox 0.90, 10.00, 12.10, 11.17, '', @xml['receb/CNPJ'][0,2] + '.' + @xml['receb/CNPJ'][2,3] + '.' + @xml['receb/CNPJ'][5,3] + '/' + @xml['receb/CNPJ'][8,4] + '-' + @xml['receb/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['receb/CNPJ'] != ''
261
+ @pdf.ibox 0.90, 10.00, 12.10, 11.17, '', Helper.format_cnpj(@xml['receb/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['receb/CNPJ'] != ''
258
262
  @pdf.ibox 0.90, 10.00, 12.10, 11.17, '', @xml['receb/CPF'][0,3] + '.' + @xml['receb/CPF'][3,3] + '.' + @xml['receb/CPF'][6,3] + '-' + @xml['receb/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['receb/CPF'] != ''
259
263
  @pdf.ibox 0.90, 3.50, 16.75, 11.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
260
264
  @pdf.ibox 0.90, 3.50, 18.05, 11.17, '', @xml['receb/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -310,7 +314,7 @@ module RubyDanfe
310
314
  @pdf.ibox 0.90, 5.00, 16.50, 12.81, '', 'País: ' , { :size => 7, :border => 0, :style => :italic }
311
315
  @pdf.ibox 0.90, 5.00, 17.50, 12.81, '', @xml['enderToma/xPais'], { :size => 7, :border => 0, :style => :bold }
312
316
  @pdf.ibox 0.90, 5.00, 0.28, 13.17, '', 'CNPJ/CPF: ' , { :size => 7, :border => 0, :style => :italic }
313
- @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', @xml['toma4/CNPJ'][0,2] + '.' + @xml['toma4/CNPJ'][2,3] + '.' + @xml['toma4/CNPJ'][5,3] + '/' + @xml['toma4/CNPJ'][8,4] + '-' + @xml['toma4/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['toma4/CNPJ'] != ''
317
+ @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', Helper.format_cnpj(@xml['toma4/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['toma4/CNPJ'] != ''
314
318
  @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', @xml['toma4/CPF'][0,3] + '.' + @xml['toma4/CPF'][3,3] + '.' + @xml['toma4/CPF'][6,3] + '-' + @xml['toma4/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['toma4/CPF'] != ''
315
319
  @pdf.ibox 0.90, 5.00, 5.60, 13.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
316
320
  @pdf.ibox 0.90, 5.00, 7.20, 13.17, '', @xml['toma4/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -337,7 +341,7 @@ module RubyDanfe
337
341
  @pdf.ibox 0.90, 5.00, 16.50, 12.81, '', 'País: ' , { :size => 7, :border => 0, :style => :italic }
338
342
  @pdf.ibox 0.90, 5.00, 17.50, 12.81, '', @xml[endereco + '/xPais'], { :size => 7, :border => 0, :style => :bold }
339
343
  @pdf.ibox 0.90, 5.00, 0.28, 13.17, '', 'CNPJ/CPF: ' , { :size => 7, :border => 0, :style => :italic }
340
- @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', @xml[toma + '/CNPJ'][0,2] + '.' + @xml[toma + '/CNPJ'][2,3] + '.' + @xml[toma + '/CNPJ'][5,3] + '/' + @xml[toma + '/CNPJ'][8,4] + '-' + @xml[toma + '/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml[toma + '/CNPJ'] != ''
344
+ @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', Helper.format_cnpj(@xml[toma + '/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml[toma + '/CNPJ'] != ''
341
345
  @pdf.ibox 0.90, 5.00, 1.88, 13.17, '', @xml[toma + '/CPF'][0,3] + '.' + @xml[toma + '/CPF'][3,3] + '.' + @xml[toma + '/CPF'][6,3] + '-' + @xml[toma + '/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml[toma + '/CPF'] != ''
342
346
  @pdf.ibox 0.90, 5.00, 5.60, 13.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
343
347
  @pdf.ibox 0.90, 5.00, 7.20, 13.17, '', @xml[toma + '/IE'], { :size => 7, :border => 0, :style => :bold }
@@ -358,7 +362,7 @@ module RubyDanfe
358
362
  #@pdf.ibox 0.92, 20.49, 0.25, 13.82
359
363
  @pdf.ibox 0.90, 6.83, 0.25, 13.82, 'PRODUTO PREDOMINANTE', @xml['infCarga/proPred'], {:size => 7, :style => :bold }
360
364
  @pdf.ibox 0.90, 6.83, 7.09, 13.82, 'OUTRAS CARACTERÍSTICAS DA CARGA', @xml['infCarga/xOutCat'], {:size => 7, :style => :bold }
361
- @pdf.ibox 0.90, 6.82, 13.92, 13.82, 'VALOR TOTAL DA MERCADORIA', '0,00', {:size => 7, :style => :bold }
365
+ @pdf.ibox 0.90, 6.82, 13.92, 13.82, 'VALOR TOTAL DA MERCADORIA', @xml['infCarga/vCarga'].empty? ? '0,00' : @xml['infCarga/vCarga'], {:size => 7, :style => :bold }
362
366
  end
363
367
 
364
368
  def render_quantidade
@@ -461,25 +465,39 @@ module RubyDanfe
461
465
  def render_documentos_originarios
462
466
  #documentos originários
463
467
  @pdf.ibox 0.40, 20.49, 0.25, 18.73, '', 'DOCUMENTOS ORIGINÁRIOS', { :align => :left, :size => 7, :style => :bold, :border => 0 }
464
- @pdf.ibox 5.52, 2.25, 0.25, 19.13, 'TP DOC.', '', { :size => 7}
465
- @pdf.ibox 5.52, 4.00, 2.50, 19.13, 'CNPJ/CPF EMITENTE', '', { :size => 7}
466
- @pdf.ibox 5.52, 1.50, 6.50, 19.13, 'SÉRIE', '', { :size => 7}
467
- @pdf.ibox 5.52, 2.50, 8.00, 19.13, 'Nº DOCUMENTO', '', { :size => 7}
468
- @pdf.ibox 5.52, 2.25, 10.50, 19.13, 'TP DOC.', '', { :size => 7}
469
- @pdf.ibox 5.52, 4.00, 12.75, 19.13, 'CNPJ/CPF EMITENTE', '', { :size => 7}
470
- @pdf.ibox 5.52, 1.50, 16.75, 19.13, 'SÉRIE', '', { :size => 7}
471
- @pdf.ibox 5.52, 2.50, 18.24, 19.13, 'Nº DOCUMENTO', '', { :size => 7}
468
+ @pdf.ibox 5.52, 1.75, 0.25, 19.13, 'TP DOC.', '', { :size => 7}
469
+ @pdf.ibox 5.52, 5.50, 2.00, 19.13, 'CNPJ/CPF EMITENTE/CHAVE', '', { :size => 7}
470
+ @pdf.ibox 5.52, 1.00, 7.50, 19.13, 'SÉRIE', '', { :size => 7}
471
+ @pdf.ibox 5.52, 2.00, 8.50, 19.13, 'Nº DOCUMENTO', '', { :size => 7}
472
+ @pdf.ibox 5.52, 1.75, 10.50, 19.13, 'TP DOC.', '', { :size => 7}
473
+ @pdf.ibox 5.52, 5.50, 12.25, 19.13, 'CNPJ/CPF EMITENTE/CHAVE', '', { :size => 7}
474
+ @pdf.ibox 5.52, 1.00, 17.75, 19.13, 'SÉRIE', '', { :size => 7}
475
+ @pdf.ibox 5.52, 2.00, 18.74, 19.13, 'Nº DOCUMENTO', '', { :size => 7}
472
476
  x = 0.25
473
477
  @xml.collect('xmlns', 'infNF') { |det|
474
- @pdf.ibox 5.52, 2.25, x, 19.43, '', det.css('mod').text, { :size => 7, :border => 0, :style => :bold }
475
- x = x + 2.25
476
- @pdf.ibox 5.52, 2.25, x, 19.43, '', @xml['rem/CNPJ'][0,2] + '.' + @xml['rem/CNPJ'][2,3] + '.' +@xml['rem/CNPJ'][5,3] + '/' + @xml['rem/CNPJ'][8,4] + '-' + @xml['rem/CNPJ'][12,2], { :size => 7, :border => 0, :style => :bold } if @xml['rem/CNPJ'] != ''
477
- @pdf.ibox 5.52, 2.25, x, 19.43, '', @xml['rem/CPF'][0,3] + '.' + @xml['rem/CPF'][3,3] + '.' +@xml['rem/CPF'][6,3] + '-' + @xml['rem/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['rem/CPF'] != ''
478
- x = x + 4.00
479
- @pdf.ibox 5.52, 2.25, x, 19.43, '', det.css('serie').text, { :size => 7, :border => 0, :style => :bold }
480
- x = x + 1.50
481
- @pdf.ibox 5.52, 2.25, x, 19.43, '', det.css('nDoc').text, { :size => 7, :border => 0, :style => :bold }
482
- x = x + 2.50
478
+ @pdf.ibox 5.52, 1.50, x, 19.43, '', det.css('mod').text, { :size => 7, :border => 0, :style => :bold }
479
+ x = x + 1.75
480
+ @pdf.ibox 5.52, 2.25, x, 19.43, '', Helper.format_cnpj(@xml['rem/CNPJ']), { :size => 7, :border => 0, :style => :bold } if @xml['rem/CNPJ'] != ''
481
+ @pdf.ibox 5.52, 5.25, x, 19.43, '', @xml['rem/CPF'][0,3] + '.' + @xml['rem/CPF'][3,3] + '.' +@xml['rem/CPF'][6,3] + '-' + @xml['rem/CPF'][9,2], { :size => 7, :border => 0, :style => :bold } if @xml['rem/CPF'] != ''
482
+ x = x + 5.50
483
+ @pdf.ibox 5.52, 0.75, x, 19.43, '', det.css('serie').text, { :size => 7, :border => 0, :style => :bold }
484
+ x = x + 1.00
485
+ @pdf.ibox 5.52, 1.75, x, 19.43, '', det.css('nDoc').text, { :size => 7, :border => 0, :style => :bold }
486
+ x = x + 2.00
487
+ }
488
+ # NFe
489
+ @xml.collect('xmlns', 'infNFe') { |det|
490
+ chave = det.css('chave').text
491
+ unless chave.empty?
492
+ @pdf.ibox 5.52, 1.50, x, 19.43, '', 'NFe', { :size => 7, :border => 0, :style => :bold }
493
+ x = x + 1.75
494
+ @pdf.ibox 5.52, 5.25, x, 19.43, '', chave, { :size => 6, :border => 0, :style => :bold }
495
+ x = x + 5.50
496
+ @pdf.ibox 5.52, 0.75, x, 19.43, '', chave[22, 3], { :size => 7, :border => 0, :style => :bold }
497
+ x = x + 1.00
498
+ @pdf.ibox 5.52, 1.75, x, 19.43, '', chave[25, 9].gsub(/^[0]+/, ''), { :size => 7, :border => 0, :style => :bold }
499
+ x = x + 2.00
500
+ end
483
501
  }
484
502
  end
485
503
 
@@ -24,7 +24,7 @@ module RubyDanfe
24
24
 
25
25
  @pdf.page_count.times do |i|
26
26
  @pdf.go_to_page(i + 1)
27
- @pdf.ibox 1.00, 3.08, 7.71, 5.54, '',
27
+ @pdf.ibox 1.00, 3.08, 6.71, 5.54, '',
28
28
  "FOLHA #{i + 1} de #{@pdf.page_count}", {:size => 8, :align => :center, :valign => :center, :border => 0, :style => :bold}
29
29
  end
30
30
 
@@ -44,31 +44,31 @@ module RubyDanfe
44
44
  end
45
45
 
46
46
  def render_emitente
47
- @pdf.ibox 3.92, 7.46, 0.25, 2.54, '',
47
+ @pdf.ibox 3.92, 6.46, 0.25, 2.54, '',
48
48
  @xml['emit/xNome'] + "\n" +
49
49
  @xml['enderEmit/xLgr'] + ", " + @xml['enderEmit/nro'] + "\n" +
50
50
  @xml['enderEmit/xBairro'] + " - " + @xml['enderEmit/CEP'] + "\n" +
51
51
  @xml['enderEmit/xMun'] + "/" + @xml['enderEmit/UF'] + "\n" +
52
52
  @xml['enderEmit/fone'] + " " + @xml['enderEmit/email'], {:align => :center, :valign => :center}
53
53
 
54
- @pdf.ibox 3.92, 3.08, 7.71, 2.54
54
+ @pdf.ibox 3.92, 3.08, 6.71, 2.54
55
55
 
56
- @pdf.ibox 0.60, 3.08, 7.71, 2.54, '', "DANFE", {:size => 12, :align => :center, :border => 0, :style => :bold}
57
- @pdf.ibox 1.20, 3.08, 7.71, 3.14, '', "DOCUMENTO AUXILIAR DA NOTA FISCAL ELETRÔNICA", {:size => 8, :align => :center, :border => 0}
58
- @pdf.ibox 0.60, 3.08, 7.71, 4.34, '', "#{@xml['ide/tpNF']} - " + (@xml['ide/tpNF'] == '0' ? 'ENTRADA' : 'SAÍDA'), {:size => 8, :align => :center, :border => 0}
56
+ @pdf.ibox 0.60, 3.08, 6.71, 2.54, '', "DANFE", {:size => 12, :align => :center, :border => 0, :style => :bold}
57
+ @pdf.ibox 1.20, 3.08, 6.71, 3.14, '', "DOCUMENTO AUXILIAR DA NOTA FISCAL ELETRÔNICA", {:size => 8, :align => :center, :border => 0}
58
+ @pdf.ibox 0.60, 3.08, 6.71, 4.34, '', "#{@xml['ide/tpNF']} - " + (@xml['ide/tpNF'] == '0' ? 'ENTRADA' : 'SAÍDA'), {:size => 8, :align => :center, :border => 0}
59
59
 
60
- @pdf.ibox 1.00, 3.08, 7.71, 4.94, '',
60
+ @pdf.ibox 1.00, 3.08, 6.71, 4.94, '',
61
61
  "N°. " + @xml['ide/nNF'] + "\n" +
62
62
  "SÉRIE " + @xml['ide/serie'], {:size => 8, :align => :center, :valign => :center, :border => 0, :style => :bold}
63
63
 
64
- @pdf.ibox 2.20, 10.02, 10.79, 2.54
65
- @pdf.ibarcode 1.50, 8.00, 10.9010, 4.44, @xml['chNFe']
66
- @pdf.ibox 0.85, 10.02, 10.79, 4.74, "CHAVE DE ACESSO", @xml['chNFe'].gsub(/(\d)(?=(\d\d\d\d)+(?!\d))/, "\\1 "), {:style => :bold, :align => :center}
67
- @pdf.ibox 0.85, 10.02, 10.79, 5.60 , '', "Consulta de autenticidade no portal nacional da NF-e www.nfe.fazenda.gov.br/portal ou no site da Sefaz Autorizadora", {:align => :center, :size => 8}
64
+ @pdf.ibox 2.20, 11.02, 9.79, 2.54
65
+ @pdf.ibarcode 1.50, 8.00, 10.4010, 4.44, @xml['chNFe']
66
+ @pdf.ibox 0.85, 11.02, 9.79, 4.74, "CHAVE DE ACESSO", @xml['chNFe'].gsub(/(\d)(?=(\d\d\d\d)+(?!\d))/, "\\1 "), {:style => :bold, :align => :center}
67
+ @pdf.ibox 0.85, 11.02, 9.79, 5.60 , '', "Consulta de autenticidade no portal nacional da NF-e www.nfe.fazenda.gov.br/portal ou no site da Sefaz Autorizadora", {:align => :center, :size => 8}
68
68
  @pdf.ibox 0.85, 10.54, 0.25, 6.46, "NATUREZA DA OPERAÇÃO", @xml['ide/natOp']
69
69
  @pdf.ibox 0.85, 10.02, 10.79, 6.46, "PROTOCOLO DE AUTORIZAÇÃO DE USO", @xml['infProt/nProt'] + ' ' + Helper.format_datetime(@xml['infProt/dhRecbto']) , {:align => :center}
70
70
  @pdf.ibox 0.85, 6.86, 0.25, 7.31, "INSCRIÇÃO ESTADUAL", @xml['emit/IE']
71
- @pdf.ibox 0.85, 6.86, 7.11, 7.31, "INSC.ESTADUAL DO SUBST. TRIBUTÁRIO", @xml['emit/IE_ST']
71
+ @pdf.ibox 0.85, 6.86, 7.11, 7.31, "INSC.ESTADUAL DO SUBST. TRIBUTÁRIO", @xml['emit/IEST']
72
72
  @pdf.ibox 0.85, 6.84, 13.97, 7.31, "CNPJ", @xml['emit/CNPJ']
73
73
  end
74
74
 
@@ -181,9 +181,9 @@ module RubyDanfe
181
181
  @pdf.ititle 0.42, 10.00, 0.25, 24.64, "CÁLCULO DO ISSQN"
182
182
 
183
183
  @pdf.ibox 0.85, 5.08, 0.25, 25.06, "INSCRIÇÃO MUNICIPAL", @xml['emit/IM']
184
- @pdf.ibox 0.85, 5.08, 5.33, 25.06, "VALOR TOTAL DOS SERVIÇOS", @xml['total/vServ']
185
- @pdf.ibox 0.85, 5.08, 10.41, 25.06, "BASE DE CÁLCULO DO ISSQN", @xml['total/vBCISS']
186
- @pdf.ibox 0.85, 5.28, 15.49, 25.06, "VALOR DO ISSQN", @xml['total/ISSTot']
184
+ @pdf.ibox 0.85, 5.08, 5.33, 25.06, "VALOR TOTAL DOS SERVIÇOS", @xml['total/vServ'] || @xml['total/ISSQNtot/vServ']
185
+ @pdf.ibox 0.85, 5.08, 10.41, 25.06, "BASE DE CÁLCULO DO ISSQN", @xml['total/vBCISS'] || @xml['total/ISSQNtot/vBC']
186
+ @pdf.ibox 0.85, 5.28, 15.49, 25.06, "VALOR DO ISSQN", @xml['total/ISSTot'] || @xml['total/ISSQNtot/vISSQN']
187
187
  end
188
188
 
189
189
  def render_dados_adicionais
@@ -25,7 +25,7 @@ module RubyDanfe
25
25
  formated_datetime = ""
26
26
 
27
27
  if not string.empty?
28
- date = DateTime.strptime(string, "%Y-%m-%dT%H:%M:%S")
28
+ date = extract_date_time(string)
29
29
  formated_datetime = date.strftime("%d/%m/%Y %H:%M:%S")
30
30
  end
31
31
 
@@ -58,11 +58,32 @@ module RubyDanfe
58
58
  formated_time = ""
59
59
 
60
60
  if not string.empty?
61
- date = DateTime.strptime(string, "%Y-%m-%dT%H:%M:%S")
61
+ date = extract_date_time(string)
62
62
  formated_time = date.strftime("%H:%M:%S")
63
63
  end
64
64
 
65
65
  formated_time
66
66
  end
67
+
68
+ def self.format_cnpj(string)
69
+ formated_cnpj = ""
70
+
71
+ if not (string.empty? || string.size != 14)
72
+ formated_cnpj = string[0,2] + '.' + string[2,3] + '.' + string[5,3] +
73
+ '/' + string[8,4] + '-' + string[12,2]
74
+ end
75
+
76
+ formated_cnpj
77
+ end
78
+
79
+ private
80
+
81
+ def self.extract_date_time(string)
82
+ begin
83
+ DateTime.strptime(string, "%Y-%m-%dT%H:%M:%S")
84
+ rescue ArgumentError
85
+ DateTime.strptime(string, "%d/%m/%Y %H:%M:%S")
86
+ end
87
+ end
67
88
  end
68
89
  end
@@ -1,3 +1,3 @@
1
1
  module RubyDanfe
2
- VERSION = "1.11.5"
2
+ VERSION = "1.13.2"
3
3
  end
@@ -11,7 +11,7 @@ module RubyDanfe
11
11
 
12
12
  def regex_string(search_string, regex)
13
13
  doc = Nokogiri::HTML(search_string)
14
- return doc.xpath(regex)
14
+ return doc.xpath(regex)
15
15
  end
16
16
 
17
17
  def initialize(xml)
data/ruby_danfe.gemspec CHANGED
@@ -16,12 +16,12 @@ Gem::Specification.new do |spec|
16
16
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "nokogiri"
19
+ spec.add_dependency "nokogiri", "~> 1.6.3.1"
20
20
  spec.add_dependency "prawn", '~> 1.0.0'
21
21
  spec.add_dependency "barby"
22
22
  spec.add_dependency "rake"
23
23
 
24
24
  spec.add_development_dependency "pry"
25
- spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "rspec", "~> 3.0.0"
26
26
  spec.add_development_dependency "simplecov"
27
27
  end
@@ -10,7 +10,7 @@ describe "RubyDanfe generated pdf files" do
10
10
  }
11
11
 
12
12
  it "renders a basic NF-e with namespace" do
13
- expect(File.exist?(output_pdf)).to be_false
13
+ expect(File.exist?(output_pdf)).to be_falsey
14
14
 
15
15
  RubyDanfe.generate(output_pdf, "#{base_dir}nfe_with_ns.xml")
16
16
 
@@ -18,7 +18,7 @@ describe "RubyDanfe generated pdf files" do
18
18
  end
19
19
 
20
20
  it "renders another basic NF-e without namespace" do
21
- expect(File.exist?(output_pdf)).to be_false
21
+ expect(File.exist?(output_pdf)).to be_falsey
22
22
 
23
23
  RubyDanfe.generate(output_pdf, "#{base_dir}nfe_without_ns.xml")
24
24
 
@@ -26,7 +26,7 @@ describe "RubyDanfe generated pdf files" do
26
26
  end
27
27
 
28
28
  it "renders a NF-e having FCI in its items" do
29
- expect(File.exist?(output_pdf)).to be_false
29
+ expect(File.exist?(output_pdf)).to be_falsey
30
30
 
31
31
  RubyDanfe.generate(output_pdf, "#{base_dir}nfe_with_fci.xml")
32
32
 
@@ -34,7 +34,7 @@ describe "RubyDanfe generated pdf files" do
34
34
  end
35
35
 
36
36
  it "renders a NF-e of Simples Nacional using CSOSN" do
37
- expect(File.exist?(output_pdf)).to be_false
37
+ expect(File.exist?(output_pdf)).to be_falsey
38
38
 
39
39
  RubyDanfe.generate(output_pdf, "#{base_dir}nfe_simples_nacional.xml")
40
40
 
@@ -42,7 +42,7 @@ describe "RubyDanfe generated pdf files" do
42
42
  end
43
43
 
44
44
  it "renders a basic CT-e" do
45
- expect(File.exist?(output_pdf)).to be_false
45
+ expect(File.exist?(output_pdf)).to be_falsey
46
46
 
47
47
  RubyDanfe.generate(output_pdf, "#{base_dir}cte.xml", :dacte)
48
48
 
@@ -50,7 +50,7 @@ describe "RubyDanfe generated pdf files" do
50
50
  end
51
51
 
52
52
  it "renders quantity field with 4 decimals" do
53
- expect(File.exist?(output_pdf)).to be_false
53
+ expect(File.exist?(output_pdf)).to be_falsey
54
54
 
55
55
  RubyDanfe.generate(output_pdf, "#{base_dir}4_decimals_nfe_simples_nacional.xml", :danfe, {"quantity_decimals" => 4})
56
56
 
@@ -2,9 +2,18 @@ require "spec_helper"
2
2
 
3
3
  describe RubyDanfe::Helper do
4
4
  describe ".format_datetime" do
5
- it "returns a formated string" do
6
- string = "2013-10-18T13:54:04"
7
- expect(RubyDanfe::Helper.format_datetime(string)).to eq "18/10/2013 13:54:04"
5
+ context "when date format is %Y-%m-%d" do
6
+ it "returns a formated string" do
7
+ string = "2013-10-18T13:54:04"
8
+ expect(RubyDanfe::Helper.format_datetime(string)).to eq "18/10/2013 13:54:04"
9
+ end
10
+ end
11
+
12
+ context "when date format is %d/%m/%Y" do
13
+ it "returns a formated string" do
14
+ string = "25/02/2016 09:22:26"
15
+ expect(RubyDanfe::Helper.format_datetime(string)).to eq "25/02/2016 09:22:26"
16
+ end
8
17
  end
9
18
  end
10
19
 
@@ -85,4 +94,20 @@ describe RubyDanfe::Helper do
85
94
  end
86
95
  end
87
96
  end
97
+
98
+ describe ".format_cnpj" do
99
+ context "with a valid cnpj" do
100
+ it "returns a formated string" do
101
+ string = "15704602000105"
102
+ expect(RubyDanfe::Helper.format_cnpj(string)).to eq "15.704.602/0001-05"
103
+ end
104
+ end
105
+
106
+ context "with an invalid cnpj" do
107
+ it "returns an empty string" do
108
+ string = "157046020"
109
+ expect(RubyDanfe::Helper.format_cnpj(string)).to eq ""
110
+ end
111
+ end
112
+ end
88
113
  end
@@ -11,7 +11,7 @@ describe RubyDanfe do
11
11
 
12
12
  describe ".generate" do
13
13
  it "saves the PDF document to file based on a xml file" do
14
- expect(File.exist?(output_pdf)).to be_false
14
+ expect(File.exist?(output_pdf)).to be_falsey
15
15
 
16
16
  RubyDanfe.generate(output_pdf, "#{base_dir}nfe_with_ns.xml")
17
17
 
@@ -25,13 +25,13 @@ describe RubyDanfe do
25
25
 
26
26
  pdf_string = RubyDanfe.render(xml_string)
27
27
 
28
- expect(pdf_string).to include "%PDF-1.3\n%\xFF\xFF\xFF\xFF\n1 0 obj\n<< /Creator <"
28
+ expect(pdf_string).to include '%PDF-1.3'
29
29
  end
30
30
  end
31
31
 
32
32
  describe ".render_file" do
33
33
  it "renders the PDF document to file based on a xml string" do
34
- expect(File.exist?(output_pdf)).to be_false
34
+ expect(File.exist?(output_pdf)).to be_falsey
35
35
 
36
36
  xml_string = File.new("#{base_dir}nfe_with_ns.xml")
37
37
 
metadata CHANGED
@@ -1,126 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_danfe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.5
5
- prerelease:
4
+ version: 1.13.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Eduardo Reboucas
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-08-04 00:00:00.000000000 Z
11
+ date: 2017-02-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 1.6.3.1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 1.6.3.1
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: prawn
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: 1.0.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: 1.0.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: barby
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: pry
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
- version: '0'
89
+ version: 3.0.0
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
- version: '0'
96
+ version: 3.0.0
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: simplecov
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - ">="
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  description:
@@ -129,8 +114,10 @@ executables: []
129
114
  extensions: []
130
115
  extra_rdoc_files: []
131
116
  files:
132
- - .gitignore
133
- - .rspec
117
+ - ".gitignore"
118
+ - ".rspec"
119
+ - ".ruby-gemset"
120
+ - ".ruby-version"
134
121
  - Gemfile
135
122
  - README.md
136
123
  - Rakefile
@@ -174,26 +161,48 @@ files:
174
161
  homepage: http://github.com/taxweb/ruby_danfe
175
162
  licenses:
176
163
  - MIT
164
+ metadata: {}
177
165
  post_install_message:
178
166
  rdoc_options: []
179
167
  require_paths:
180
168
  - lib
181
169
  required_ruby_version: !ruby/object:Gem::Requirement
182
- none: false
183
170
  requirements:
184
- - - ! '>='
171
+ - - ">="
185
172
  - !ruby/object:Gem::Version
186
173
  version: '0'
187
174
  required_rubygems_version: !ruby/object:Gem::Requirement
188
- none: false
189
175
  requirements:
190
- - - ! '>='
176
+ - - ">="
191
177
  - !ruby/object:Gem::Version
192
178
  version: '0'
193
179
  requirements: []
194
180
  rubyforge_project:
195
- rubygems_version: 1.8.25
181
+ rubygems_version: 2.5.1
196
182
  signing_key:
197
- specification_version: 3
183
+ specification_version: 4
198
184
  summary: DANFE and DACTE pdf generator for Brazilian invoices and transportation docs.
199
- test_files: []
185
+ test_files:
186
+ - spec/features/ruby_danfe_spec.rb
187
+ - spec/fixtures/4_decimals_nfe_simples_nacional.xml
188
+ - spec/fixtures/cte.xml
189
+ - spec/fixtures/nfe_date_format_infoadprod_infoadfisco_issues.xml
190
+ - spec/fixtures/nfe_simples_nacional.xml
191
+ - spec/fixtures/nfe_with_fci.xml
192
+ - spec/fixtures/nfe_with_ns.xml
193
+ - spec/fixtures/nfe_without_ns.xml
194
+ - spec/lib/cst_spec.rb
195
+ - spec/lib/descricao_spec.rb
196
+ - spec/lib/helper_spec.rb
197
+ - spec/lib/options_spec.rb
198
+ - spec/lib/ruby_danfe_spec.rb
199
+ - spec/spec_helper.rb
200
+ - spec/support/be_same_file_as.rb
201
+ - test/danfe.xml
202
+ - test/generate.rb
203
+ - test/generate_nfce.rb
204
+ - test/nfce.xml
205
+ - test/nfe_simples_nacional.xml
206
+ - test/nfe_with_fci.xml
207
+ - test/nfe_with_ns.xml
208
+ - test/nfe_without_ns.xml