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 +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/lib/ruby_danfe/dacte_generator.rb +44 -26
- data/lib/ruby_danfe/danfe_generator.rb +15 -15
- data/lib/ruby_danfe/helper.rb +23 -2
- data/lib/ruby_danfe/version.rb +1 -1
- data/lib/ruby_danfe/xml.rb +1 -1
- data/ruby_danfe.gemspec +2 -2
- data/spec/features/ruby_danfe_spec.rb +6 -6
- data/spec/lib/helper_spec.rb +28 -3
- data/spec/lib/ruby_danfe_spec.rb +3 -3
- metadata +53 -44
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.
|
|
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.
|
|
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, '',
|
|
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, '',
|
|
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, '',
|
|
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, '',
|
|
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, '',
|
|
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, '',
|
|
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,
|
|
465
|
-
@pdf.ibox 5.52,
|
|
466
|
-
@pdf.ibox 5.52, 1.
|
|
467
|
-
@pdf.ibox 5.52, 2.
|
|
468
|
-
@pdf.ibox 5.52,
|
|
469
|
-
@pdf.ibox 5.52,
|
|
470
|
-
@pdf.ibox 5.52, 1.
|
|
471
|
-
@pdf.ibox 5.52, 2.
|
|
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,
|
|
475
|
-
x = x +
|
|
476
|
-
@pdf.ibox 5.52, 2.25, x, 19.43, '',
|
|
477
|
-
@pdf.ibox 5.52,
|
|
478
|
-
x = x +
|
|
479
|
-
@pdf.ibox 5.52,
|
|
480
|
-
x = x + 1.
|
|
481
|
-
@pdf.ibox 5.52,
|
|
482
|
-
x = x + 2.
|
|
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,
|
|
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,
|
|
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,
|
|
54
|
+
@pdf.ibox 3.92, 3.08, 6.71, 2.54
|
|
55
55
|
|
|
56
|
-
@pdf.ibox 0.60, 3.08,
|
|
57
|
-
@pdf.ibox 1.20, 3.08,
|
|
58
|
-
@pdf.ibox 0.60, 3.08,
|
|
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,
|
|
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,
|
|
65
|
-
@pdf.ibarcode 1.50, 8.00, 10.
|
|
66
|
-
@pdf.ibox 0.85,
|
|
67
|
-
@pdf.ibox 0.85,
|
|
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/
|
|
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
|
data/lib/ruby_danfe/helper.rb
CHANGED
|
@@ -25,7 +25,7 @@ module RubyDanfe
|
|
|
25
25
|
formated_datetime = ""
|
|
26
26
|
|
|
27
27
|
if not string.empty?
|
|
28
|
-
date =
|
|
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 =
|
|
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
|
data/lib/ruby_danfe/version.rb
CHANGED
data/lib/ruby_danfe/xml.rb
CHANGED
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
data/spec/lib/helper_spec.rb
CHANGED
|
@@ -2,9 +2,18 @@ require "spec_helper"
|
|
|
2
2
|
|
|
3
3
|
describe RubyDanfe::Helper do
|
|
4
4
|
describe ".format_datetime" do
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
data/spec/lib/ruby_danfe_spec.rb
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
181
|
+
rubygems_version: 2.5.1
|
|
196
182
|
signing_key:
|
|
197
|
-
specification_version:
|
|
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
|