Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Olá, verifiquei, que ao vender produtos com pis/cofins na CST05, não está gerando as tags no XML

 

Segundo o manual, no caso da CST05, deve ser informado na tag PISAliq.

 

Nos métodos GerarDetImpostoPIS e GerarDetImpostoCOFINS na unit pcnCFeW, alterei e coloquei o seguinte else if abaixo do else if para as csts: pis01, pis02, assim como no metodo do cofins.

  else if CFe.Det[i].Imposto.PIS.CST = pis05 then
  begin
    Gerador.wGrupo('PISAliq', 'Q02');
    Gerador.wCampo(tcStr, 'Q07', 'CST      ', 02, 02, 1, CSTPISTOStr(CFe.Det[i].Imposto.PIS.CST), DSC_CST);
    Gerador.wCampo(tcDe2, 'Q08', 'vBC      ', 03, 15, 1, 0 {forçando vBC zerado, pois é substituição tritubária}, DSC_VBC);
    Gerador.wCampo(tcDe4, 'Q09', 'pPIS     ', 05, 05, 1, 0 {forçando pPIS zerado, pois é substituição tritubária}, DSC_PPIS);
    if not FApenasTagsAplicacao then
       Gerador.wCampo(tcDe2, 'Q10', 'vPIS     ', 01, 15, 1, CFe.Det[i].Imposto.PIS.vPIS, DSC_VPIS);
    Gerador.wGrupo('/PISAliq');
  end

Até ai tudo bem, resolveu.

 

Porém fiquei em dúvida se seria somente essa alteração, pois ao enviar um cancelamento de um item com pis05/cofins05, o cancelamento é efetuado, porém tenho o retorno List Index Out of bounds (3) apos carregar o XML original que esta em nosso banco no ACBrSAT, chamar o metodo CFe2CFeCanc, e o CancelarUltimaVenda.

 

Itens que não tem essa CST estão cancelamento normalmente.

 

Pessoal que tem mais experiência com os componentes... deixei passar algo alem dessa alteração?

 

Obs: No emulador o cancelamento funciona.

Editado por EddieBR
  • Curtir 1
Postado

Segue a modificação (trunk).

 

Apenas para explicar melhor, a venda ocorre normalmente após a alteração (SAT Bematech em produção).

 

O problema esta no cancelamento, que é feito no equipamento, porém retorna "list index out of bounds (3)" ao chamar o CancelarUltimaVenda, e o arquivo XML de cancelamento não é gravado.

 

O XML de envio pelo que verifiquei esta normal, consta a chave do cfe.

 

Pelo emulador funciona normalmente.

Postado (editado)

Consegui debugar.

 

O Erro ocorre no método SetRetornoStr, na linha 371 da unit ACBrSATClass.pas.

fcodigoSEFAZ     := StrToIntDef( fRetornoLst[index+1], 0);

List index out of bounds(3).

 

Verificando nos logs do equipamento, o cupom foi cancelado, e ao tentar novamente retorna que o cupom já foi cancelado.

 

Primeira tentativa:
20150622194418|AC-SAT|info|Recebendo dados de cancelamento                                                                     
20150622194418|AC-SAT|info|Dados de cancelamento recebidos com sucesso                                                         
20150622194418|AC-SAT|info|Mecanismo de segurança de emissão criado com sucesso                                              
20150622194418|SAT-AC|info|Cupom cancelado com sucesso                                                                         
20150622194418|SAT-AC|info|266392|07000|0000|Cupom cancelado com sucesso + conteúdo CF-eSAT cancelado.|||PENGZUNh             
20150622194419|SAT-AC|info|CancelarUltimaVenda executado com sucesso                                                           
 
Segunda tentativa:
20150622194947|AC-SAT|info|Recebendo dados de cancelamento                                                                     
20150622194947|AC-SAT|info|Dados de cancelamento recebidos com sucesso                                                         
20150622194947|AC-SAT|erro|Tentativa de cancelar um CFe já cancelado                                                          
20150622194947|SAT-AC|erro|Erro ao cancelar o cupom fiscal                                                                     
Editado por EddieBR
Postado (editado)

