Olá EMBarbosa, tudo bom.
Existe alguma sugestão de padronização de nome algo para que fique dentro dos componente do acbr?
Eu criei o meu componente baseado no acbrsintegra.
//4.9.5 Tabela de Mercadorias/Serviços
TRegistro495 = class
private
FDescricao: string;
FCodigo_Mercadoria: string;
FData_Atualizacao: Tdatetime;
public
property Data_Atualizacao: Tdatetime read FData_Atualizacao write FData_Atualizacao;
property Codigo_Mercadoria: string read FCodigo_Mercadoria write FCodigo_Mercadoria;
property Descricao: string read FDescricao write FDescricao;
end;
TRegistros495 = class(TObjectList)
protected
procedure SetObject(Index: integer; Item: TRegistro495);
function GetObject(Index: integer): TRegistro495;
procedure Insert(Index: integer; Obj: TRegistro495);
public
function Add(Obj: TRegistro495): integer;
property Objects[Index]: TRegistro495 read GetObject
write SetObject; default;
end;
Geração do TXT
{4.9.5 Tabela de Mercadorias/Serviços}
procedure TCofis252010.GeraArquivo495;
var
wregistro: string;
i : Integer;
begin
if Trim(FileName) = '' then
raise Exception.Create(ACBrStr('Informe um nome de arquivo!'));
AssignFile(Arquivo, FileName);
Rewrite(Arquivo);
try
for i := 0 to Registros495.Count - 1 do
begin
with Registros495[i] do
begin
wregistro := '';
wregistro := wregistro+ Alinha_Txt('N',FormatDateTime(Form_Data, Data_Atualizacao),8); //N
wregistro := wregistro+ Alinha_Txt('C',Codigo_Mercadoria, 20); //C
wregistro := wregistro+ Alinha_Txt('C',Descricao, 45); //C
// Grava linha no arquivo
write(Arquivo, wregistro + #13 + #10);
end;
end;
finally
CloseFile(Arquivo);
LimparRegistros;
end;
end;
Exemplo de como eu passo valor para a classe
// 4.9.5 Tabela de Mercadorias/Serviços
procedure TfrmPrincipal.GeraRegistro495;
var
wregistro495: TRegistro495;
begin
// Nome do arquivo
Cofis252010.FileName := Nome_arquivo('Mercadorias', dblkcbbano.Text,'CADASTROS',
dblkcbbmes.Text, dblkcbbcdemp.KeyValue);
with Cofis252010 do
begin
// Gera arquivo de empresa
qryLstRegistro495.Close;
qryLstRegistro495.Params[0].AsString := dblkcbbano.Text;
qryLstRegistro495.Params[1].AsString := dblkcbbmes.Text;
qryLstRegistro495.Params[2].AsString := dblkcbbcdemp.KeyValue;
qryLstRegistro495.Open;
if not qryLstRegistro495.IsEmpty then
begin
qryLstRegistro495.First;
while not qryLstRegistro495.Eof do
begin
wregistro495 := TRegistro495.Create;
wregistro495.Data_Atualizacao :=
StrToDate('01/' + dblkcbbmes.Text + '/' + dblkcbbano.Text);
wregistro495.Codigo_Mercadoria := qryLstRegistro495cditem.AsString;
wregistro495.Descricao := qryLstRegistro495deitem.AsString;
Cofis252010.Registros495.Add(wregistro495);
qryLstRegistro495.Next; // proximo item
end;
// Gera o arquivo de produtos
Cofis252010.GeraArquivo495;
lblstatus.Caption :=
'Arquivo de Mercadorias / Produtos - Gerado com sucesso';
end;
end;
end;
Para quem não conhece sobre a geração de arquivos para entrega para o auditor fiscal.
Leia mais em:
http://www.receita.fazenda.gov.br/previdencia/ArquivosDigitais/default.htm
Alguma sugestão de melhorias no padrao utilizado ?