O arquivo R03 é um formato exigido pela Receita Federal para a Declaração de Informações sobre Atividades Imobiliárias (DIMOB). Este script em Python foi desenvolvido para ler uma planilha Excel contendo informações de contratos de compra e venda de imóveis e gerar o arquivo de texto no formato correto.

Objetivo do Script

Este código realiza o processamento dos dados da planilha Excel e gera um arquivo de saída (saida.txt) no formato exigido pelo DIMOB.

Como Usar

  1. Preparar a Planilha Excel
  2. Revisar o Arquivo Gerado

Código do Script

import pandas as pd
import re

# Carregar os dados
df = pd.read_excel(r'C:\\Users\\Usuario\\Desktop\\Dimob\\teste_Dimob.xlsx')

# Remover espaços extras nos nomes das colunas
df.columns = df.columns.str.strip()

# Substituir valores nulos por strings vazias
df = df.fillna("")

# Função para limpar caracteres especiais do endereço
def limpar_endereco(endereco):
    return re.sub(r'[^\\w\\s]', '', endereco).strip()

# Criar o arquivo de saída
with open("saida.txt", "w", encoding="utf-8") as f:
    for index, row in df.iterrows():
        cpf_cnpj = str(row.get('CPF/CNPJ', '')).replace('.', '').replace('-', '').replace('/', '').strip()
        cpf_cnpj = cpf_cnpj if cpf_cnpj else "00000000000000"

        try:
            data_contrato = pd.to_datetime(row['Data Do Contrato']).strftime('%d%m%Y')
        except:
            data_contrato = "00000000"

        numero_sequencial = f"{index+1:07}"
        valor_operacao = f"{int(float(row.get('Operacao R$', 0))):014}"
        valor_pago = f"{int(float(row.get('Valor Pago', 0))):014}"
        endereco = limpar_endereco(str(row.get('Endereco', '')))[:60]
        cep = str(row.get('CEP', '')).replace('-', '')[:8]
        codigo_cidade = str(row.get('Código Cidade', ''))[:4]
        estado = str(row.get('Estado', '')).strip()[:2]

        linha = (
            f"R03"
            f"{'numero do CNPJ':<14}"
            f"2024"
            f"{numero_sequencial}"
            f"{cpf_cnpj:<14}"
            f"{row['Nome'][:60]:<60}"
            f"{str(row['Contrato'])[:6]:<6}"
            f"{data_contrato}"
            f"{valor_operacao}"
            f"{valor_pago}"
            f"U"
            f"{endereco:<60}"
            f"{cep:<8}"
            f"{codigo_cidade:<4}"
            f"{'':<20}"
            f"{estado:<2}"
            f"{'':<10}"
        )
        f.write(linha + "\\n")

print("Arquivo 'saida.txt' gerado com sucesso!")

Este script ajuda a automatizar a geração do arquivo R03, reduzindo erros manuais.