Ir para conteúdo
  • Cadastre-se

João Paulo F. Bellucci

Membros
  • Total de ítens

    110
  • Registro em

  • Última visita

Posts postados por João Paulo F. Bellucci

  1. Acabei de baixar os fontes e esta dando este erro ao Instalar.

    D:\Fontes\Componentes\ACBr\Fontes\ACBrDFe\ACBrDFeOpenSSL.pas(608) Error: E2003 Undeclared identifier: 'X509GetExt'
    D:\Fontes\Componentes\ACBr\Fontes\ACBrDFe\ACBrDFeSSL.pas(2089) Fatal: F2063 Could not compile used unit 'ACBrDFeOpenSSL.pas'
    Compilation failure

  2. Acabei de atualizar o trunk2 e esta dando erro ao compilar o SPED.

    D:\Fontes\Componentes\ACBr\Fontes\ACBrTXT\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBloco_0_Class.pas(712) Error: E2250 There is no overloaded version of 'IfThen' that can be called with these arguments
    ACBr_SPED.dpk(67) Fatal: F2063 Could not compile used unit 'ACBrEPCBloco_0_Class.pas'
    Compilation failure

  3. Boa Tarde, na versão anterior Trunk da NFe exista a possibilidade de selecionar o certificado pela chamada "NFe.Configuracoes.Certificados.SelecionarCertificado" notei que agora no Trunk2 essa função não exite mais. Existe alguma outra maneira de chamar essa função?

  4. Modifica arquivo remessa CNAB400 para preencher os campos de informações de desconto que não estavam sendo informados.

     

    Segue o código modificado:

     

          { Data do Primeiro Desconto}
          if ( DataDesconto <> 0 ) then
             strDataDesconto := FormatDateTime('ddmmyy', DataDesconto)
          else
             strDataDesconto := IntToStrZero(0, 6);
     
          { Valor do Primeiro Desconto}
          if ( ValorDesconto <> 0 ) then
             strValorDesconto := IntToStrZero( Round( ValorDesconto * 100 ), 13)
          else
             strValorDesconto := IntToStrZero(0, 13);
     
          with ACBrBoleto do
          begin
             MensagemCedente:= '';
             for I:= 0 to Mensagem.count-1 do
                 MensagemCedente:= MensagemCedente + trim(Mensagem);
     
             if length(MensagemCedente) > 40 then
                MensagemCedente:= copy(MensagemCedente,1,40);
     
             wLinha:= '1'                                                     +  // ID Registro
                      TipoCedente                                             +  // Identificação do Tipo de Inscrição do Sacado 01 - CPF 02 - CNPJ
                      padR(onlyNumber(Cedente.CNPJCPF),14,'0')                +  // Número de Inscrição do Cedente
                      padR(OnlyNumber(Cedente.Agencia), 4, '0')               +  // Agência
                      padR( Cedente.AgenciaDigito, 1, '0')                    +  // Agência digito
                      padR( OnlyNumber(Cedente.Conta)                         +  // Conta Corrente
                      Cedente.ContaDigito, 9, '0')                            +  // Dígito Conta Corrente
                      padR( '0', 6, '0')                                      +  // Número do Convênio de Cobrança do Cedente fixo zeros: "000000"
                      Space(25)                                               +  // Brancos
                      padR( NossoNumero + DigitoNossoNumero, 12, '0')         +  // Nosso Número + //nosso numero com digito
                      IntToStrZero(ifthen(Parcela > 0, Parcela,1),2)          +  // Número da Parcela: "01" se parcela única
                      '00'                                                    +  // Grupo de Valor: "00"
                      Space(3)                                                +  // Brancos
                      Space(1)                                                +  // Indicativo de Mensagem ou Sacador/Avalista:
                      Space(3)                                                +  // Brancos
                      IntToStrZero( 0, 3)                                     +  // Variação da Carteira: "000"
                      IntToStrZero( 0, 1)                                     +  // Conta Caução: "0"
                      IntToStrZero( 0, 5)                                     +  // Código de responsabilidade: "00000"
                      IntToStrZero( 0, 1)                                     +  // DV do código de responsabilidade: "0"
                      IntToStrZero( 0, 6)                                     +  // Numero do borderô: “000000”
                      Space(4)                                                +  // Brancos
                      wRespEntrega                                            +  // Tipo de Emissão 1-Cooperativa - 2-Cliente
                      padR( trim(Cedente.Modalidade), 2, '0')                 +  // Carteira/Modalidade
                      Ocorrencia                                              +  // Ocorrencia (remessa)
                      padL(trim(NumeroDocumento),  10)                        +  // Número do Documento
                      FormatDateTime( 'ddmmyy', Vencimento)                   +  // Data de Vencimento do Título
                      IntToStrZero( Round( ValorDocumento * 100 ), 13)        +  // Valor do Título
                      IntToStrZero( Banco.Numero, 3)                          +  // Número Banco: "756"
                      padR(OnlyNumber(Cedente.Agencia), 4, '0')               +  // Prefixo da Agência Cobradora: “0000”
                      padR( Cedente.AgenciaDigito, 1, ' ')                    +  // Dígito Verificador do Prefixo da Agência Cobradora: Brancos
                      padL(aEspecie,2)                                        +  // Espécie do Título
                      ATipoAceite                                             +  // Identificação
                      FormatDateTime( 'ddmmyy', DataDocumento )               +  // 32 Data de Emissão
                      padR(AInstrucao1, 2, '0')                               +  // 33 Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada.
                      padR(AInstrucao2, 2, '0')                               +  // 34 Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada.
                      IntToStrZero( Round( (ValorMoraJuros * 30) *10000 ), 6) +  // Taxa de mora mês
                      IntToStrZero( Round( PercentualMulta * 10000 ), 6)      +  // Taxa de multa
                      wRespEntrega                                            +  // Responsabilidade Distribuição
                      strDataDesconto                                         +  // Data do Primeiro Desconto, Preencher com zeros quando não for concedido nenhum desconto.
                      strValorDesconto                                        +  // Valor do Primeiro Desconto, Preencher com zeros quando não for concedido nenhum desconto.
                      IntToStrZero( 9 , 1)                                    +  // MOEDA 9 BRASIL
                      IntToStrZero( 0, 12)                                    +  // Valor IOF / Quantidade Monetária: "0000000000000"
                      IntToStrZero( 0, 13)                                    +  // Valor Abatimento
                      TipoSacado                                              +  // Tipo de Inscrição do Sacado: 01 - CPF 02 - CNPJ
                      padR(onlyNumber(Sacado.CNPJCPF),14,'0')                 +  // Número de Inscrição do Sacado
                      padL( Sacado.NomeSacado, 40, ' ')                       +  // Nome do Sacado
                      padL( Sacado.Logradouro +' '+ Sacado.Numero,37,' ')     +  // Endereço Completo
                      padL( Sacado.Bairro,15,' ')                             +  // Endereço Bairro
                      padL( Sacado.CEP,8,' ')                                 +  // Endereço CEP
                      padL( Sacado.Cidade,15,' ')                             +  // Endereço cidade
                      padL( Sacado.UF,2,' ')                                  +  // Endereço uf
                      padL( trim(MensagemCedente) ,40,' ')                    +  // Observações/Mensagem ou Sacador/Avalista:
                      DiasProtesto                                            +  // Número de Dias Para Protesto
                      Space(1)                                                +  // Brancos
                      IntToStrZero( aRemessa.Count + 1, 6 );                     // Contador de Registros;
     
             aRemessa.Text:= aRemessa.Text + UpperCase(wLinha);
          end;
       end;

     

     

     

     

    ACBrBancoBancoob.zip

  5. De acordo com o manual do SAT não saiu nenhuma regra diferente para a exibição dos tributos para ele ainda.

    Estou fazendo o CFe de acordo com a norma do SAT seguindo o modelo.

    Mas não tenho conhecimento ainda se será alterado para a  Lei de "Olho no Imposto".

  6. Erro ao validar o campo CNPJ_CPF quando o mesmo estiver preenchido com CPF.

    A rotina esta sempre preenchendo com 14 dígitos para resolver tive que altera a função.

     

    Antes da correção:

     

    Add( LFill('C800') +
                   LFill( COD_MOD,2 ) +
                   LFill( strCOD_SIT  ) +
                   LFill( NUM_CFE,6 ) +
                   LFill( DT_DOC, 'ddmmyyyy', booNFCancelada ) +
                   LFill( VL_CFE,0,2, booNFCancelada ) +
                   LFill( VL_PIS,0,2, booNFCancelada ) +
                   LFill( VL_COFINS,0,2, booNFCancelada ) +
                   LFill( CNPJ_CPF, 14, True ) +
                   LFill( NR_SAT,9 ) +
                   LFill( CHV_CFE ) +
                   LFill( VL_DESC,0,2, booNFCancelada ) +
                   LFill( VL_MERC,0,2, booNFCancelada ) +
                   LFill( VL_OUT_DA,0,2, booNFCancelada ) +
                   LFill( VL_ICMS,0,2, booNFCancelada ) +
                   LFill( VL_PIS_ST,0,2, booNFCancelada ) +
                   LFill( VL_COFINS_ST,0,2, booNFCancelada ) ) ;

     

    Depois da correção:

     

    Add( LFill('C800') +
                   LFill( COD_MOD,2 ) +
                   LFill( strCOD_SIT  ) +
                   LFill( NUM_CFE,6 ) +
                   LFill( DT_DOC, 'ddmmyyyy', booNFCancelada ) +
                   LFill( VL_CFE,0,2, booNFCancelada ) +
                   LFill( VL_PIS,0,2, booNFCancelada ) +
                   LFill( VL_COFINS,0,2, booNFCancelada ) +
                   LFill( CNPJ_CPF, 0, True ) +
                   LFill( NR_SAT,9 ) +
                   LFill( CHV_CFE ) +
                   LFill( VL_DESC,0,2, booNFCancelada ) +
                   LFill( VL_MERC,0,2, booNFCancelada ) +
                   LFill( VL_OUT_DA,0,2, booNFCancelada ) +
                   LFill( VL_ICMS,0,2, booNFCancelada ) +
                   LFill( VL_PIS_ST,0,2, booNFCancelada ) +
                   LFill( VL_COFINS_ST,0,2, booNFCancelada ) ) ;

     

  7. estou fazendo pelo software da Dimep.

     

    não tentei enviar novamente a chave pública pq não achei um lugar para substituir. O q eu fiz foi baixar a q consta no meu cadastro lá, exportar novamente e comparar os dados. Estão rigorosamente iguais ... 

    Acredito eu que você terá que falar om o Marlus da Dimep ele já deve ter passado por esse problema.

    Infelizmente não sei mais o que pode ser.

    Assim que você conseguir resolver o problema poste aqui para ficar registrado.

     

    []s

  8. Pois é .. o tamanho está ok ... e pela diferença na msg de acordo com os cnpjs q passo como parâmetro, imagino que ele esteja conseguindo verificar a assinatura ... 

     

    pior q já não tenho mais nenhuma ideia do que fazer para tentar solucionar esse problema ... :< 

    Você esta fazendo a associação pelo software da Dimep ou pelo seu?

    Já tentou enviar novamente a chave publica do seu certificado para a Sefaz?

  9. Oi João.

     

    Estou utilizando o mesmo certificado.

     

    O que mais me intriga é que se eu mudo um CNPJ sem alterar o código, ele consegue identificar que o código de vinculação não corresponde aos CNPJ's informados. 

     

    Você utilizou certificado A1 ou A3 para a assinatura ? 

    Utilizo o certificado A3.

    Quantos bytes a sua assinatura esta retornando?

  10. Oi Joao,

     

    Muito obrigado pelos testes... Na Bematech, quais comandos não funcionaram ? (pode ser que esse modelo não suporte alguns dos comandos)

    Verifique se diminuindo o parâmetro "ConfigBarras.Largura", os códigos funcionam...

     

    A sintaxe de comando para Cod.Barras que estou usando, para EscPos (Epson/Bematech) é o método 2, onde sempre devemos informar o tamanho do Cod.Barras como parâmetro

     

    O Teste de Página de Código teve sucesso ?

    Oi Daniel,

     

    Os comandos que não funcionaram foram: Alinhar a direita e os comandos para código de barras 39,128, CODABAR e MSI.

    As configurações para páginas de código funcionaram sim tudo Ok.

     

    []s

  11. Fiz os teste segue as fotos das impressões em anexo.

     

    A única que deu problema foi a Bematech TM-4000 TH.

    Se você olhar os fontes que mandei ela tem tratamento especial para alguns código.

    Obs: A TM-4000 TH não imprime qrCode então é normal que não funcionou.

     

    function TACBrESCPOS.GetCodeBar(CodeBar: TACBrCmdESCPPOSCodeBar;
      Dados: String): AnsiString;
    var
      CmdCodBar:AnsiString;
      nTam:Integer;
    begin
     
       Case CodeBar of
          cbEAN8    : CmdCodBar := FCmd.FCodeBarEAN8;
          cbEAN13   : CmdCodBar := FCmd.FCodeBarEAN13;
          cbSTD25   : CmdCodBar := FCmd.FCodeBarSTD25;
          cbINTER25 : CmdCodBar := FCmd.FCodeBarINTER25;
          cbCODE11  : CmdCodBar := FCmd.FCodeBarCODE11;
          cbCODE39  : CmdCodBar := FCmd.FCodeBarCODE39;
          cbCODE93  : CmdCodBar := FCmd.FCodeBarCODE93;
          cbCODE128 : CmdCodBar := FCmd.FCodeBarCODE128;
          cbUPCA    : CmdCodBar := FCmd.FCodeBarUPCA;
          cbCODABAR : CmdCodBar := FCmd.FCodeBarCODABAR;
          cbMSI     : CmdCodBar := FCmd.FCodeBarMSI;
       End;
     
       if ( FMarcaImpressora = iDaruma ) then begin
          Result := CmdCodBar + AnsiString(Dados) + FCmd.FCodeBarFim;
       end else if ( FMarcaImpressora = iBematech ) then begin
          if CodeBar in [cbCODE128,cbCODE93] then begin
             nTam   := Length(Dados);
             Result := CmdCodBar +
                       AnsiChar(Chr(nTam)) +
                       AnsiString(Dados);
          end else begin
             Result := CmdCodBar + AnsiString(Dados) + FCmd.FCodeBarFim;
          end;
       end else if ( FMarcaImpressora = iEpson ) then begin
          nTam  := Length(Dados)+2;
          Result := CmdCodBar +
                    AnsiChar(Chr(nTam)) +
                    #123 + #66 +
                    AnsiString(Dados);
       end;
    end;
     
    []s

     

    post-9229-0-74979600-1430944083_thumb.jp

    post-9229-0-50394100-1430944100_thumb.jp

    post-9229-0-20658200-1430944118_thumb.jp

    • Curtir 1
  12. Daniel ficou muito legal a ideia parabéns!

    Não consegui fazer compilar com esse fontes, devo estar fazendo alguma coisa de errado, depois vou tentar com mais tempo.

    Se tiver alguma dica de como compilar esse trunk2 agradeço.

     

    Analisando o código verifiquei alguns problemas que passei aqui e vou te passar.

     

    function TACBrEscBematech.ComandoQrCode(ACodigo: AnsiString): AnsiString;
    var
      cTam1, cTam2: Integer;
    begin
      if (Length(ACodigo) > 255) then
      begin
        cTam1 := Length(ACodigo) mod 255;
        cTam2 := Length(ACodigo) div 255;
      end
      else
      begin
        cTam1 := Length(ACodigo);
        cTam2 := 0;
      end;
     
      with fpPosPrinter.ConfigQRCode do
      begin
        Result := GS  + 'kQ' + // Codigo QRCode
                  ETX + chr(12) +
                  chr(LarguraModulo) + chr(ErrorLevel) +
                  chr(cTam1) + chr(cTam2) + ACodigo;
      end;
    end;

     

    Sempre quando concatenar um AnsiString não é saudável deixar por conta da linguagem a conversão, pois o comando chr() retorna string e ao concatenar AnsiString com String o Delphi não esta fazendo legal isso, tive problemas na hora de fazer a homologação das impressoras aqui, e tinha hora que o qrCode não funcionava e verifiquei que o problema estava no comando chr() que vinha lixo dependendo do valor. Para solucionar deixei explicito a conversão AnsiString(chr()).

     

    []s

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