ruby_danfe 0.9.0 → 1.11.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.gitignore +7 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +122 -0
  5. data/Rakefile +28 -0
  6. data/lib/ruby_danfe.rb +1 -325
  7. data/lib/ruby_danfe/cst.rb +28 -0
  8. data/lib/ruby_danfe/dacte_generator.rb +511 -0
  9. data/lib/ruby_danfe/danfe_generator.rb +287 -0
  10. data/lib/ruby_danfe/danfe_nfce_generator.rb +237 -0
  11. data/lib/ruby_danfe/descricao.rb +44 -0
  12. data/lib/ruby_danfe/document.rb +80 -0
  13. data/lib/ruby_danfe/helper.rb +68 -0
  14. data/lib/ruby_danfe/options.rb +24 -0
  15. data/lib/ruby_danfe/railtie.rb +20 -0
  16. data/lib/ruby_danfe/ruby_danfe.rb +49 -0
  17. data/lib/ruby_danfe/version.rb +3 -0
  18. data/lib/ruby_danfe/xml.rb +58 -0
  19. data/ruby_danfe.gemspec +26 -11
  20. data/spec/features/ruby_danfe_spec.rb +59 -0
  21. data/spec/fixtures/4_decimals_nfe_simples_nacional.xml +1 -0
  22. data/spec/fixtures/cte.xml +1 -0
  23. data/spec/fixtures/nfe_date_format_infoadprod_infoadfisco_issues.xml +42 -0
  24. data/spec/fixtures/nfe_simples_nacional.xml +1 -0
  25. data/spec/fixtures/nfe_with_fci.xml +1 -0
  26. data/spec/fixtures/nfe_with_ns.xml +4 -0
  27. data/spec/fixtures/nfe_without_ns.xml +2 -0
  28. data/spec/lib/cst_spec.rb +51 -0
  29. data/spec/lib/descricao_spec.rb +129 -0
  30. data/spec/lib/helper_spec.rb +88 -0
  31. data/spec/lib/options_spec.rb +13 -0
  32. data/spec/lib/ruby_danfe_spec.rb +43 -0
  33. data/spec/spec_helper.rb +21 -0
  34. data/spec/support/be_same_file_as.rb +9 -0
  35. data/test/danfe.xml +42 -0
  36. data/test/generate.rb +8 -0
  37. data/test/generate_nfce.rb +8 -0
  38. data/test/nfce.xml +147 -0
  39. data/test/nfe_simples_nacional.xml +1 -0
  40. data/test/nfe_with_fci.xml +1 -0
  41. data/test/nfe_with_ns.xml +4 -0
  42. data/test/nfe_without_ns.xml +2 -0
  43. metadata +167 -75
