class NfseCarioca::GerarNfseXML

Public Class Methods

new(invoice_info) click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 3
def initialize(invoice_info)
 @invoice = invoice_info
end

Public Instance Methods

clear(value) click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 59
def clear(value)
  NfseCarioca::Sanitizer.new(value).clear
end
complement() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 84
def complement

end
document_number() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 92
def document_number
  @invoice[:customer][:document_number]
end
document_type() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 88
def document_type
  @invoice[:customer][:document_type]
end
phone_number() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 73
def phone_number
  number = @invoice[:customer][:phone_number].to_s.scan(/\d/).join.to_i.to_s

  if number.size > 11
    limit = number.size - 10
    number[limit..11]
  else
    number
  end
end
to_xml() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 7
def to_xml
  Gyoku.xml(
    "GerarNfseEnvio" => {
      "@xmlns" => "http://notacarioca.rio.gov.br/WSNacional/XSD/1/nfse_pcrj_v01.xsd",
      "Rps" => {
        "InfRps" => {
          "@xmlns" => "http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd",
          "@Id" => @invoice[:identification_number],
          "IdentificacaoRps" => {
            "Numero" => @invoice[:identification_number],
            "Serie" => NfseCarioca.configuration.rps_serie,
            "Tipo" => NfseCarioca.configuration.rps_tipo
          },

          "DataEmissao" => Time.now.strftime("%Y-%m-%dT%H:%M:%S"),
          "NaturezaOperacao" => NfseCarioca.configuration.rps_natureza_operacao,
          "OptanteSimplesNacional" => NfseCarioca.configuration.rps_optante_simples_nacional,
          "IncentivadorCultural" => NfseCarioca.configuration.rps_incentivador_cultural,
          "Status" => 1,

          "Servico" => {
            "Valores" => {
              "ValorServicos" => @invoice[:total],
              "ValorPis" => NfseCarioca.configuration.valor_pis,
              "ValorCofins" => NfseCarioca.configuration.valor_cofins,
              "ValorInss" => NfseCarioca.configuration.valor_inss,
              "ValorIr" => NfseCarioca.configuration.valor_ir,
              "ValorCsll" => NfseCarioca.configuration.valor_csll,
              "IssRetido" => NfseCarioca.configuration.iss_retido,
              "ValorIss" => NfseCarioca.configuration.valor_iss,
              "Aliquota" => NfseCarioca.configuration.valor_aliquota
            },

            "ItemListaServico" => NfseCarioca.configuration.item_lista_servico,

            "CodigoTributacaoMunicipio" => tributacao,
            "Discriminacao" => @invoice[:description],
            "CodigoMunicipio" => NfseCarioca.configuration.codigo_municipio
          },

          "Prestador" => {
            "Cnpj" => NfseCarioca.configuration.cnpj,
            "InscricaoMunicipal" => NfseCarioca.configuration.inscricao_municipal
          },

          "Tomador" => tomador
        }
      }
    }
  )
end
tomador() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 96
def tomador
  xml = {}

  if document_type.present?
    xml["IdentificacaoTomador"] = {
      "CpfCnpj" => { document_type => document_number }
    }
  end

  if @invoice[:customer][:name].present?
    xml["RazaoSocial"] = clear(@invoice[:customer][:name])
  end

  if @invoice[:customer][:address].present?
    xml["Endereco"] = {
      "Endereco" => clear(@invoice[:customer][:address][:street]),
      "Numero" => clear(@invoice[:customer][:address][:number])
    }

    if @invoice[:customer][:address][:complement].present?
      xml["Endereco"]["Complemento"] = clear(@invoice[:customer][:address][:complement])
    end

    xml["Endereco"]["Bairro"] = clear(@invoice[:customer][:address][:neighborhood])
    xml["Endereco"]["CodigoMunicipio"] = @invoice[:customer][:address][:city_ibge_code]
    xml["Endereco"]["Uf"] = @invoice[:customer][:address][:state_code]
    xml["Endereco"]["Cep"] = @invoice[:customer][:address][:zipcode].scan(/\d/).join
  end

  if phone_number.present?
    xml["Contato"] = {
      "Telefone" => phone_number,
      "Email" => @invoice[:customer][:email]
    }
  else
    xml["Contato"] = { "Email" => @invoice[:customer][:email] }
  end

  xml
end
tributacao() click to toggle source
# File lib/nfse_carioca/gerar_nfse_xml.rb, line 63
def tributacao
  tributacao = NfseCarioca.configuration.codigo_tributacao_municipio

  if @invoice[:tax_benefit]
    "#{@invoice[:tax_benefit]}#{tributacao}"
  else
    tributacao
  end
end