Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Moderadores
Postado
50 minutos atrás, mar1975 disse:

Como ele está identificando toda essa sequência chave + justificativa + cnpj + lote como  a chave se no log mostra que esta tudo devidamente separado por virgula.

Sim mas tem vírgulas demais no log, o que indica que as primeiras vírgulas são na verdade parte da chave informada.

Então creio que tenha algo errado na tua rotina de chamada a DLL.

51 minutos atrás, mar1975 disse:

Gostaria muito de saber se tem alguem emitindo Cte pela Dll e se esta conseguindo fazer o cancelamento.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Eu envio assim:

cte:Cancelar("35201143957844000138570010000011431040297846","TESTE TESTE TESTE  TESTE TESTE","43957844000138")

ou  assim:

("K:\CCARNES\CTE\35201143957844000138570010000011431040297846-cte.xml","TESTE TESTE  TESTE  TESTE TEST","43957844000138")

No retorno no Log esta assim:

04/11/20 10:59:46:160 - CTE_Cancelar("35201143957844000138570010000011431040297846","TESTE TESTE TESTE  TESTE TESTE","43957844000138",,,0 )
04/11/20 10:59:46:160 - LIB_UltimoRetorno
04/11/20 10:59:46:160 -    Codigo:-12, Mensagem:Chave inv[195][161]lida.
04/11/20 11:00:12:571 - LIB_Finalizar
04/11/20 11:00:12:571 - Finalizar
 

Onde posso estar errando?

  • Moderadores
Postado

Ainda não encontrei no código a chamada a DLL...

Aqui você faz a concatenação dos parâmetros em uma string única:

ArqCte := ["] + (DbCTE)->CTECHAV + ["] + "," + ["] +ALLTRIM(wMOTIVO) + ["]+ "," + ["] +pCGC + ["]

Depois é chamada a função/método cancelar, informando apenas um parâmetro que é a string concatenada:

MsgRun("Por favor, aguarde...  Estou trabalhando para: "+cMsg+"  -  CTe: "+cCT,,{|oWnd| lRet:=lAcb:=CTECriArq( _DbfTemp[2], ArqCte, cCT )})

...

Static Function CTECriArq( cDbf, cMsg, cCT, lMsg ) // FAZ A TROCA DE ARQUIVOS USANDO O ACBrMonitorPLUS
  ...  
  cte:=ACBrCTe():New(pDado+"ACBrLib.ini") // (RECARREGAR Configuração.INI)
  ...
  lRet:=cte:Cancelar( cMsg )

Nos exemplos em Harbour para a NFe temos:

METHOD Cancelar(eChave, eJustificativa, eCNPJ, ALote) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Cancelar", hb_StrToUTF8(eChave), hb_StrToUTF8(eJustificativa), hb_StrToUTF8(eCNPJ), ALote, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

Veja que são parâmetros separados informados no método DllCall. Você está fazendo da mesma forma no CTe?

Não encontrei a implementação de ACBrCTe.Cancelar...

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

 

BigWings, obrigado pela ajuda.

METHOD Cancelar(eChave, eJustificativa, eCNPJ, ALote) CLASS ACBrCTE
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "CTE_Cancelar", hb_StrToUTF8(eChave), hb_StrToUTF8(eJustificativa), hb_StrToUTF8(eCNPJ), ALote, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)
 

É chamado assim: 

lRet:=cte:Cancelar( cMsg )

 
  • Moderadores
Postado

Não conheço o Harbour, mas me parece que o erro está aí, o conteúdo de cMsg está indo todo como o primeiro parâmetro, ou seja a chave do CTe.

No meu entendimento você devia chamar o método informando os parâmetros separadamente, por exemplo:

lRet:cancelar((DbCTE)->CTECHAV, ALLTRIM(wMOTIVO), pCGC)
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Este tópico foi criado há 1477 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.