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.
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.
saida.txt será criado no diretório indicado no 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!")