
-font-style: normal">cobrança escritural, os arquivos texto trocados entre empresas e bancos contém informações necessárias para emissão, cobrança e baixa de boletos bancários.
Tipos de cobrança, dias para protesto e cálculo de juros, são apenas algumas dos dados contidos no arquivo. Esses arquivos ainda seguem o padrão CNAB estabelecido pela FEBRABAN (Federação dos Bancos) assim como outros órgãos tais como: ABAC, ANFAVEA, SINDIPEÇAS e etc.
Vale lembrar que os tais arquivos só funcionam se houver uma boa documentação e se seguirem rigorosas regras de validação e checagem dos bytes envolvidos na transmissão. Para entendermos melhor como funcionam e onde se aplica essa tecnologia elaborei um exemplo de envio de notas fiscais a uma empresa de contabilidade. Mãos na massa!
Preparando o banco de dados de exemplo
Para este exemplo, criaremos um banco de dados utilizando o Firebird 1.5 e uma tabela de Notas Fiscais com alguns registros. A estrutura do banco encontra-se no script da Listagem 1.
Listagem 1. Criação do banco de dados e tabela
SET NAMES WIN1251;
CREATE DATABASE 'localhost:<caminho>\EDI.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;
CREATE TABLE NOTASFISCAIS (
NUMERO DOUBLE PRECISION NOT NULL,
DOCUMENTO VARCHAR(2),
SERIE VARCHAR(2),
DATA_EMISSAO DATE,
UF_DESTINO VARCHAR(2),
NOME_RESPONSAVEL VARCHAR(31),
UF_RESPONSAVEL VARCHAR(2),
CGC_PAGADOR VARCHAR(18),
CGC_EMITENTE VARCHAR(18),
IE_RESPONSAVEL VARCHAR(18),
CFOP VARCHAR(6),
TOTAL_NOTA NUMERIC(15,2),
BASE_DE_CALCULO NUMERIC(15,2),
ALIQUOTA NUMERIC(15,2),
VALOR_IMPOSTO NUMERIC(15,2),
DIVERSOS NUMERIC(15,2),
BASE_IPI NUMERIC(15,2),
NAO_TRIBUTADO NUMERIC(15,2),
IPI NUMERIC(15,2),
OBS VARCHAR(62)
);
ALTER TABLE NOTASFISCAIS
ADD CONSTRAINT PRIMARIO_PK
PRIMARY KEY (NUMERO);
Com o banco de dados criado vamos ao exemplo

Figura 1. Exemplo da layout do projeto
O filtro utilizado para selecionar as notas fiscais a serem geradas, nesse caso, é baseado apenas na data de emissão das mesmas. Porém é bom ter em mente que cada caso requer uma atenção especial afim de selecionar as informações corretas e coerentes para popular o arquivo de EDI.
Antes de começamos a desenvolver a rotina para filtragem e geração do em si, precisamos preparar quatro procedures que auxiliarão na confecção correta das strings usadas no preenchimento do texto. São elas:
· PadL: usada para alinhar os textos à esquerda. Tem como função inserir caracteres em branco à direita da string até o limite estabelecido no segundo parâmetro;
· PadR: o contrário da PadL, ou seja, é usada para alinhar os textos à direita. Isso significa que a função insere caracteres em branco à esquerda da string até o limite estabelecido no segundo parâmetro;
· LimparString: será usada para retirar caracteres especiais da string, como: pontos, traços ou barras. Ideal para limpar máscaras de CNPJ, CPF etc.;
· IncluirPonto: em alguns campos de valor será necessário formatar incluindo pontos de decimal e milhar.
Para incluí-las no projeto declare-as na seção public ou private do formulário principal conforme a Listagem 2 e pressione CTRL+SHIFT+C para que o Delphi crie o cabeçalho das mesmas.
Listagem 2. Declaração das funções auxiliares
function PadL(ATexto: string;
ATamanho: Integer): string;
function PadR(ATexto: string;
ATamanho: integer): string;
function LimparString(ATexto,
ACaracteres: string): string;
function IncluirPonto(ATexto: string): string;
O código completo da implementação das procedures pode ser verificado na Listagem 3.
Listagem 3. Funções auxiliares
function TfrmPrincipal.PadR(ATexto: string;
ATamanho: integer): string;
var
i: integer;
begin
Result := ATexto;
...