module InovadoraXml::Modules::DadosNfseService

Public Instance Methods

get_aliquota() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 113
def get_aliquota
  self.fnnfse.percentual_iss || 0.0
end
get_cnpj_prestador() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 117
def get_cnpj_prestador
  self.hospital.cgc.to_s.gsub(/[^0-9]/, "")
end
get_codigo_municipio_prest_servico() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 125
def get_codigo_municipio_prest_servico
  self.hospital.cidade_ibge.try(:ibge_com_digito)
end
get_informacoes_complementares() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 94
def get_informacoes_complementares
  mensagem = self.fnnfse.observacao.to_s.strip
  if self.fnnfse.cliente_type == "Paciente"
    intern = self.fnnfse.fnnfses_interns.try(:first).try(:intern)
    unless intern.blank?
      mensagem += " Intern:#{intern.id}-#{intern.paciente.try(:nome).try(:strip)}"
      mensagem += " Conv.:#{self.fnnfse.get_convenio.try(:nome).try(:strip)}"
      mensagem += " CPF:#{intern.paciente.cpf}" if intern.paciente.cpf.to_s.strip != "" && intern.paciente.cpf.to_s.strip != "0"
      mensagem += " Nasc:#{intern.paciente.data_nascimento.to_s_br}"
    end
  end
  mensagem = nil if mensagem.to_s.strip.blank?
  mensagem
end
get_inscricao_municipal_prestador() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 121
def get_inscricao_municipal_prestador
  self.hospital.inscricao_municipal.to_s.gsub(/[^0-9]-/, "")
end
get_item_lista_servico() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 109
def get_item_lista_servico
  self.hospital.iss_cd_lei_116 || '4.03'
end
get_itens_servicos() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 14
def get_itens_servicos
  case self.parametro.fornecedor
  when 7..8  # Publica e #NF-em
    get_itens_servicos_publica
  else
    "Não implementado para esse fornecedor"
  end
end
get_itens_servicos_publica() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 23
def get_itens_servicos_publica
  itens_da_nota= "{"
  if self.fnnfse.descritivo_servico.to_s == ""
    unless self.fnnfse.fnpacote.nil?
      itens_da_nota += "[" +
        "[Descricao=#{self.fnnfse.try(:fnpacote).try(:descricao)} #{fnnfse.obs_pacote}]" +
        "[Quantidade=1.0]" +
        "[ValorUnitario=#{self.fnnfse.valor_pacote}]" +
        "[Deducoes=0]" +
        "[DescontoCondicionado=0]" +
        "[DescontoIncondicionado=#{self.fnnfse.valor_pacote_desconto.to_f.round(2)}]" +
        "[Aliquota=#{get_aliquota}]" +
        "[itemServico=#{get_item_lista_servico}]" +
        "]"
    end
    self.fnnfse.fnnfseis.each do |fnnfsei|
      qtde = fnnfsei.qtde.to_f.round(2) == 0 ? 1.0 : fnnfsei.qtde.to_f.round(2)
      itens_da_nota += "[" +
        "[Descricao=#{fnnfsei.ftforma.nome}]" +
        "[Quantidade=#{qtde}]" +
        "[ValorUnitario=#{(fnnfsei.valor.to_f / qtde).round(8)}]" +
        "[Deducoes=0]" +
        "[DescontoCondicionado=0]" +
        "[DescontoIncondicionado=#{fnnfsei.desconto.to_s.to_d}]" +
        "[Aliquota=#{get_aliquota}]" +
        "[itemServico=#{get_item_lista_servico}]" +
        "]"
    end
  else
    itens_da_nota += "[" +
      "[Descricao=#{self.fnnfse.descritivo_servico}]" +
      "[Quantidade=1.0]" +
      "[ValorUnitario=#{self.fnnfse.valor_servicos}]" +
      "[Deducoes=0]" +
      "[DescontoCondicionado=0]" +
      "[DescontoIncondicionado=#{self.fnnfse.valor_descontos}]" +
      "[Aliquota=#{get_aliquota}]" +
      "[itemServico=#{get_item_lista_servico}]" +
      "]"
  end
  itens_da_nota += "}"
end
get_itens_servicos_texto() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 66
def get_itens_servicos_texto
  itens_da_nota = ""
  if self.fnnfse.descritivo_servico.to_s == ""
    if self.fnnfse.try(:fnpacote).present?
      itens_da_nota += "#{self.fnnfse.try(:fnpacote).try(:descricao)} #{fnnfse.obs_pacote} " +
                       "Valor: #{self.fnnfse.valor_pacote} " +
                       "Desconto: #{self.fnnfse.valor_pacote_desconto.to_f.round(2)}"
    end
    if self.fnnfse.fnnfseis.size > 1
      self.fnnfse.fnnfseis.each do |fnnfsei|
        qtde = fnnfsei.qtde.to_f.round(2) == 0 ? 1.0 : fnnfsei.qtde.to_f.round(2)
        itens_da_nota += "- #{fnnfsei.ftforma.nome} Qtde: #{qtde} " +
                            "Valor: #{((fnnfsei.valor.to_f / qtde).round(8)).round(2)} " +
                            (fnnfsei.desconto.to_s.to_d>0 ? "Desconto: #{fnnfsei.desconto.to_s.to_d.round(2)}" : "") +
                            " \n"
      end
    else
      fnnfsei = self.fnnfse.fnnfseis.first
      itens_da_nota += "#{fnnfsei.ftforma.nome}" rescue ""
    end
  else
    itens_da_nota += "#{self.fnnfse.descritivo_servico} " +
                      "Valor: #{self.fnnfse.valor_servicos.to_d.round(2)} " +
                      (self.fnnfse.valor_descontos.to_d>0 ? "Desconto: #{self.fnnfse.valor_descontos.to_d.round(2)}" : "")
  end
  itens_da_nota
end
get_numero_lote_rps() click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 5
def get_numero_lote_rps
  self.fnnfse.build_fnnfses_sancionada if self.fnnfse.fnnfses_sancionada.blank?
  (self.fnnfse.fnnfses_sancionada.numero_rps = self.fnnfse.class.connection.select_value("SELECT nextval('gestho.prox_nro_rps_nfse')")) if self.fnnfse.fnnfses_sancionada.numero_rps.to_s == ""

  self.fnnfse.fnnfses_sancionada.numero_lote_rps = self.fnnfse.class.connection.select_value("SELECT nextval('gestho.prox_nro_lote_rps_nfse')")
  self.fnnfse.fnnfses_sancionada.save
  return self.fnnfse.fnnfses_sancionada.numero_lote_rps
end
persistir_fnnfses_xml(xml, tipo_documento = 17) click to toggle source
# File lib/inovadora_xml/modules/dados_nfse_service.rb, line 129
def persistir_fnnfses_xml(xml, tipo_documento = 17)
  xml_tratado = Nokogiri::XML(CGI.unescapeHTML(xml.to_xml.to_s), &:noblanks)
  xml_tratado = xml_tratado.to_xml(indent: 2).to_s
  if xml_tratado.blank?
     xml_tratado = "xml não recebido da prefeitura"
  end
  # $b = {fnnfse: self.fnnfse, xml_envio: self.xml_gerado().to_s, xml_retorno: xml_tratado, errors: self.errors, tipo_documento: tipo_documento}

  retorno_service = InovadoraXml::Modules::XmlRetorno.new(fnnfse: self.fnnfse, xml_envio: self.xml_gerado().to_s, xml_retorno: xml_tratado, errors: self.errors, tipo_documento: tipo_documento)

  retorno_service.save
end