Importação de OFX – Banco do Brasil

Recentemente tivemos problema com importação do OFX do banco Brasil, todo arquivo OFX exportado mostrava somente o tipo de operação sem mostrar a descrição, então qualquer aplicativo financeiro que utiliza OFX não conseguia identificar de onde era a compra, sendo obrigado acessar o internet banking para realizar a comparação e assim alimentar o sistema financeiro.

A grande salvação foi que o banco Brasil possui arquivos em formato BBT, onde é utilizado para remessa de arquivos de banco, a vantagem desse formato de arquivo era que as informações de descrição continham nele, porém nenhum software era compatível com formato BBT, a não os do próprio Banco.

Para solucionar o problema desenvolvemos um Shell Script capaz de converter arquivos no formato BBT, para OFX, podendo ser importado em qualquer sistema financeiro compatível com OFX e ainda com as informações de descrição que continham no BBT.

 

Segue abaixo o script:

#!/bin/bash
file_in=”$1″
file_out=”$2″
printf “OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:UTF-8
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>$(date +%Y%m%d)
<LANGUAGE>POR
<DTACCTUP>$(date +%Y%m%d)
<FI>
<ORG>Banco do Brasil S/A
<FID>001
</FI>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>0
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<STMTRS>
<CURDEF>BRL
<BANKACCTFROM>
<BANKID>001
<ACCTID>46925-4
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20170531
<DTEND>20170612
” > $file_out

# Itens
#Agência; Conta;;DataIN;DataOut;Agencia Origem;Lote;DOC;COD;Descrição Transação;Valor;Credito/Debito;Descrição Geral
#31844;000000469254; ;31052017;31052017;0000;00000;00000000000000000;000;Saldo Anterior ;00000000000087578;C;
#AGENCIA CONTA VOID DATAIN DATAOUT AGENCIAORIG LOTE DOC COD DESCT VALUE TYPE DESC
#LINE[1] LINE[2] LINE[3] LINE[4] LINE[5] LINE[6] LINE[7] LINE[8] LINE[9] LINE[10] LINE[11] LINE[12] LINE[13]
BALANCO=0
printf “”
while read -r LINE $file_indo
do
AGENCIA=$(echo $LINE | cut -d ‘;’ -f1)
CONTA=$(echo $LINE | cut -d ‘;’ -f2)
DATAIN=$(echo $LINE | cut -d ‘;’ -f4)
DATAOUT=$(echo $LINE | cut -d ‘;’ -f5)
AGENCIAORIG=$(echo $LINE | cut -d ‘;’ -f6)
LOTE=$(echo $LINE | cut -d ‘;’ -f7)
DOC=$(echo $LINE | cut -d ‘;’ -f8)
COD=$(echo $LINE | cut -d ‘;’ -f9)
DESCT=$(echo $LINE | cut -d ‘;’ -f10)
VALUE=$(echo $LINE | cut -d ‘;’ -f11)
TYPE=$(echo $LINE | cut -d ‘;’ -f12)
DESC=$(echo $LINE | cut -d ‘;’ -f13)

if [ -z “$(echo $DESC | tr -d [:cntrl:])” ]; then
DESC=$DESCT
fi

if [ “$COD” != “000” ] && [ “$COD” != “999” ]; then
TRNAMT=$(echo “scale=2;$VALUE / 100” | bc -l)
if [ “$TYPE” = “C” ]; then
TRNTYPE=”DEP”;
else
TRNTYPE=”DEBIT”
TRNAMT=”-$TRNAMT”
fi

printf ” <STMTTRN>
<TRNTYPE>$TRNTYPE
<DTPOSTED>$(echo $DATAOUT | awk ‘BEGIN {OFS=””}{print substr($1,5,4), substr($1,3,2), substr($1,1,2)}’)
<TRNAMT>$TRNAMT
<FITID>$(echo $(date +%Y%m%d)$VALUE)
<CHECKNUM>$(uuidgen | tr -d \-)
<MEMO>$DESC
</STMTTRN>
” >> $file_out
BALANCO=$(echo “scale=2; $BALANCO + $TRNAMT” | bc -l);
fi
done < “$file_in”;
printf ” </BANKTRANLIST>
<LEDGERBAL>
<BALAMT>$BALANCO
<DTASOF>$(date +%Y%m%d)
</LEDGERBAL>
<MKTGINFO>Banco do Brasil, esse parceiro é todo seu.
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>” >> $file_out

in Tags: bancobbbbtbrasilfinanceirolinuxofxshellshell Script

Related Articles