Class: Cte

Inherits:
Object
  • Object
show all
Defined in:
lib/sefazp/cte.rb

Instance Method Summary collapse

Constructor Details

#initialize(xml_content) ⇒ Cte

Returns a new instance of Cte.



2
3
4
# File 'lib/sefazp/cte.rb', line 2

def initialize(xml_content)
  @xml_content = xml_content
end

Instance Method Details

#parseObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/sefazp/cte.rb', line 6

def parse
  begin
    frete = nil
    pedagio = nil
    outros = nil
    doc = REXML::Document.new(@xml_content)
    keys = Array.new
    expedidor = !doc.elements["cteProc/CTe/infCte/exped/xNome"].nil?
    recebedor = !doc.elements["cteProc/CTe/infCte/receb/xNome"].nil?
    municipio_do_emitente = doc.elements["cteProc/CTe/infCte/emit/enderEmit/cMun"].get_text.to_s
    municipio_do_remetente = doc.elements["cteProc/CTe/infCte/rem/enderReme/cMun"].get_text.to_s
    municipio_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/enderDest/cMun"].get_text.to_s
    municipio_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/enderExped/cMun"].get_text.to_s : nil
    municipio_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/enderReceb/cMun"].get_text.to_s : nil
    municipio_de_origem = doc.elements["cteProc/CTe/infCte/ide/cMunIni"].get_text.to_s
    municipio_de_destino = doc.elements["cteProc/CTe/infCte/ide/cMunFim"].get_text.to_s
    municipio_de_emissao = doc.elements["cteProc/CTe/infCte/ide/cMunEnv"].get_text.to_s
    numero = doc.elements["cteProc/CTe/infCte/ide/nCT"].get_text.to_s
    serie = doc.elements["cteProc/CTe/infCte/ide/serie"].get_text.to_s
    chave_de_acesso = doc.elements["cteProc/CTe/infCte"].attributes["Id"].to_s
    tipo_do_cte = doc.elements["cteProc/CTe/infCte/ide/tpCTe"].get_text.to_s
    tipo_do_servico = doc.elements["cteProc/CTe/infCte/ide/tpServ"].get_text.to_s
    tomador_do_servico = doc.elements["cteProc/CTe/infCte/ide/toma03/toma"].get_text.to_s
    forma_de_pagamento = doc.elements["cteProc/CTe/infCte/ide/forPag"].get_text.to_s
    codigo_do_cfop = doc.elements["cteProc/CTe/infCte/ide/CFOP"].get_text.to_s
    descricao_do_cfop = doc.elements["cteProc/CTe/infCte/ide/natOp"].get_text.to_s
    cnpj_do_emitente = doc.elements["cteProc/CTe/infCte/emit/CNPJ"].get_text.to_s
    inscricao_estadual_do_emitente = doc.elements["cteProc/CTe/infCte/emit/IE"].get_text.to_s
    nome_do_emitente = doc.elements["cteProc/CTe/infCte/emit/xNome"].get_text.to_s
    nome_fantasia_do_emitente = doc.elements["cteProc/CTe/infCte/emit/xFant"].get_text.to_s
    logradouro_do_emitente = doc.elements["cteProc/CTe/infCte/emit/enderEmit/xLgr"].get_text.to_s
    numero_do_emitente = doc.elements["cteProc/CTe/infCte/emit/enderEmit/nro"].get_text.to_s
    bairro_do_emitente = doc.elements["cteProc/CTe/infCte/emit/enderEmit/xBairro"].get_text.to_s
    cep_do_emitente = doc.elements["cteProc/CTe/infCte/emit/enderEmit/CEP"].get_text.to_s
    cnpj_do_remetente = doc.elements["cteProc/CTe/infCte/rem/CNPJ"].get_text.to_s
    inscricao_estadual_do_remetente = doc.elements["cteProc/CTe/infCte/rem/IE"].get_text.to_s
    nome_do_remetente = doc.elements["cteProc/CTe/infCte/rem/xNome"].get_text.to_s
    logradouro_do_remetente = doc.elements["cteProc/CTe/infCte/rem/enderReme/xLgr"].get_text.to_s
    numero_do_remetente = doc.elements["cteProc/CTe/infCte/rem/enderReme/nro"].get_text.to_s
    bairro_do_remetente = doc.elements["cteProc/CTe/infCte/rem/enderReme/xBairro"].get_text.to_s
    cep_do_remetente = doc.elements["cteProc/CTe/infCte/rem/enderReme/CEP"].get_text.to_s
    cnpj_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/CNPJ"].get_text.to_s
    inscricao_estadual_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/IE"].get_text.to_s
    nome_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/xNome"].get_text.to_s
    logradouro_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/enderDest/xLgr"].get_text.to_s
    numero_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/enderDest/nro"].get_text.to_s
    bairro_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/enderDest/xBairro"].get_text.to_s
    cep_do_destinatario = doc.elements["cteProc/CTe/infCte/dest/enderDest/CEP"].get_text.to_s
    cnpj_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/CNPJ"].get_text.to_s : nil
    inscricao_estadual_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/IE"].get_text.to_s : nil
    nome_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/xNome"].get_text.to_s : nil
    logradouro_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/enderExped/xLgr"].get_text.to_s : nil
    numero_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/enderExped/nro"].get_text.to_s : nil
    bairro_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/enderExped/xBairro"].get_text.to_s : nil
    cep_do_expedidor = expedidor ? doc.elements["cteProc/CTe/infCte/exped/enderExped/CEP"].get_text.to_s : nil
    cnpj_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/CNPJ"].get_text.to_s : nil
    inscricao_estadual_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/IE"].get_text.to_s : nil
    nome_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/xNome"].get_text.to_s : nil
    logradouro_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/enderReceb/xLgr"].get_text.to_s : nil
    numero_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/enderReceb/nro"].get_text.to_s : nil
    bairro_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/enderReceb/xBairro"].get_text.to_s : nil
    cep_do_recebedor = recebedor ? doc.elements["cteProc/CTe/infCte/receb/enderReceb/CEP"].get_text.to_s : nil
    produto_predominante = doc.elements["cteProc/CTe/infCte/infCTeNorm/infCarga/proPred"].get_text.to_s
    unidade_de_medida = doc.elements["cteProc/CTe/infCte/infCTeNorm/infCarga/infQ/tpMed"].get_text.to_s
    quantidade = doc.elements["cteProc/CTe/infCte/infCTeNorm/infCarga/infQ/qCarga"].get_text.to_s
    valor_da_mercadoria = doc.elements["cteProc/CTe/infCte/infCTeNorm/infCarga/vCarga"].get_text.to_s
    responsavel = doc.elements["cteProc/CTe/infCte/infCTeNorm/seg/respSeg"].get_text.to_s
    valor_total = doc.elements["cteProc/CTe/infCte/vPrest/vTPrest"].get_text.to_s
    valor_a_receber = doc.elements["cteProc/CTe/infCte/vPrest/vRec"].get_text.to_s
    base_de_calculo = doc.elements["cteProc/CTe/infCte/imp/ICMS/ICMS00/vBC"].get_text.to_s
    aliquota_icms = doc.elements["cteProc/CTe/infCte/imp/ICMS/ICMS00/pICMS"].get_text.to_s
    valor_icms = doc.elements["cteProc/CTe/infCte/imp/ICMS/ICMS00/vICMS"].get_text.to_s
    lotacao = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/lota"].get_text.to_s
    data_prevista_de_entrega = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/dPrev"].get_text.to_s
    tipo_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/tpVeic"].get_text.to_s
    placa_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/placa"].get_text.to_s
    uf_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/UF"].get_text.to_s
    renavan_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/RENAVAM"].get_text.to_s
    tara_em_kg_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/tara"].get_text.to_s
    capacidade_em_kg_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/capKG"].get_text.to_s
    capacidade_em_m3_do_veiculo = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/veic/capM3"].get_text.to_s
    nome_do_motorista = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/moto/xNome"].get_text.to_s
    cpf_do_motorista = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/moto/CPF"].get_text.to_s
    rntrc = doc.elements["cteProc/CTe/infCte/infCTeNorm/infModal/rodo/RNTRC"].get_text.to_s
    emissao = doc.elements["cteProc/CTe/infCte/ide/dhEmi"].get_text.to_s
    doc.get_elements("cteProc/CTe/infCte/vPrest/Comp").each do |comp|
      if comp.elements["xNome"].get_text.to_s == "FRETE VALOR"
        frete = comp.elements["vComp"].get_text.to_s
      elsif comp.elements["xNome"].get_text.to_s == "PEDAGIO"
        pedagio = comp.elements["vComp"].get_text.to_s
      elsif comp.elements["xNome"].get_text.to_s == "OUTROS"
        outros = comp.elements["vComp"].get_text.to_s
      end
    end
    if doc.get_elements("cteProc/CTe/infCte/infCTeNorm/infDoc/infNFe")
      doc.get_elements("cteProc/CTe/infCte/infCTeNorm/infDoc/infNFe").each do |key|
        keys << key.elements["chave"].get_text.to_s
      end
    end
    if doc.get_elements("cteProc/CTe/infCte/rem/infOutros")
      doc.get_elements("cteProc/CTe/infCte/rem/infOutros").each do |key|
        keys << key.elements["nDoc"].get_text.to_s
      end
    end

    return {
            expedidor: expedidor,
            recebedor: recebedor,
            municipio_do_emitente: municipio_do_emitente,
            municipio_do_remetente: municipio_do_remetente,
            municipio_do_destinatario: municipio_do_destinatario,
            municipio_do_expedidor: municipio_do_expedidor,
            municipio_do_recebedor: municipio_do_recebedor,
            municipio_de_origem: municipio_de_origem,
            municipio_de_destino: municipio_de_destino,
            municipio_de_emissao: municipio_de_emissao,
            numero: numero,
            serie: serie,
            chave_de_acesso: chave_de_acesso,
            tipo_do_cte: tipo_do_cte,
            tipo_do_servico: tipo_do_servico,
            tomador_do_servico: tomador_do_servico,
            forma_de_pagamento: forma_de_pagamento,
            codigo_do_cfop: codigo_do_cfop,
            descricao_do_cfop: descricao_do_cfop,
            cnpj_do_emitente: cnpj_do_emitente,
            inscricao_estadual_do_emitente: inscricao_estadual_do_emitente,
            nome_do_emitente: nome_do_emitente,
            nome_fantasia_do_emitente: nome_fantasia_do_emitente,
            logradouro_do_emitente: logradouro_do_emitente,
            numero_do_emitente: numero_do_emitente,
            bairro_do_emitente: bairro_do_emitente,
            cep_do_emitente: cep_do_emitente,
            cnpj_do_remetente: cnpj_do_remetente,
            inscricao_estadual_do_remetente: inscricao_estadual_do_remetente,
            nome_do_remetente: nome_do_remetente,
            logradouro_do_remetente: logradouro_do_remetente,
            numero_do_remetente: numero_do_remetente,
            bairro_do_remetente: bairro_do_remetente,
            cep_do_remetente: cep_do_remetente,
            cnpj_do_destinatario: cnpj_do_destinatario,
            inscricao_estadual_do_destinatario: inscricao_estadual_do_destinatario,
            nome_do_destinatario: nome_do_destinatario,
            logradouro_do_destinatario: logradouro_do_destinatario,
            numero_do_destinatario: numero_do_destinatario,
            bairro_do_destinatario: bairro_do_destinatario,
            cep_do_destinatario: cep_do_destinatario,
            cnpj_do_expedidor: cnpj_do_expedidor,
            inscricao_estadual_do_expedidor: inscricao_estadual_do_expedidor,
            nome_do_expedidor: nome_do_expedidor,
            logradouro_do_expedidor: logradouro_do_expedidor,
            numero_do_expedidor: numero_do_expedidor,
            bairro_do_expedidor: bairro_do_expedidor,
            cep_do_expedidor: cep_do_expedidor,
            cnpj_do_recebedor: cnpj_do_recebedor,
            inscricao_estadual_do_recebedor: inscricao_estadual_do_recebedor,
            nome_do_recebedor: nome_do_recebedor,
            logradouro_do_recebedor: logradouro_do_recebedor,
            numero_do_recebedor: numero_do_recebedor,
            bairro_do_recebedor: bairro_do_recebedor,
            cep_do_recebedor: cep_do_recebedor,
            produto_predominante: produto_predominante,
            unidade_de_medida: unidade_de_medida,
            quantidade: quantidade,
            valor_da_mercadoria: valor_da_mercadoria,
            responsavel: responsavel,
            valor_total: valor_total,
            valor_a_receber: valor_a_receber,
            base_de_calculo: base_de_calculo,
            aliquota_icms: aliquota_icms,
            valor_icms: valor_icms,
            lotacao: lotacao,
            data_prevista_de_entrega: data_prevista_de_entrega,
            tipo_do_veiculo: tipo_do_veiculo,
            placa_do_veiculo: placa_do_veiculo,
            uf_do_veiculo: uf_do_veiculo,
            renavan_do_veiculo: renavan_do_veiculo,
            tara_em_kg_do_veiculo: tara_em_kg_do_veiculo,
            capacidade_em_kg_do_veiculo: capacidade_em_kg_do_veiculo,
            capacidade_em_m3_do_veiculo: capacidade_em_m3_do_veiculo,
            nome_do_motorista: nome_do_motorista,
            cpf_do_motorista: cpf_do_motorista,
            rntrc: rntrc,
            emissao: emissao,
            frete: frete,
            pedagio: pedagio,
            outros: outros,
            keys: keys
           }
  rescue
    return nil
  end
end