class Cte
Public Class Methods
new(xml_content)
click to toggle source
# File lib/sefazp/cte.rb, line 2 def initialize(xml_content) @xml_content = xml_content end
Public Instance Methods
parse()
click to toggle source
# 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