@@ -0,0 +1,28 @@
1
+ module RubyDanfe
2
+ class Cst
3
+ def self.to_danfe(xml)
4
+ value = origin(xml)
5
+
6
+ if csosn?(xml)
7
+ value += xml.css("ICMS/*/CSOSN").text
8
+ elsif cst?(xml)
9
+ value += xml.css("ICMS/*/CST").text
10
+ end
11
+
12
+ value
13
+ end
14
+
15
+ private
16
+ def self.origin(xml)
17
+ xml.css('ICMS/*/orig').text
18
+ end
19
+
20
+ def self.cst?(xml)
21
+ xml.css("ICMS/*/CST").text != ""
22
+ end
23
+
24
+ def self.csosn?(xml)
25
+ xml.css("ICMS/*/CSOSN").text != ""
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,511 @@
1
+ # coding: utf-8
2
+ module RubyDanfe
3
+ class DacteGenerator
4
+ def initialize(xml)
5
+ @xml = xml
6
+ @pdf = Document.new
7
+ end
8
+
9
+ def generatePDF
10
+ @pdf.repeat :all do
11
+ render_emitente
12
+ render_tipo_cte
13
+ render_tipo_servico
14
+ render_tomador
15
+ render_forma_de_pagamento
16
+ render_infobox
17
+ render_remetente
18
+ render_destinatario
19
+ render_expedidor
20
+ render_recebedor
21
+ render_tomador_do_servico
22
+ render_produto
23
+ render_quantidade
24
+ render_seguradora
25
+ render_valor_da_prestacao
26
+ render_impostos
27
+ render_documentos_originarios
28
+ render_observacoes
29
+ render_modal
30
+ end
31
+
32
+ @pdf
33
+ end
34
+
35
+ private
36
+ def render_emitente
37
+ @pdf.ibox 2.27, 7.67, 0.25, 0.54
38
+ @pdf.ibox 2.27, 7.67, 0.25, 0.84, '',
39
+ @xml['emit/xNome'],
40
+ { :align => :center, :size => 9, :border => 0, :style => :bold }
41
+
42
+ fone = @xml['enderEmit/fone']
43
+ unless fone.eql?('')
44
+ if fone.size > 8
45
+ fone = '(' + @xml['enderEmit/fone'][0,2] + ')' + @xml['enderEmit/fone'][2,4] + '-' + @xml['enderEmit/fone'][6,4]
46
+ else
47
+ fone = @xml['enderEmit/fone'][0,4] + '-' + @xml['enderEmit/fone'][4,4]
48
+ end
49
+ end
50
+ @pdf.ibox 2.27, 7.67, 0.25, 1.30, '',
51
+ @xml['enderEmit/xLgr'] + ", " + @xml['enderEmit/nro'] + " " + @xml['enderEmit/xCpl'] + "\n" +
52
+ @xml['enderEmit/xMun'] + " - " + @xml['enderEmit/UF'] + " " + @xml['enderEmit/xPais'] + "\n" +
53
+ "Fone/Fax: " + fone,
54
+ { :align => :center, :size => 8, :border => 0, :style => :bold }
55
+ end
56
+
57
+ def render_tipo_cte
58
+ # tipo ct-e
59
+ tpCTe = case @xml['ide/tpCTe']
60
+ when '0' then 'Normal'
61
+ when '1' then 'Complemento de Valores'
62
+ when '2' then 'Anulação de Valores'
63
+ when '3' then 'Substituto'
64
+ else ''
65
+ end
66
+ @pdf.ibox 0.90, 3.84, 0.25, 2.81, 'TIPO DE CT-E', tpCTe, { :align => :center, :size => 8, :style => :bold }
67
+ end
68
+
69
+ def render_tipo_servico
70
+ # tipo servico
71
+ tpServ = case @xml['ide/tpServ']
72
+ when '0' then 'Normal'
73
+ when '1' then 'Subcontratação'
74
+ when '2' then 'Redespacho'
75
+ when '3' then 'Redespacho Intermediário'
76
+ else ''
77
+ end
78
+ @pdf.ibox 0.90, 3.83, 4.08, 2.81, 'TIPO DE SERVIÇO', tpServ, { :align => :center, :size => 8, :style => :bold }
79
+ end
80
+
81
+ def render_tomador
82
+ # tomador
83
+ if @xml['ide/toma3'] != '' || @xml['ide/toma03'] != '' then
84
+ @xml['ide/toma3'] != '' ? tomador = 'toma3' : tomador = 'toma03'
85
+ else if @xml['ide/toma4'] != '' || @xml['ide/toma04'] != '' then
86
+ @xml['ide/toma4'] != '' ? tomador = 'toma4' : tomador = 'toma04'
87
+ end
88
+ end
89
+ toma = case @xml[tomador + '/toma']
90
+ when '0' then 'Remetente'
91
+ when '1' then 'Expedidor'
92
+ when '2' then 'Recebedor'
93
+ when '3' then 'Destinatário'
94
+ when '4' then 'Outros'
95
+ else ''
96
+ end
97
+ @pdf.ibox 0.90, 3.83, 0.25, 3.71, 'TOMADOR DO SERVIÇO', toma, { :align => :center, :size => 8, :style => :bold }
98
+ end
99
+
100
+ def render_forma_de_pagamento
101
+ # forma de pagamento
102
+ forma = case @xml['ide/forPag']
103
+ when '0' then 'Pago'
104
+ when '1' then 'A pagar'
105
+ when '2' then 'Outros'
106
+ else ''
107
+ end
108
+ @pdf.ibox 0.90, 3.83, 4.08, 3.71, 'FORMA DE PAGAMENTO', forma, { :align => :center, :size => 8, :style => :bold }
109
+ end
110
+
111
+ def render_infobox
112
+ # infobox
113
+ @pdf.ibox 0.90, 9.39, 7.92, 0.54, '', 'DACTE', { :align => :center, :style => :bold, :size => 12}
114
+ @pdf.ibox 0.90, 9.39, 7.92, 0.94, '', 'Documento auxiliar do Conhecimento de Transporte Eletrônico', { :align => :center, :border => 0, :size => 7 }
115
+ #@pdf.ibox 0.90, 9.39, 7.92, 1.04, '', 'de Transporte Eletrônico', { :align => :center, :border => 0, :size => 6 }
116
+
117
+ # tipo
118
+ @pdf.ibox 0.90, 3.43, 17.31, 0.54, '', 'MODAL', { :align => :center, :size => 7 }
119
+
120
+ # modal
121
+ # modal = case @xml['ide/modal']
122
+ # when '1' then 'Rodoviário'
123
+ # when '2' then 'Aéreo'
124
+ # when '3' then 'Aquaviário'
125
+ # when '4' then 'Ferroviário'
126
+ # when '5' then 'Dutoviário'
127
+ # else ''
128
+ # end
129
+ @pdf.ibox 0.90, 3.43, 17.31, 0.84, '', 'RODOVIÁRIO', { :align => :center, :size => 8, :border => 0, :style => :bold }
130
+ @pdf.ibox 0.91, 1.98, 7.92, 1.44, 'MODELO', @xml['ide/mod'], {:size => 8, :align => :center}
131
+ @pdf.ibox 0.91, 0.75, 9.90, 1.44, 'SERIE', @xml['ide/serie'], {:size => 8, :align => :center}
132
+ @pdf.ibox 0.91, 2.48, 10.65, 1.44, 'NÚMERO', @xml['ide/nCT'], {:size => 8, :align => :center}
133
+ @pdf.ibox 0.91, 0.97, 13.13, 1.44, 'FL', '1/1', {:size => 8, :align => :center}
134
+ emiss = @xml['ide/dhEmi'][8, 2] + '/' + @xml['ide/dhEmi'][5, 2] + '/' + @xml['ide/dhEmi'][0, 4] + " " +
135
+ @xml['ide/dhEmi'][11, 8]
136
+
137
+ @pdf.ibox 0.91, 3.21, 14.10, 1.44, 'DATA E HORA DE EMISSÃO', emiss, {:size => 8, :align => :center}
138
+ @pdf.ibox 0.91, 3.43, 17.31, 1.44, 'INSC. SUFRAMA DESTINATÁRIO', @xml['dest/ISUF'], {:size => 8, :align => :center}
139
+ @pdf.ibox 1.13, 12.82, 7.92, 2.35
140
+ @pdf.ibarcode 0.85, 12.82, 9.25, 3.35, @xml.attrib('infCte', 'Id')[3..-1]
141
+ @pdf.ibox 0.62, 12.82, 7.92, 3.48, 'Chave de acesso', ''
142
+ @pdf.ibox 0.90, 12.82, 7.92, 3.62, '', @xml.attrib('infCte', 'Id')[3..-1].gsub(/(\d)(?=(\d\d\d\d)+(?!\d))/, "\\1 "), {:style => :bold, :align => :center, :size => 8, :border => 0}
143
+ @pdf.ibox 1.13, 12.82, 7.92, 4.10, '', 'Consulta de autenticidade no portal do CT-e, no site da Sefaz Autorizadora, ou em http://www.cte.fazenda.gov.br/portal',
144
+ { :align => :center, :valign => :center, :style => :bold, :size => 8 }
145
+ @pdf.ibox 0.71, 12.82, 7.92, 5.23, 'Protocolo de Autorização de Uso'
146
+ @pdf.ibox 0.90, 12.82, 7.92, 5.38, '', @xml['infProt/nProt'], { :style => :bold, :align => :left, :border => 0, :size => 8 }
147
+ @pdf.ibox 1.33, 7.67, 0.25, 4.61, 'CFOP - NATUREZA DA PRESTAÇÃO', @xml['ide/CFOP'] + ' - ' + @xml['ide/natOp'], { :align => :left, :size => 7, :style => :bold }
148
+ # UFIni -xMunIni
149
+ @pdf.ibox 0.92, 10.25, 0.25, 5.94, 'INÍCIO DA PRESTAÇÃO', @xml['ide/UFIni'] + ' - ' + @xml['ide/xMunIni']
150
+ # UFFim -cMunFim – xMunFim
151
+ @pdf.ibox 0.92, 10.24, 10.50, 5.94, 'TÉRMINO DA PRESTAÇÃO', @xml['ide/UFFim'] + ' - ' + @xml['ide/cMunFim'] + ' - ' + @xml['ide/xMunFim']
152
+ end
153
+
154
+ def render_remetente
155
+ # remetente
156
+ @pdf.ibox 2.76, 10.25, 0.25, 6.86
157
+ @pdf.ibox 0.90, 10.00, 0.28, 7.05, '', 'Remetente: ', { :size => 7, :border => 0, :style => :italic }
158
+ @pdf.ibox 0.90, 10.00, 1.88, 7.05, '', @xml['rem/xNome'], { :size => 7, :border => 0, :style => :bold }
159
+ @pdf.ibox 0.90, 10.00, 0.28, 7.41, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
160
+ @pdf.ibox 0.90, 10.00, 1.88, 7.41, '', @xml['enderReme/xLgr'] + ', ' + @xml['enderReme/nro'] + (@xml['enderReme/xCpl'] != '' ? ' - ' + @xml['enderReme/xCpl'] : ''), { :size => 7, :border => 0, :style => :bold } if @xml['enderReme/xLgr'] != ''
161
+ @pdf.ibox 0.90, 5.00, 1.88, 7.68, '', @xml['enderReme/xBairro'], { :size => 7, :border => 0, :style => :bold }
162
+ @pdf.ibox 0.90, 10.00, 0.28, 8.02, '', 'Município: ', { :size => 7, :border => 0, :style => :italic }
163
+ @pdf.ibox 0.90, 10.00, 1.88, 8.02, '', @xml['enderReme/xMun'], { :size => 7, :border => 0, :style => :bold }
164
+ @pdf.ibox 0.90, 3.00, 6.50, 8.02, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
165
+ @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
+ @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'] != ''
168
+ @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
+ @pdf.ibox 0.90, 3.50, 6.50, 8.41, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
170
+ @pdf.ibox 0.90, 3.50, 7.85, 8.41, '', @xml['rem/IE'], { :size => 7, :border => 0, :style => :bold }
171
+ @pdf.ibox 0.90, 6.00, 0.28, 8.82, '', 'UF: ' + ' ' + 'País: ', { :size => 7, :border => 0, :style => :italic }
172
+ @pdf.ibox 0.90, 6.00, 1.88, 8.82, '', @xml['enderReme/UF'] + ' ' + @xml['enderReme/xPais'], { :size => 7, :border => 0, :style => :bold }
173
+ @pdf.ibox 0.90, 3.00, 6.50, 8.82, '', 'Fone: ', { :size => 7, :border => 0, :style => :italic }
174
+ fone = @xml['rem/fone']
175
+ unless fone.eql?('')
176
+ if fone.size > 8
177
+ @pdf.ibox 0.90, 3.00, 7.20, 8.82, '', '(' + @xml['rem/fone'][0,2] + ')' + @xml['rem/fone'][2,4] + '-' + @xml['rem/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
178
+ else
179
+ @pdf.ibox 0.90, 3.00, 7.20, 8.82, '', @xml['rem/fone'][0,4] + '-' + @xml['rem/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
180
+ end
181
+ end
182
+ end
183
+
184
+ def render_destinatario
185
+ # destinatário
186
+ @pdf.ibox 2.76, 10.24, 10.50, 6.86
187
+ @pdf.ibox 0.90, 10.00, 10.53, 7.05, '', 'Destinatário: ', { :size => 7, :border => 0, :style => :italic }
188
+ @pdf.ibox 0.90, 10.00, 12.10, 7.05, '', @xml['dest/xNome'], { :size => 7, :border => 0, :style => :bold }
189
+ @pdf.ibox 0.90, 10.00, 10.53, 7.41, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
190
+ @pdf.ibox 0.90, 10.00, 12.10, 7.41, '', @xml['enderDest/xLgr'] + ', ' + @xml['enderDest/nro'] + (@xml['enderDest/xCpl'] != '' ? ' - ' + @xml['enderDest/xCpl'] : ''), { :size => 7, :border => 0, :style => :bold } if @xml['enderDest/xLgr'] != ''
191
+ @pdf.ibox 0.90, 5.00, 12.10, 7.68, '', @xml['enderDest/xBairro'], { :size => 7, :border => 0, :style => :bold }
192
+ @pdf.ibox 0.90, 10.00, 10.53, 8.02, '', 'Município: ', { :size => 7, :border => 0, :style => :italic }
193
+ @pdf.ibox 0.90, 10.00, 12.10, 8.02, '', @xml['enderDest/xMun'], { :size => 7, :border => 0, :style => :bold }
194
+ @pdf.ibox 0.90, 3.00, 16.75, 8.02, '', 'CEP: ' , { :size => 7, :border => 0, :style => :italic }
195
+ @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
+ @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'] != ''
198
+ @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
+ @pdf.ibox 0.90, 3.50, 16.75, 8.41, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
200
+ @pdf.ibox 0.90, 3.50, 18.05, 8.41, '', @xml['dest/IE'], { :size => 7, :border => 0, :style => :bold }
201
+ @pdf.ibox 0.90, 6.00, 10.53, 8.82, '', 'UF: ' + ' ' + 'País: ' , { :size => 7, :border => 0, :style => :italic }
202
+ @pdf.ibox 0.90, 6.00, 12.10, 8.82, '', @xml['enderDest/UF'] + ' ' + @xml['enderDest/xPais'] , { :size => 7, :border => 0, :style => :bold }
203
+ @pdf.ibox 0.90, 3.00, 16.75, 8.82, '', 'Fone: ', { :size => 7, :border => 0, :style => :italic }
204
+ fone = @xml['dest/fone']
205
+ unless fone.eql?('')
206
+ if fone.size > 8
207
+ @pdf.ibox 0.90, 3.00, 17.40, 8.82, '', '(' + @xml['dest/fone'][0,2] + ')' + @xml['dest/fone'][2,4] + '-' + @xml['dest/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
208
+ else
209
+ @pdf.ibox 0.90, 3.00, 17.40, 8.82, '', @xml['dest/fone'][0,4] + '-' + @xml['dest/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
210
+ end
211
+ end
212
+ end
213
+
214
+ def render_expedidor
215
+ # expedidor
216
+ @pdf.ibox 2.76, 10.25, 0.25, 9.62
217
+ @pdf.ibox 0.90, 10.00, 0.28, 9.81, '', 'Expedidor: ', { :size => 7, :border => 0, :style => :italic }
218
+ @pdf.ibox 0.90, 10.00, 1.88, 9.81, '', @xml['exped/xNome'], { :size => 7, :border => 0, :style => :bold }
219
+ @pdf.ibox 0.90, 10.00, 0.28, 10.17, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
220
+ @pdf.ibox 0.90, 10.00, 1.88, 10.17, '', @xml['enderExped/xLgr'] + ', ' + @xml['enderExped/nro'] + (@xml['enderExped/xCpl'] != '' ? ' - ' + @xml['enderExped/xCpl'] : ''), { :size => 7, :border => 0, :style => :bold } if @xml['enderExped/xLgr'] != ''
221
+ @pdf.ibox 0.90, 5.00, 1.88, 10.44, '', @xml['enderExped/xBairro'], { :size => 7, :border => 0, :style => :bold }
222
+ @pdf.ibox 0.90, 10.00, 0.28, 10.78, '', 'Município: ', { :size => 7, :border => 0, :style => :italic }
223
+ @pdf.ibox 0.90, 10.00, 1.88, 10.78, '', @xml['enderExped/xMun'], { :size => 7, :border => 0, :style => :bold }
224
+ @pdf.ibox 0.90, 3.00, 6.50, 10.78, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
225
+ @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
+ @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'] != ''
228
+ @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
+ @pdf.ibox 0.90, 3.50, 6.50, 11.17, '', 'Inscr. Est.:' , { :size => 7, :border => 0, :style => :italic }
230
+ @pdf.ibox 0.90, 3.50, 7.85, 11.17, '', @xml['exped/IE'], { :size => 7, :border => 0, :style => :bold }
231
+ @pdf.ibox 0.90, 6.00, 0.28, 11.58, '', 'UF: ' + ' ' + 'País: ', { :size => 7, :border => 0, :style => :italic }
232
+ @pdf.ibox 0.90, 6.00, 1.88, 11.58, '', @xml['enderExped/UF'] + ' ' + @xml['enderExped/xPais'], { :size => 7, :border => 0, :style => :bold }
233
+ @pdf.ibox 0.90, 3.00, 6.50, 11.58, '', 'Fone: ', { :size => 7, :border => 0, :style => :italic }
234
+ fone = @xml['exped/fone']
235
+ unless fone.eql?('')
236
+ if @xml['exped/fone'] != '' and fone.size > 8
237
+ @pdf.ibox 0.90, 3.00, 7.20, 11.58, '', '(' + @xml['exped/fone'][0,2] + ')' + @xml['exped/fone'][2,4] + '-' + @xml['exped/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
238
+ else
239
+ @pdf.ibox 0.90, 3.00, 7.20, 11.58, '', @xml['exped/fone'][0,4] + '-' + @xml['exped/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
240
+ end
241
+ end
242
+ end
243
+
244
+ def render_recebedor
245
+ # recebedor
246
+ @pdf.ibox 2.76, 10.24, 10.50, 9.62
247
+ @pdf.ibox 0.90, 10.00, 10.53, 9.81, '', 'Recebedor: ', { :size => 7, :border => 0, :style => :italic }
248
+ @pdf.ibox 0.90, 10.00, 12.10, 9.81, '', @xml['receb/xNome'], { :size => 7, :border => 0, :style => :bold }
249
+ @pdf.ibox 0.90, 10.00, 10.53, 10.17, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
250
+ @pdf.ibox 0.90, 10.00, 12.10, 10.17, '', @xml['enderReceb/xLgr'] + ', ' + @xml['enderReceb/nro'] + (@xml['enderReceb/xCpl'] != '' ? ' - ' + @xml['enderReceb/xCpl'] : ''), { :size => 7, :border => 0, :style => :bold } if @xml['enderReceb/xLgr'] != ''
251
+ @pdf.ibox 0.90, 5.00, 12.10, 10.44, '', @xml['enderReceb/xBairro'], { :size => 7, :border => 0, :style => :bold }
252
+ @pdf.ibox 0.90, 10.00, 10.53, 10.78, '', 'Município: ' , { :size => 7, :border => 0, :style => :italic }
253
+ @pdf.ibox 0.90, 10.00, 12.10, 10.78, '', @xml['enderReceb/xMun'], { :size => 7, :border => 0, :style => :bold }
254
+ @pdf.ibox 0.90, 3.00, 16.75, 10.78, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
255
+ @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
+ @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'] != ''
258
+ @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
+ @pdf.ibox 0.90, 3.50, 16.75, 11.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
260
+ @pdf.ibox 0.90, 3.50, 18.05, 11.17, '', @xml['receb/IE'], { :size => 7, :border => 0, :style => :bold }
261
+ @pdf.ibox 0.90, 6.00, 10.53, 11.58, '', 'UF: ' + ' ' + 'País: ', { :size => 7, :border => 0, :style => :italic }
262
+ @pdf.ibox 0.90, 6.00, 12.10, 11.58, '', @xml['enderReceb/UF'] + ' ' + @xml['enderReceb/xPais'], { :size => 7, :border => 0, :style => :bold }
263
+ @pdf.ibox 0.90, 3.00, 16.75, 11.58, '', 'Fone: ', { :size => 7, :border => 0, :style => :italic }
264
+ fone = @xml['receb/fone']
265
+ unless fone.eql?('')
266
+ if @xml['receb/fone'] != '' and fone.size > 8
267
+ @pdf.ibox 0.90, 3.00, 17.40, 11.58, '', '(' + @xml['receb/fone'][0,2] + ')' + @xml['receb/fone'][2,4] + '-' + @xml['receb/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
268
+ else
269
+ @pdf.ibox 0.90, 3.00, 17.40, 11.58, '', @xml['receb/fone'][0,4] + '-' + @xml['receb/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
270
+ end
271
+ end
272
+ end
273
+
274
+ def render_tomador_do_servico
275
+ # tomador
276
+ @pdf.ibox 1.45, 20.49, 0.25, 12.38
277
+ if @xml['ide/toma3'] != '' || @xml['ide/toma03'] != '' then
278
+ @xml['ide/toma3'] != '' ? tomador = 'toma3' : tomador = 'toma03'
279
+ else if @xml['ide/toma4'] != '' || @xml['ide/toma04'] != '' then
280
+ @xml['ide/toma4'] != '' ? tomador = 'toma4' : tomador = 'toma04'
281
+ end
282
+ end
283
+ toma = case @xml[tomador + '/toma']
284
+ when '0' then 'rem'
285
+ when '1' then 'exped'
286
+ when '2' then 'receb'
287
+ when '3' then 'dest'
288
+ when '4' then 'Outros'
289
+ else ''
290
+ end
291
+ endereco = case @xml[tomador + '/toma']
292
+ when '0' then 'enderReme'
293
+ when '1' then 'enderExped'
294
+ when '2' then 'enderReceb'
295
+ when '3' then 'enderDest'
296
+ when '4' then 'Outros'
297
+ else ''
298
+ end
299
+ if toma == 'Outros'
300
+ @pdf.ibox 0.90, 10.00, 0.28, 12.45, '', 'Tomador do Serviço: ', { :size => 7, :border => 0, :style => :italic }
301
+ @pdf.ibox 0.90, 10.00, 2.58, 12.45, '', @xml['toma4/xNome'], { :size => 7, :border => 0, :style => :bold }
302
+ @pdf.ibox 0.90, 10.00, 10.50, 12.45, '', 'Município: ', { :size => 7, :border => 0, :style => :italic }
303
+ @pdf.ibox 0.90, 10.00, 11.80, 12.45, '', @xml['enderToma/xMun'], { :size => 7, :border => 0, :style => :bold }
304
+ @pdf.ibox 0.90, 4.00, 18.00, 12.45, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
305
+ @pdf.ibox 0.90, 4.00, 18.70, 12.45, '', @xml['enderToma/CEP'][0,2] + '.' + @xml['enderToma/CEP'][3,3] + '-' + @xml['enderToma/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml['enderToma/CEP'] != ''
306
+ @pdf.ibox 0.90, 10.00, 0.28, 12.81, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
307
+ @pdf.ibox 0.90, 10.00, 1.88, 12.81, '', @xml['enderToma/xLgr'] + ', ' + @xml['enderToma/nro'] + (@xml['enderToma/xCpl'] != '' ? ' - ' + @xml['enderToma/xCpl'] : '') + ' - ' + @xml['enderToma/xBairro'], { :size => 7, :border => 0, :style => :bold } if @xml['enderToma/xLgr'] != ''
308
+ @pdf.ibox 0.90, 2.00, 13.50, 12.81, '', 'UF: ' , { :size => 7, :border => 0, :style => :italic }
309
+ @pdf.ibox 0.90, 2.00, 14.50, 12.81, '', @xml['enderToma/UF'], { :size => 7, :border => 0, :style => :bold }
310
+ @pdf.ibox 0.90, 5.00, 16.50, 12.81, '', 'País: ' , { :size => 7, :border => 0, :style => :italic }
311
+ @pdf.ibox 0.90, 5.00, 17.50, 12.81, '', @xml['enderToma/xPais'], { :size => 7, :border => 0, :style => :bold }
312
+ @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'] != ''
314
+ @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
+ @pdf.ibox 0.90, 5.00, 5.60, 13.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
316
+ @pdf.ibox 0.90, 5.00, 7.20, 13.17, '', @xml['toma4/IE'], { :size => 7, :border => 0, :style => :bold }
317
+ @pdf.ibox 0.90, 5.00, 10.50, 13.17, '', 'Fone: ' , { :size => 7, :border => 0, :style => :italic }
318
+ fone = @xml['toma4/fone']
319
+ unless fone.eql?('')
320
+ if fone.size > 8
321
+ @pdf.ibox 0.90, 5.00, 11.80, 13.17, '', '(' + @xml['toma4/fone'][0,2] + ')' + @xml['toma4/fone'][2,4] + '-' + @xml['toma4/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
322
+ else
323
+ @pdf.ibox 0.90, 5.00, 11.80, 13.17, '', @xml['toma4/fone'][0,4] + '-' + @xml['toma4/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
324
+ end
325
+ end
326
+ else
327
+ @pdf.ibox 0.90, 10.00, 0.28, 12.45, '', 'Tomador do Serviço: ', { :size => 7, :border => 0, :style => :italic }
328
+ @pdf.ibox 0.90, 10.00, 2.58, 12.45, '', @xml[toma + '/xNome'], { :size => 7, :border => 0, :style => :bold }
329
+ @pdf.ibox 0.90, 10.00, 10.50, 12.45, '', 'Município: ', { :size => 7, :border => 0, :style => :italic }
330
+ @pdf.ibox 0.90, 10.00, 11.80, 12.45, '', @xml[endereco + '/xMun'], { :size => 7, :border => 0, :style => :bold }
331
+ @pdf.ibox 0.90, 4.00, 18.00, 12.45, '', 'CEP: ', { :size => 7, :border => 0, :style => :italic }
332
+ @pdf.ibox 0.90, 4.00, 18.70, 12.45, '', @xml[endereco + '/CEP'][0,2] + '.' + @xml[endereco + '/CEP'][3,3] + '-' + @xml[endereco + '/CEP'][5,3], { :size => 7, :border => 0, :style => :bold } if @xml[endereco + '/CEP'] != ''
333
+ @pdf.ibox 0.90, 10.00, 0.28, 12.81, '', 'Endereço: ', { :size => 7, :border => 0, :style => :italic }
334
+ @pdf.ibox 0.90, 10.00, 1.88, 12.81, '', @xml[endereco + '/xLgr'] + ', ' + @xml[endereco + '/nro'] + (@xml[endereco + '/xCpl'] != '' ? ' - ' + @xml[endereco + '/xCpl'] : '') + ' - ' + @xml[endereco + '/xBairro'], { :size => 7, :border => 0, :style => :bold } if @xml[endereco + '/xLgr'] != ''
335
+ @pdf.ibox 0.90, 2.00, 13.50, 12.81, '', 'UF: ' , { :size => 7, :border => 0, :style => :italic }
336
+ @pdf.ibox 0.90, 2.00, 14.50, 12.81, '', @xml[endereco + '/UF'], { :size => 7, :border => 0, :style => :bold }
337
+ @pdf.ibox 0.90, 5.00, 16.50, 12.81, '', 'País: ' , { :size => 7, :border => 0, :style => :italic }
338
+ @pdf.ibox 0.90, 5.00, 17.50, 12.81, '', @xml[endereco + '/xPais'], { :size => 7, :border => 0, :style => :bold }
339
+ @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'] != ''
341
+ @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
+ @pdf.ibox 0.90, 5.00, 5.60, 13.17, '', 'Inscr. Est.: ', { :size => 7, :border => 0, :style => :italic }
343
+ @pdf.ibox 0.90, 5.00, 7.20, 13.17, '', @xml[toma + '/IE'], { :size => 7, :border => 0, :style => :bold }
344
+ @pdf.ibox 0.90, 5.00, 10.50, 13.17, '', 'Fone: ' , { :size => 7, :border => 0, :style => :italic }
345
+ fone = @xml[toma + '/fone']
346
+ unless fone.eql?('')
347
+ if fone.size > 8
348
+ @pdf.ibox 0.90, 5.00, 11.80, 13.17, '', '(' + @xml[toma + '/fone'][0,2] + ')' + @xml[toma + '/fone'][2,4] + '-' + @xml[toma + '/fone'][6,4], { :size => 7, :border => 0, :style => :bold }
349
+ else
350
+ @pdf.ibox 0.90, 5.00, 11.80, 13.17, '', @xml[toma + '/fone'][0,4] + '-' + @xml[toma + '/fone'][4,4], { :size => 7, :border => 0, :style => :bold }
351
+ end
352
+ end
353
+ end
354
+ end
355
+
356
+ def render_produto
357
+ #produto predominante/outras caract, valor total
358
+ #@pdf.ibox 0.92, 20.49, 0.25, 13.82
359
+ @pdf.ibox 0.90, 6.83, 0.25, 13.82, 'PRODUTO PREDOMINANTE', @xml['infCarga/proPred'], {:size => 7, :style => :bold }
360
+ @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 }
362
+ end
363
+
364
+ def render_quantidade
365
+ #quantidade carga
366
+ @pdf.ibox 0.90, 1.07, 0.25, 14.72, '', 'QTD.', { :size => 7, :align => :center, :style => :italic}
367
+ @pdf.ibox 0.90, 1.07, 0.25, 15.02, '', 'CARGA', { :size => 7, :align => :center, :style => :italic, :border => 0}
368
+ @pdf.ibox 0.90, 3.50, 1.33, 14.72, 'QT./UN. MEDIDA', '', { :size => 7, :style => :italic }
369
+ @pdf.ibox 0.90, 3.50, 4.83, 14.72, 'QT./UN. MEDIDA', '', { :size => 7, :style => :italic }
370
+ @pdf.ibox 0.90, 3.50, 8.33, 14.72, 'QT./UN. MEDIDA', '', { :size => 7, :style => :italic }
371
+ x = 1.33
372
+ @xml.collect('xmlns', 'infQ') { |det|
373
+ if !det.css('cUnid').text.eql?('00')
374
+ @pdf.ibox 0.90, 3.50, x, 15.02, '', det.css('qCarga').text, { :size => 7, :style => :bold, :border => 0 }
375
+ x = x + 3.50
376
+ end
377
+ }
378
+ end
379
+
380
+ def render_seguradora
381
+ #seguradora
382
+ respons = case @xml['seg/respSeg']
383
+ when '0' then 'Remetente'
384
+ when '1' then 'Expedidor'
385
+ when '2' then 'Recebedor'
386
+ when '3' then 'Destinatário'
387
+ when '4' then 'Emitente do CT-e'
388
+ when '5' then 'Tomador de Serviço'
389
+ else ''
390
+ end
391
+ @pdf.ibox 0.30, 8.91, 11.83, 14.72, 'Nome da Seguradora: ' + @xml['seg/xSeg'], '', {:size => 7}
392
+ @pdf.ibox 0.60, 3.70, 11.83, 15.02, '', 'Responsável: ' + respons, {:size => 6}
393
+ @pdf.ibox 0.60, 2.50, 15.52, 15.02, '', 'Nº Apólice: ' + @xml['seg/nApol'], { :size => 6}
394
+ @pdf.ibox 0.60, 2.73, 18.01, 15.02, '', 'Nº Averbação: ' + @xml['seg/nAver'], { :size => 6}
395
+ end
396
+
397
+ def render_valor_da_prestacao
398
+ #componentes do valor da prestação de serviço
399
+ @pdf.ibox 0.40, 20.49, 0.25, 15.63, '', 'COMPONENTES DO VALOR DA PRESTAÇÃO DE SERVIÇO', { :align => :left, :size => 7, :style => :bold, :border => 0}
400
+ @pdf.ibox 1.40, 4.00, 0.25, 16.03
401
+ @pdf.ibox 1.40, 2.12, 0.25, 16.02, 'NOME', '', { :size => 7, :border => 0 }
402
+ @pdf.ibox 1.40, 1.88, 3.05, 16.02, 'VALOR', '', { :size => 7, :border => 0 }
403
+ @pdf.ibox 1.40, 4.00, 4.26, 16.03
404
+ @pdf.ibox 1.40, 2.12, 4.26, 16.02, 'NOME', '', { :size => 7, :border => 0 }
405
+ @pdf.ibox 1.40, 1.88, 7.14, 16.02, 'VALOR', '', { :size => 7, :border => 0 }
406
+ @pdf.ibox 1.40, 4.00, 8.25, 16.03
407
+ @pdf.ibox 1.40, 2.12, 8.25, 16.02, 'NOME', '', { :size => 7, :border => 0 }
408
+ @pdf.ibox 1.40, 1.88, 11.05, 16.02, 'VALOR', '', { :size => 7, :border => 0 }
409
+ @pdf.ibox 1.40, 4.00, 12.26, 16.03
410
+ @pdf.ibox 1.40, 2.12, 12.26, 16.02, 'NOME', '', { :size => 7, :border => 0 }
411
+ @pdf.ibox 1.40, 1.88, 15.05, 16.02, 'VALOR', '',{ :size => 7, :border => 0 }
412
+ x = 0.25
413
+ y = 16.40
414
+ @xml.collect('xmlns', 'Comp') { |det|
415
+ @pdf.ibox 1.40, 2.12, x, y, '', det.css('xNome').text, { :size => 6, :border => 0, :style => :bold }
416
+ @pdf.inumeric 1.40, 1.88, x + 1.80, y, '', det.css('vComp').text, { :size => 7, :border => 0, :align => :right, :style => :bold }
417
+ y = y + 0.40
418
+ if y > 16.80
419
+ x = x + 4.00
420
+ y = 16.40
421
+ end
422
+ }
423
+ @pdf.ibox 0.70, 4.48, 16.26, 16.03
424
+ @pdf.inumeric 0.70, 4.48, 16.26, 16.03, 'VALOR TOTAL DO SERVIÇO', @xml['vPrest/vTPrest'], { :align => :center, :size => 6, :style => :bold}
425
+ @pdf.inumeric 0.70, 4.48, 16.26, 16.73, 'VALOR A RECEBER', @xml['vPrest/vRec'],{ :align => :center, :size => 6, :style => :bold }
426
+ end
427
+
428
+ def render_impostos
429
+ #informações relativas ao Imposto
430
+ @pdf.ibox 0.40, 20.49, 0.25, 17.42, '', 'INFORMAÇÕES RELATIVAS AO IMPOSTO', { :align => :left, :size => 7, :border => 0, :style => :bold }
431
+ if !@xml['imp/ICMS/ICMS00'].eql?("")
432
+ cst = '00 - Tributação Normal ICMS'
433
+ tipoIcms = 'ICMS00'
434
+ elsif !@xml['imp/ICMS/ICMS20'].eql?("")
435
+ cst = '20 - Tributação com BC reduzida do ICMS'
436
+ tipoIcms = 'ICMS20'
437
+ elsif !@xml['imp/ICMS/ICMS45'].eql?("")
438
+ cst = '40 - ICMS Isenção; 41 - ICMS não tributada; 51 - ICMS diferido'
439
+ tipoIcms = 'ICMS45'
440
+ elsif !@xml['imp/ICMS/ICMS60'].eql?("")
441
+ cst = '60 - ICMS cobrado anteriormente por Substituição Tributária'
442
+ tipoIcms = 'ICMS60'
443
+ elsif !@xml['imp/ICMS/ICMS90'].eql?("")
444
+ cst = '90 - ICMS outros'
445
+ tipoIcms = 'ICMS90'
446
+ elsif !@xml['imp/ICMS/ICMSSN'].eql?("")
447
+ cst = 'Simples Nacional'
448
+ tipoIcms = 'ICMSSN'
449
+ else
450
+ cst = '90 - ICMS outros'
451
+ tipoIcms = 'ICMSOutraUF'
452
+ end
453
+ @pdf.ibox 0.90, 10.00, 0.25, 17.83, 'SITUAÇÃO TRIBUTÁRIA', cst, { :size => 7, :style => :bold }
454
+ @pdf.inumeric 0.90, 3.00, 10.25, 17.83, 'BASE DE CÁLCULO', @xml['imp/ICMS/'+ tipoIcms + '/vBC'], { :size => 7, :style => :bold }
455
+ @pdf.inumeric 0.90, 1.00, 13.25, 17.83, 'AL. ICMS', @xml[('imp/ICMS/' + tipoIcms + '/pICMS')], { :size => 7, :style => :bold }
456
+ @pdf.inumeric 0.90, 3.00, 14.25, 17.83, 'VALOR ICMS', @xml['imp/ICMS/' + tipoIcms + '/vICMS'],{ :size => 7, :style => :bold }
457
+ @pdf.inumeric 0.90, 2.00, 17.25, 17.83, '% RED.BC.CALC.', @xml['imp/ICMS/' + tipoIcms + '/pRedBC'], { :size => 7, :style => :bold }
458
+ @pdf.inumeric 0.90, 1.49, 19.25, 17.83, 'ICMS ST.', @xml['imp/ICMS/' + tipoIcms + '/pRedBC'], { :size => 7, :style => :bold }
459
+ end
460
+
461
+ def render_documentos_originarios
462
+ #documentos originários
463
+ @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}
472
+ x = 0.25
473
+ @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
483
+ }
484
+ end
485
+
486
+ def render_observacoes
487
+ #OBSERVAÇÕES
488
+ @pdf.ibox 0.40, 20.49, 0.25, 24.65, '', 'OBSERVAÇÕES', { :align => :left, :size => 7, :style => :bold, :border => 0 }
489
+ @pdf.ibox 1.40, 20.49, 0.25, 25.05, '', (@xml['compl/xObs'] + "\n CTe COMPLEMENTADO " + "Chave: " + @xml['infCteComp/chave'] + " Valor de serviço: " +
490
+ Helper.numerify(@xml['vPresComp/vTPrest']).to_s ), { :align => :left, :size => 7 }
491
+ end
492
+
493
+ def render_modal
494
+ #informações do modal
495
+ @pdf.ibox 0.40, 20.49, 0.25, 26.45, '', 'INFORMAÇÕES ESPECÍFICAS DO MODAL RODOVIÁRIO - CARGA FRACIONADA', { :align => :left, :size => 7, :style => :bold, :border => 0}
496
+ @pdf.ibox 0.90, 3.00, 0.25, 26.85, 'RNTRC DA EMPRESA', @xml['rodo/RNTRC'], { :size => 7, :style => :bold }
497
+ @pdf.ibox 0.90, 3.00, 3.25, 26.85, 'CIOT', @xml['rodo/CIOT'], { :size => 7, :style => :bold }
498
+
499
+ dtentrega = @xml['rodo/dPrev'][8, 2].to_s + '/' + @xml['rodo/dPrev'][5, 2].to_s + '/' + @xml['rodo/dPrev'][0, 4].to_s
500
+
501
+ @pdf.ibox 0.90, 4.00, 6.25, 26.85, 'DATA PREVISTA DE ENTREGA', dtentrega, { :size => 7, :style => :bold }
502
+ @pdf.ibox 0.90, 10.49, 10.25, 26.85, '', 'ESTE CONHECIMENTO DE TRANSPORTE ATENDE A LEGISLAÇÃO DE TRANSPORTE RODOVIÁRIO EM VIGOR', { :size => 5, :align => :center }
503
+
504
+ #informações do modal
505
+ @pdf.ibox 0.40, 15.49, 0.25, 27.75, '', 'USO EXCLUSIVO DO EMISSOR DO CT-e', { :align => :center, :size => 7 }
506
+ @pdf.ibox 1.20, 15.49, 0.25, 28.15, '', '', { :align => :center, :size => 6 }
507
+ @pdf.ibox 0.40, 5.00, 15.74, 27.75, '', 'RESERVADO AO FISCO', { :align => :center, :size => 7 }
508
+ @pdf.ibox 1.20, 5.00, 15.74, 28.15, '', '', { :align => :center, :size => 6 }
509
+ end
510
+ end
511
+ end