Jump to content

dev botao

SPED REGISTRO D100 SAIDA


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

Recommended Posts

  • Moderadores

Em caso de NFs de serviço canceladas está dando erro:

"Para documento fiscal cancelado (código da situação = 02 ou 03) ou NFe denegada (04) ou NFe inutilizada (05), somente os campos código da situação, indicador de operação, código do modelo e a "chave do documento" e os campos CHV_NFE e CHV_CTE para os registros que possuam os campos."

Então no registroD100 deveria jogar vazio nesses campos, mas os campos marcados não tem como

COD_PART := '';

>>>> DT_DOC := '';

>>>> DT_A_P := '';

TP_CT_e := '';

CHV_CTE_REF := '';

>>>> VL_DOC := '';

>>>> VL_DESC := '';

IND_FRT :=tfNenhum;

>>>> VL_SERV := '';

>>>> VL_BC_ICMS := '';

>>>> VL_ICMS := '';

>>>> VL_NT := '';

COD_INF :='';

COD_CTA :='';

Link to comment
Share on other sites

  • Moderadores

Para solucionar o erro acima (a nivel provisório) foi necessário desconsiderar as NFs de Serviço canceladas. Mas essas notas devem fazer parte do Registro D100

Então no registroD100 deveria jogar vazio nos campos se a nota estiver cancelada:

COD_PART := '';

DT_DOC := '';

DT_A_P := '';

TP_CT_e := '';

CHV_CTE_REF := '';

VL_DOC := '';

VL_DESC := '';

IND_FRT :=tfNenhum;

VL_SERV := '';

VL_BC_ICMS := '';

VL_ICMS := '';

VL_NT := '';

COD_INF :='';

COD_CTA :='';

só que alguns campos são tipo currency ou data.

Link to comment
Share on other sites

  • 2 weeks later...
  • Consultores

Olá Gr@ç@,

Eu estou bem por fora dos detalhes sobre CTE. Mas acredito que haja uma solução bem simples.

Existe algum jeito de sabermos, no quando da execução do método TBloco_D.WriteRegistroD100 se a Nota foi cancelada ou não? Não seria só verificar se o campo COD_SIT é 02, 03, 04 ou 05 ?

Isso permitiria escrevermos uma rotina alternativa só pra esses casos... exemplo:

procedure TBloco_D.WriteRegistroD100(RegD001: TRegistroD001) ;
var
intFor: integer;
strIND_FRT: AnsiString;
strCOD_SIT: AnsiString;
begin
if Assigned( RegD001.RegistroD100 ) then
begin
for intFor := 0 to RegD001.RegistroD100.Count - 1 do
begin
with RegD001.RegistroD100.Items[intFor] do
begin
case IND_FRT of
tfPorContaTerceiros: strIND_FRT := '0';
tfPorContaEmitente: strIND_FRT := '1';
tfPorContaDestinatario: strIND_FRT := '2';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end;
case COD_SIT of
sdRegular: strCOD_SIT := '00';
sdExtempRegular: strCOD_SIT := '01';
sdCancelado: strCOD_SIT := '02';
sdCanceladoExtemp: strCOD_SIT := '03';
sdDoctoDenegado: strCOD_SIT := '04';
sdDoctoNumInutilizada: strCOD_SIT := '05';
sdFiscalCompl: strCOD_SIT := '06';
sdExtempCompl: strCOD_SIT := '07';
sdRegimeEspecNEsp: strCOD_SIT := '08';
end;

//No Caso abaixo não deve informar todos os campos...
if COD_SIT in [sdCancelado, sdCancelado, sdDoctoDenegado, sdDoctoNumInutilizada] then
begin
Add( LFill('D100') +
LFill( Integer(IND_OPER), 0 ) +
LFill( Integer(IND_EMIT), 0 ) +
LFill( '' ) + //COD_PART
LFill( COD_MOD ) +
LFill( strCOD_SIT ) +
LFill( SER ) +
LFill( SUB ) +
LFill( NUM_DOC ) +
LFill( CHV_CTE ) +
LFill( '' ) + //DT_DOC
LFill( '' ) + //DT_A_P
LFill( '' ) + //TP_CT_e
LFill( '' ) + //CHV_CTE_REF
LFill( '' ) + //VL_DOC
LFill( '' ) + //VL_DESC
LFill( strIND_FRT ) +
LFill( '' ) + //VL_SERV
LFill( '' ) + //VL_BC_ICMS
LFill( '' ) + //VL_ICMS
LFill( '' ) + //VL_NT
LFill( '' ) + //COD_INF
LFill( '' ) ) ; //COD_CTA
end
else
Add( LFill('D100') +
LFill( Integer(IND_OPER), 0 ) +
LFill( Integer(IND_EMIT), 0 ) +
LFill( COD_PART ) +
LFill( COD_MOD ) +
LFill( strCOD_SIT ) +
LFill( SER ) +
LFill( SUB ) +
LFill( NUM_DOC ) +
LFill( CHV_CTE ) +
LFill( DT_DOC ) +
LFill( DT_A_P ) +
LFill( TP_CT_e ) +
LFill( CHV_CTE_REF ) +
LFill( VL_DOC,0,2 ) +
LFill( VL_DESC,0,2 ) +
LFill( strIND_FRT ) +
LFill( VL_SERV,0,2 ) +
LFill( VL_BC_ICMS,0,2 ) +
LFill( VL_ICMS,0,2 ) +
LFill( VL_NT,0,2 ) +
LFill( COD_INF ) +
LFill( COD_CTA ) ) ;
end;
/// Registros FILHOS
WriteRegistroD110( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD130( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD140( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD150( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD160( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD170( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD180( RegD001.RegistroD100.Items[intFor] ) ;
WriteRegistroD190( RegD001.RegistroD100.Items[intFor] ) ;

RegistroD990.QTD_LIN_D := RegistroD990.QTD_LIN_D + 1;
end;
/// Variavél para armazenar a quantidade de registro do tipo.
FRegistroD100Count := FRegistroD100Count + RegD001.RegistroD100.Count;
end;
end;[/code]

Substitua esse IF acima no seu código do TBloco_D.WriteRegistroD100 do arquivo ACBrECFBloco_D_Class.pas e veja se resolve por favor... Se resolver eu já subo pro SVN...

"Para documento fiscal cancelado (código da situação = 02 ou 03) ou NFe denegada (04) ou NFe inutilizada (05), somente os campos código da situação, indicador de operação, código do modelo e a "chave do documento" e os campos CHV_NFE e CHV_CTE para os registros que possuam os campos."

Você pode também me indicar onde você encontrou essa informação de preenchimento? Só pra efeito de depois alguém questionar as alterações?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.