Ir para conteúdo
  • Cadastre-se

Edilberto de Sousa

Membros
  • Total de ítens

    38
  • Registro em

  • Última visita

Posts postados por Edilberto de Sousa

  1. 4 minutos atrás, Juliomar Marchetti disse:

    talvez esteja faltando . pode ser

    esse é o código:

    procedure TDFeWinCrypt.CarregarCertificadoDeNumeroSerie;
    var
      ACertContext: PCCERT_CONTEXT;
    begin
      ACertContext := Nil;
      OpenSystemStore;
      ACertContext := CertEnumCertificatesInStore(FpStore, ACertContext^);
      while (ACertContext <> nil) and (FpCertContext = nil) do
      begin
        if (GetSerialNumber(ACertContext) = FpDFeSSL.NumeroSerie) then
          FpCertContext := ACertContext
        else
          ACertContext := CertEnumCertificatesInStore(FpStore, ACertContext^);  // Pega o próximo
      end;

      if (FpCertContext = Nil) then
        raise EACBrDFeException.Create('Certificado Série: "'+FpDFeSSL.NumeroSerie+'", não encontrado!');
    end;
     

    ficaria como ?

  2. Estou com uma situação que o status da nfe não funciona numa aplicação que é um serviço do windows, mas funciona como uma aplicação normal. verifiquei que a variável ACertContext  da TDFeWinCrypt.CarregarCertificadoDeNumeroSerie está nil, mas não sei porque

    para facilitar anexei os dois projetos que usei como teste. na pasta do projeto tem o arquivo AcbrConfiguracoes.ini onde tem as configurações do acbr que estou utilizando. esse arquivo deve ser copiado para a pasta do executável. na pasta do executável é gerado um arquivo de log (log.txt)

    teste acbr projetos.zipnão vou anexar as dll e nem os Schemas para não exceder o limite do arquivo.

    retorna o erro : WebService Consulta Status serviço: 
    - Inativo ou Inoperante tente novamente.
    Certificado Série: "7E5021021965AABC", não encontrado!

    estou usando o delphi Seattle, SSLLib libWinCrypt

  3. Depois da criação da classe "TACBrIntegrador" a propriedade "IntegradorResposta" das repostas: TRespostaPagamento, TRespostaVerificarStatusValidador e TRetornoRespostaFiscal deixaram de ser preenchidas. vi que a "ComandoIntegrador" está sendo preenchida. dá para preencher também nas respostar ou retorno?

    fiz a seguinte alteração em cada método da classe TACBrIntegrador: EnviarPagamento, VerificarStatusValidador, RespostaFiscal

    adicionei a seguinte linha no final:

    Result.IntegradorResposta.LerResposta(FComandoIntegrador.Resposta);

    Peço desculpas pela duplicação do tópico, porque não prestei atenção que já tinha salvado o primeiro.

  4. Juliomar encontrei um problema no meu código. o Gerador.wCampo com o tipo "tcStr" faz um "trim" no valor. por isso código não está fazendo o resultado desejado. então fiz outras alterações:

     

    na unit "pcnConversao.pas" adicionei o tipo "tcStrEsp" no "TpcnTipoCampo".

    na unit "pcnGerador.pas" no método wCampo adicionei o código:

        tcStrEsp:
          begin
            ConteudoProcessado := VarToStrDef(valor,'');
            EstaVazio := ConteudoProcessado = '';
          end;

    na unit "pcnCFeW.pas" modifiquei meu código Gerador.wCampo(tcStr, 'C12', 'IE      ', 2, 14, 1, SomenteNumeros(CFe.Emit.IE).PadLeft(12,' '), DSC_IE);

    para 

    Gerador.wCampo(tcStrEsp, 'C12', 'IE      ', 2, 14, 1, SomenteNumeros(CFe.Emit.IE).PadLeft(IIf(CFe.infCFe.versao<=0.07,12,14),' '), DSC_IE, false);

    Obrigado Juliomar por adicionar o código. tem previsão de quando será comitado?

  5. Esse erro "Erro de validacao do conteudo([1999]Rejeição: Erro não identificado)(Campo: IE_emit)" está acontecendo ao EnviarDadosVenda no modelo TM-1000 da Tanca. verifique que a inscrição estadual que tem menos que 12 caracteres e na documentação do SAT diz que quando a IE estiver menos que 12 caracteres deve ser preenchida com espaço em branco.  Lembrando que na Elgin não precisa dos espaços em branco. mas com os espaços em branco funciona nas duas marcas.

    Então gostaria de compartilhar a solução. fiz um alteração para preencher com espaço em branco a IE quando não atingir os 12 caracteres na unit "pcnCFeW.pas" e deu certo. 

    código antigo: Gerador.wCampo(tcStr, 'C12', 'IE      ', 2, 14, 1, SomenteNumeros(CFe.Emit.IE), DSC_IE);

    novo código: Gerador.wCampo(tcStr, 'C12', 'IE      ', 2, 14, 1, SomenteNumeros(CFe.Emit.IE).PadLeft(12,' '), DSC_IE);

    Gostaria de pedir aos moderados se possível essa implementação.

     

    Gostaria também se possível implementar essa alterações de log:

    TACBrSATMFe_integrador_XML.EnviarDadosVenda

    . . .

      FMetodo.FinalizarMetodo;

      TACBrSAT(Owner).DoLog('EnviarDadosVenda( '+FGerador.ArquivoFormatoXML+' )'); // novo codigo
      Resp := FComandoMFE.EnviaComando(numeroSessao,'EnviarDadosVenda',FGerador.ArquivoFormatoXML);

     

    TACBrSATMFe_integrador_XML.CancelarUltimaVenda

    . . .

      FMetodo.FinalizarMetodo;

      TACBrSAT(Owner).DoLog('CancelarUltimaVenda( '+FGerador.ArquivoFormatoXML+' )');  // novo codigo
      Resp := FComandoMFE.EnviaComando(numeroSessao,'CancelarUltimaVenda',FGerador.ArquivoFormatoXML);

  6. Nas classes de repostas do componente "VFP-e" do integrador não lendo a tag "Erro">. Por exemplo quando informo um carácter na propriedade "Estabelecimento" do pagamento do método enviar pagamento.

    segue abaixo o texto do xml:

    <?xml version="1.0" encoding="utf-8"?>
    <Integrador>
      <Identificador>
        <Valor>11</Valor>
      </Identificador>
      <Erro>
        <Codigo>EE</Codigo>
        <Valor>Erro no parametro: Estabelecimento, Detalhes: Erro ao converter 10a para int</Valor>
      </Erro>
    </Integrador>

     

    Senhores administrador não seria interessante implementar mais uma propriedade com dessa tag?

  7. Quando parametrizo a NFC-e para A4 (tpImp = 6) no xml está ficando DANFE NFC-E(TpImpToStr=4) porque estou usando a função "StrToTpImp". fui olhar o código dessa função e gostaria de saber se o valor da última posição esta correto?

     

    function TpImpToStr(const t: TpcnTipoImpressao): string;
    begin
    //result := EnumeradoToStr(t, ['0', '1', '2', '3', '4', '5', '6'], // correto
      result := EnumeradoToStr(t, ['0', '1', '2', '3', '4', '5', '4'], // oficial
                                  [tiSemGeracao, tiRetrato, tiPaisagem, tiSimplificado,
                                   tiNFCe, tiMsgEletronica, tiNFCeA4]);
    end;

    function StrToTpImp(out ok: boolean; const s: string): TpcnTipoImpressao;
    begin
    //result := StrToEnumerado(ok, s, ['0', '1', '2', '3', '4', '5', '6'], // correto
      result := StrToEnumerado(ok, s, ['0', '1', '2', '3', '4', '5', '4'], // oficial
                                      [tiSemGeracao, tiRetrato, tiPaisagem, tiSimplificado,
                                       tiNFCe, tiMsgEletronica, tiNFCeA4]);
    end;

    • Curtir 1
×
×
  • 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...