Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4520 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Estou tentando gerar o registro C470 com as informações adicionais do G5 Phoenix;

Estou encontrando dificuldade em função do C470 ser um filho de C460 e então nao consigo pegar no evento a relação entre o item que esta formatando o texto e a quem se refer para adicionar as informações do G5.

Os eventos não indicam qual o registro que esta sendo montado,ele só passa a string em construção, assim não tem como fazer relação dos dados em construção com os dados que devem ser adicionados;

Se alguem coseguiu fazer, poderia dar um exemplo ?

Reflexões:

- Penso que a declaração do evento ficou simplista ao ponto de não identificar quem é o chamador o que dificulta identificar o documento e cruzar informações em meio ao processo; Deveria indicar qual o registro esta chamando o evento;

- As funções que criam os registros, poderiam ser declarados como VIRTUAL, assim possibilitaria acomodar estas situações que precisam de informações adicionais ligadas ao registro, ou, se existisse uma função virtual que retornasse qual a classes de registro a ser instanciada;

Amarildo Lacerda

Storeware Team

Postado

Tentando alterar o mínimo possível no ACBr consegui gerar o 470 criando TACBrEFD_G5 = class(TACBrSpedFiscalExt); (veja o codigo anexo);

Para inicializar o object:

sped := TACBrEFD_G5.create(nil); // herda de TACBrSpedFiscal

Para criar o registro C470....

C470 := sped.RegistroC470New;

With C470 {bloco_C.registroC470New} Do

Begin

COD_ITEM := '1';

QTD := 1;

UNID := 'KG';

QTD_CANC := 0;

VL_ITEM := 100;

CST_ICMS := '000';

CFOP := '5102';

Aliq_ICMS := 18;

VL_PIS := 0,65;

VL_COFINS := 3,00;

if C470 is TRegistroC470_G5 then // avalia se é para gerar dados do G5

with TRegistroC470_G5(C470) do

begin

CST_PIS := '01';

VL_BC_PIS := 100;

ALIQ_PIS := 0,65;

CST_COFINS := '01';

VL_BC_COFINS := 100;

ALIQ_COFINS := 3;

IND_MOV := '1';

end;

End;

nao precisa fazer mais nada... o evento da classe é que vai adicionar a informação na linha;

O que precisa mudar no ACBr:

- passar para Protected/Virtual -> procedure WriteRegistroC470(RegC460: TRegistroC460);virtual

em ACBrEFDBloco_C_Class.pas;

[fim]

ACBrEFD_G5.pas

Amarildo Lacerda

Storeware Team

  • Este tópico foi criado há 4520 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...