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.
- data/.gitignore +7 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/README.md +122 -0
- data/Rakefile +28 -0
- data/lib/ruby_danfe.rb +1 -325
- data/lib/ruby_danfe/cst.rb +28 -0
- data/lib/ruby_danfe/dacte_generator.rb +511 -0
- data/lib/ruby_danfe/danfe_generator.rb +287 -0
- data/lib/ruby_danfe/danfe_nfce_generator.rb +237 -0
- data/lib/ruby_danfe/descricao.rb +44 -0
- data/lib/ruby_danfe/document.rb +80 -0
- data/lib/ruby_danfe/helper.rb +68 -0
- data/lib/ruby_danfe/options.rb +24 -0
- data/lib/ruby_danfe/railtie.rb +20 -0
- data/lib/ruby_danfe/ruby_danfe.rb +49 -0
- data/lib/ruby_danfe/version.rb +3 -0
- data/lib/ruby_danfe/xml.rb +58 -0
- data/ruby_danfe.gemspec +26 -11
- data/spec/features/ruby_danfe_spec.rb +59 -0
- data/spec/fixtures/4_decimals_nfe_simples_nacional.xml +1 -0
- data/spec/fixtures/cte.xml +1 -0
- data/spec/fixtures/nfe_date_format_infoadprod_infoadfisco_issues.xml +42 -0
- data/spec/fixtures/nfe_simples_nacional.xml +1 -0
- data/spec/fixtures/nfe_with_fci.xml +1 -0
- data/spec/fixtures/nfe_with_ns.xml +4 -0
- data/spec/fixtures/nfe_without_ns.xml +2 -0
- data/spec/lib/cst_spec.rb +51 -0
- data/spec/lib/descricao_spec.rb +129 -0
- data/spec/lib/helper_spec.rb +88 -0
- data/spec/lib/options_spec.rb +13 -0
- data/spec/lib/ruby_danfe_spec.rb +43 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/be_same_file_as.rb +9 -0
- data/test/danfe.xml +42 -0
- data/test/generate.rb +8 -0
- data/test/generate_nfce.rb +8 -0
- data/test/nfce.xml +147 -0
- data/test/nfe_simples_nacional.xml +1 -0
- data/test/nfe_with_fci.xml +1 -0
- data/test/nfe_with_ns.xml +4 -0
- data/test/nfe_without_ns.xml +2 -0
- 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
|