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 +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
|