Daniel, tive que modificar aqui para conseguir gerar um log, pois originalmente o log seria gerado apenas após o erro acontecer.

 

A mudança foi:

function TACBrSAT.FinalizaComando( AResult : String ) : String ;
var
  AStr : String ;
begin
  fsRespostaComando := DecodificarPaginaDeCodigoSAT( AResult );
  Result := fsRespostaComando;

  fsComandoLog := '';
  AStr := 'NumeroSessao: '+IntToStr(numeroSessao) ;
  if fsRespostaComando <> '' then
     AStr := AStr + ' - Resposta:'+fsRespostaComando;

//log temporario 
DoLog('LogTeste fsRespostaComando: '+fsRespostaComando);

  Resposta.RetornoStr := fsRespostaComando;

  DoLog( AStr );

Com o meu log, a resposta que tive estranhamente foi:

 

 - 10:15:30:121 - LogTeste fsRespostaComando: Erro|Erro na leitura da porta de comunicacao com o S@T|Header

 

Me parece que o SAT da bematech esta retornando errado, pois o cancelamento está sendo feito.

Editado por EddieBR
Postado (editado)

Certo Daniel, porém com a resposta que o equipamento está apresentando, o CodigoDeRetorno será 0, pois o SAT está cancelando normalmente, porém retornando erro.

 

Estou vendo algumas informações sobre o PIS/COFINS 05 na NFe, onde o pessoal diz que no Layout não contempla, e estao usando CST 08.

 

Porém na NFe 3.1 passou a aceitar a CST 05 no Grupo PIS não tributado.

 

Acredito que tenha algum problema com o SAT ao usar CST 05 no cancelamento.

Editado por EddieBR
Postado

Daniel, desculpe se não deu para entender. o log do ACBrSAT não estava sendo gerado, pois a gravação do log era executada depois da exception.

 

Eu modifiquei a função FinalizaComando para logar a resposta do equipamento antes da exception, e obter a string que esta sendo enviada para Resposta.RetornoStr.

 

Se quiser rodo novamente com as alterações que voçê fez, mas a resposta será a mesma, só não irá dar exception.

 

Erro|Erro na leitura da porta de comunicacao com o S@T|Header

 

Essa string explica o list index out of bounds.

 

Para mim não é problema do ACBr, e sim da DLL da bematech que esta mandando resposta errada.

  • Curtir 1
  • Fundadores
Postado

Humm.. agora compreendi o problema do Log...

Mas acho que com a verificação de Índice não haverá problema na interpretação

Mas realmente a Bematech foi infeliz em quebra o protocolo da msg

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Testei com a correção e resolveu a exception.

Problema é com a bematech mesmo, pois continua retornando o erro de falha de comunicação.

Passei o caso para o suporte deles, vamos aguardar agora.

Postado (editado)

Eu também estou precisando desta modificação para o CST PIS/COFINS 05

Parece que não está no SVN?

Só uma dúvida... na linha 

Gerador.wCampo(tcDe4, 'Q09', 'pPIS     ', 05, 05, 1, 0 {forçando pPIS zerado, pois é substituição tritubária}, DSC_PPIS);

No entanto em http://www.fazenda.sp.gov.br/sat/duvidas_frequentes/OrientaçõesLeiauteCF-e_v00.05-0 - AD.pdf diz que a alíquota deve ser informada. Apenas a base de cálculo deve ir zerada...

Outra coisa, o cancelamento do cupom no sat sweda não houve problema aqui...

Editado por evandromira
  • Fundadores
Postado

Apliquei uma correção no SVN (trunk e trunk2) baseado nas modificações propostas...

Também fiz um sincronismo entre Trunk2 e Trunk com as últimas correções enviadas...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Este tópico foi criado há 3437 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.