Ir para conteúdo
  • Cadastre-se

EliasCesar

Consultores
  • Total de ítens

    465
  • Registro em

  • Última visita

  • Days Won

    3

Posts postados por EliasCesar

  1. Bom dia, 
    Já está disponível o recurso no SVN, Rev: 25344.

    -- ACBrNCMs --
    [+] Inclusão do evento 'OnGetJson', possibilitando que a aplicação informe um 
        arquivo Json antes do componente realizar o download.
    [*] Inclusão das novas propriedades do objeto TACBrNCM no arquivo gerado
        pela função TACBrNCMsList.SaveToFile.

    Obrigado pela sugestão de melhoria @Vitor Cortinovis
    🤜🤛

    • Curtir 2
    • Obrigado 1
  2. Boa tarde, 
    A correção já está no SVN, Rev: 25305

    -- ACBrNCMs --
    [-] Ajuste para carregar corretamente os campos 'Data_Inicio' e 'Data_Fim' da lista
        de NCMs em versões mais recentes do Delphi.

    Obrigado por reportar @Mc Sistemas 
    🤜🤛

    • Curtir 1
  3. Olá, 
    Cada bloco de etiquetas precisa ser iniciado e finalizado. Veja que vc colocou um "IniciarEtiqueta", mas após desenhar a linha(3 etiquetas) não informou o comando "FinalizarEtiqueta".

    Talvez isso funcione:
     

    
      FDMemEtiquetas.First;
      while not FDMemEtiquetas.Eof  do
      begin
        IniciarEtiqueta;
    
        ImprimirTexto(orNormal, 1, 1, 2,15, 2, FDMemEtiquetasDESCRICAO.Value, 0, false);
        ImprimirTexto(orNormal, 2, 1, 2, 2, 2, 'R$');
        ImprimirTexto(orNormal, 2, 1, 2, 2, 6,FormatFloat('#0.00', FDMemEtiquetasPMC.value));
        ImprimirTexto(orNormal, 1, 1, 2,10, 2,FDMemEtiquetasId_produto.Value, 0,false);
        FDMemEtiquetas.Next;
    
        if (not FDMemEtiquetas.Eof) then
        begin
          ImprimirTexto(orNormal, 1, 1, 2,15, 38, FDMemEtiquetasDESCRICAO.Value, 0, false);
          ImprimirTexto(orNormal, 2, 1, 2, 2, 40, 'R$');
          ImprimirTexto(orNormal, 2, 1, 2, 2, 42,FormatFloat('#0.00', FDMemEtiquetasPMC.value));
          ImprimirTexto(orNormal, 1, 1, 2,10, 38,FDMemEtiquetasId_produto.Value, 0,false);
          FDMemEtiquetas.Next;
        end;
    
        if (not FDMemEtiquetas.Eof) then
        begin
          ImprimirTexto(orNormal, 1, 1, 2,15,72, FDMemEtiquetasDESCRICAO.Value, 0, false);
          ImprimirTexto(orNormal, 2, 1, 2, 2,74, 'R$');
          ImprimirTexto(orNormal, 2, 1, 2, 2,79,FormatFloat('#0.00', FDMemEtiquetasPMC.value));
          ImprimirTexto(orNormal, 1, 1, 2,10,72,FDMemEtiquetasId_produto.Value, 0,false);
          FDMemEtiquetas.Next;
        end;
    
        FinalizarEtiqueta(1, 600);
      end;
    
      Imprimir(1, 600);
      Desativar;

     

    • Curtir 1
  4. Foi incluído um novo parâmetro chamado 'xPag' na função "FormaPagamentoToDescricao" da pcnConversao.pas. 

    A declaração dessa função poderia ter esse parâmetro vazio como default ?  Pois pode quebrar códigos que já usavam ela.

    A sugestão seria algo como:

    function FormaPagamentoToDescricao(const t: TpcnFormaPagamento; const xPag: String = ''): string;


    Verificado que a alteração foi devido ao caso:


    Realmente no problema descrito no tópico, o parâmetro se torna necessário, porém podem existir outros momentos em que a função é usada sem a necessidade de indicação do xPag.

    • Curtir 1
  5. Pelo erro, o certificado que você está usando não possui permissão de acesso ao recibo.

    As permissões funcionam da seguinte forma:
    - TransmitirArquivo: Apenas certificado digital do contribuinte;
    ConsultarPendenciasDesenvolvedor: Apenas certificado digital do desenvolvedor PAF-ECF;
    - TODOS os outros comandos: Certificado digital do contribuinte ou do desenvolvedor PAF-ECF.

    • Curtir 1
  6. Os serviços são acessíveis usando o certificado digital do contribuinte ou do desenvolvedor do PAF-ECF, com exceção do serviço TransmitirArquivo, que será acessível somente com o certificado digital do contribuinte, e do ConsultarPendenciasDesenvolvedor, com o certificado do desenvolvedor do PAF-ECF.

    Caso tente efetuar as rotinas com outro certificado, realmente será retornado esse tipo de erro.

    • Curtir 1
  7. 15 horas atrás, Gilson Heleno disse:

    Boa tarde! agradeço a dica. vou realizar os teste. Outro problema que esqueci de comentar é quando mando imprimir exemplo 7 etiquetas. Como utilizo 3 colunas então as duas ultima era pra sair em branco. Mas ele preenche as duas ultimas com informação do ultimo item. Tem idéia como posso resolver? Segue codigo para analise:

     tb_etiqtemp.First;
       AtivarACBrETQ;
       with ACBrETQ do
       begin
          while not tb_etiqtemp.eof do
          begin
    //         xtam:=Length(dm.tb_etiquetasCODIGO.Value);
             IniciarEtiqueta;
             ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
             ImprimirTexto(orNormal, '0', 20, 20, 6, 3, tb_etiqtempNOME.Value);
             ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,tb_etiqtempCODIGO.Value, 8,becSIM);

             tb_etiqtemp.Next;
             ImprimirTexto(orNormal, '0', 20, 30, 2, 37, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
             ImprimirTexto(orNormal, '0', 20, 20, 6, 37, tb_etiqtempNOME.Value);
             ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 37,tb_etiqtempCODIGO.Value, 8,becSIM);


             tb_etiqtemp.Next;
             ImprimirTexto(orNormal, '0', 20, 30, 2, 72, 'R$ '+formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
             ImprimirTexto(orNormal, '0', 20, 20, 6, 72, tb_etiqtempNOME.Value);
             ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 72,tb_etiqtempCODIGO.Value, 8,becSIM);

             FinalizarEtiquetaComCopiasEAvanco;

             tb_etiqtemp.Next;
          end;
          ImprimirEtiquetaComCopiasEAvanco;
          Desativar;
       end;


    Para resolver esse problema você precisa colocar uma condição que verifica se chegou no fim da lista após cada comando 'Next'.
    Exemplo:
     

    while (not tb_etiqtemp.eof) do
    begin
    //  xtam:=Length(dm.tb_etiquetasCODIGO.Value);
      IniciarEtiqueta;
      ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
      ImprimirTexto(orNormal, '0', 20, 20, 6, 3, tb_etiqtempNOME.Value);
      ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,tb_etiqtempCODIGO.Value, 8,becSIM);
      tb_etiqtemp.Next;
      
      if (not tb_etiqtemp.eof) then
      begin
        ImprimirTexto(orNormal, '0', 20, 30, 2, 37, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
        ImprimirTexto(orNormal, '0', 20, 20, 6, 37, tb_etiqtempNOME.Value);
        ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 37,tb_etiqtempCODIGO.Value, 8,becSIM);
        tb_etiqtemp.Next;
      end;
    
      if (not tb_etiqtemp.eof) then
      begin
        ImprimirTexto(orNormal, '0', 20, 30, 2, 72, 'R$ '+formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
        ImprimirTexto(orNormal, '0', 20, 20, 6, 72, tb_etiqtempNOME.Value);
        ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 72,tb_etiqtempCODIGO.Value, 8,becSIM);
        tb_etiqtemp.Next;
      end;
    
      FinalizarEtiquetaComCopiasEAvanco;  
    end;

     

    • Curtir 1
  8. Em 24/01/2020 at 17:41, Gilson Heleno disse:

    Gostaria de saber se é possível imprimir codigos de barras de padrão diferente dependendo do tamanho do código do produto. Explico: No cadastro de produto tenho produtos com códigos de barra e produtos sem códigos de barra. Esses sem código de barras utiliza um código menor tipo um sequencial (ex: 1015). Quando estou imprimindo as etiquetas utilizo  barCODE128. Pra os códigos menor que 13 digitos tipo 1015 dá certo, mas no caso de codigo de barras as barras não cabem na etiqueta pois utilizo 3 colunas. Por isso a dúvida se é possivel quando enviar o comando dependendo do tamanho do código envio com barCODE128 caso contrário barEAN13? Fiz um teste mas não deu certo conforme codigo abaixo:

             IniciarEtiqueta;
             xtam:=Length(dm.tb_etiquetasCODIGO.Value);         
             ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',dm.tb_etiquetasPVENDA.Value));
             ImprimirTexto(orNormal, '0', 20, 20, 6, 3, dm.tb_etiquetasNOME.Value);
             if xtam<13 then ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)
             else
                 ImprimirBarras(orNormal,   barEAN13, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)

     

    Agradeço a atenção.

    Gilson Heleno - SPMICRO

    Sim, é possível imprimir o tipo do código de barras de acordo com o tamanho. Aparentemente o seu código está correto, verifique se o conteúdo da variável 'xtam' é realmente um EAN13 válido.

    Uma sugestão para garantir isso seria algo como:

    if (xtam = 13) and (EAN13Valido(dm.tb_etiquetasCODIGO.Value)) then
      ImprimirBarras(orNormal, barEAN13, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8, becSIM)
    else
      ImprimirBarras(orNormal, barCODE128, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8, becSIM);

    (Obs: Para utilizar a função EAN13Valido() inclua a unit ACBrUtil.pas nas uses)

  9. Em 23/01/2020 at 14:12, Danillo disse:

    Boa tarde Elias Cezar,

    Muito obirgado, seu exemplo de XML me ajudou bastante consegui avançar bem , você teria um exemplo de envio utilizando o metodo REPROCESSAR_ARQUIVO ?

    Juliomar,

    Agradeço tambem pelo apoio.

    Att.:

    Danillo Santiago

    Olá Danilo,

    Só vi sua resposta agora... 
    Segue anexo o exemplo do comando ReprocessarArquivo.
    Espero ter ajudado.

    _EnvelopeSoap_ReprocessarArquivo.xml

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