class InovadoraXml::Modules::XmlRetorno
Attributes
cancelada[RW]
codigo_verificacao_nfse[RW]
data_hora_cancelamento[RW]
datahora_aprovacao[RW]
errors[RW]
fnnfse[RW]
fnnfses_xml[RW]
link_nota[RW]
numero_nota[RW]
protocolo_prefeitura[RW]
Public Class Methods
new(args={})
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 10 def initialize args={} self.errors = args[:errors] || ActiveModel::Errors.new(self) self.fnnfse = args[:fnnfse] validar_dados_iniciais(args) persistir_fnnfses_xml(args) end
Public Instance Methods
get_texto_errors()
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 62 def get_texto_errors texto_errors = '<erros>\n' texto_errors += "<erro>XML apresentou erros na geração e transmissão para o webservice</erro>\n" if self.errors.present? self.errors.full_messages.each do |msg| texto_errors += "<erro>#{msg}</erro>\n" end end texto_errors += '</erros>\n' texto_errors end
persistir_fnnfses_xml(args)
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 74 def persistir_fnnfses_xml(args) xml_resposta_ws = (args[:xml_retorno] rescue get_texto_errors) if xml_resposta_ws.blank? xml_resposta_ws = get_texto_errors end self.fnnfses_xml = FnnfsesXml.create( fnnfse_id: self.fnnfse.id, tipo_documento: args[:tipo_documento], xml_envio: (args[:xml_envio] rescue get_texto_errors), xml_resposta: xml_resposta_ws ) if self.fnnfses_xml.try(:get_erros).present? self.fnnfses_xml.get_erros.each do |erro| self.errors.add(:base, "Erro retornado pela prefeitura: #{erro}") end end if self.errors.blank? self.numero_nota = self.fnnfses_xml.get_numero_nota if (self.fnnfses_xml.get_numero_nota.present?) self.link_nota = self.fnnfses_xml.get_link_nota if (self.fnnfses_xml.get_link_nota.present?) self.codigo_verificacao_nfse = self.fnnfses_xml.get_codigo_verificacao_nfse if (self.fnnfses_xml.get_codigo_verificacao_nfse.present?) self.datahora_aprovacao = self.fnnfses_xml.get_data_emissao if (self.fnnfses_xml.get_data_emissao.present?) self.protocolo_prefeitura = self.fnnfses_xml.get_protocolo_prefeitura if (self.fnnfses_xml.get_protocolo_prefeitura.present?) if (self.fnnfses_xml.get_data_hora_cancelamento.present? rescue false) self.cancelada = true self.data_hora_cancelamento = self.fnnfses_xml.get_data_hora_cancelamento end end end
retornou_dados_nota?()
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 33 def retornou_dados_nota? self.errors.add(:base, "Número da nota não encontrado no XML de retorno da prefeitura") if self.numero_nota.blank? # self.errors.add(:base, "Link da nota não encontrado no XML de retorno da prefeitura") if self.link_nota.blank? self.errors.add(:base, "Código verificação da nota não encontrado no XML de retorno da prefeitura") if self.codigo_verificacao_nfse.blank? self.errors.add(:base, "Data aprovação da nota não encontrado no XML de retorno da prefeitura") if self.datahora_aprovacao.blank? self.valid? end
save()
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 41 def save if retornou_dados_nota? if self.valid? self.fnnfse.nao_validar_nota_autenticada = true self.fnnfse.fnnfses_sancionada.numero_nota = self.numero_nota self.fnnfse.fnnfses_sancionada.link_nota = self.link_nota self.fnnfse.fnnfses_sancionada.codigo_verificacao_nfse = self.codigo_verificacao_nfse self.fnnfse.fnnfses_sancionada.datahora_aprovacao = self.datahora_aprovacao self.fnnfse.fnnfses_sancionada.protocolo_prefeitura = self.protocolo_prefeitura self.fnnfse.save end if self.cancelada && self.data_hora_cancelamento.present? self.fnnfse.reload fnnfses_sancionada = self.fnnfse.fnnfses_sancionada fnnfses_sancionada.cancelada = true fnnfses_sancionada.motivo_cancelamento = fnnfses_sancionada.motivo_cancelamento.to_s + " Data/Hora cancelamento: #{self.data_hora_cancelamento.to_s_br}" fnnfses_sancionada.save end end end
valid?()
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 29 def valid? self.errors.blank? end
validar_dados_iniciais(args)
click to toggle source
# File lib/inovadora_xml/modules/xml_retorno.rb, line 17 def validar_dados_iniciais(args) if self.fnnfse.nil? self.errors.add(:base, "NFSe não encontrada") end if args.blank? || args[:xml_envio].blank? self.errors.add(:base, "XML para envio está em branco") end if args.blank? || args[:xml_retorno].blank? self.errors.add(:base, "XML de retorno está em branco") end end