ruby_danfe 1.11.5 → 1.13.2

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