Ir para conteúdo
  • Cadastre-se

FabianoCunha

Membros
  • Total de ítens

    148
  • Registro em

  • Última visita

  • Days Won

    2

Posts postados por FabianoCunha

  1. Renan, não me lembro ao certo o que fiz num cliente com a Prix 3, mas fiz o download do manual da balança (https://www.toledobrasil.com.br/app/institucional/files/manuais/MU_Prix_3.pdf) e fiz uma alteração na configuração da balança, ativando o envio do peso liquido. Depois você conseguirá fazer a leitura do peso. Pelo LOG, a balança não esta devolvendo nenhuma informação.  Vou procurar se ainda tenho o manual que utilizei na época e coloco aqui no fórum. 

    att, Fabiano Cunha

    • Obrigado 1
  2. Obrigado Juliomar.

    Fiz uma pequena alteração na unit em anexo da Classe TACBrBALFilizola, para tratar o retorno de balanças que possuem o carácter terminador como sendo #13(CR). Em anexo se encontra a unit para analise dos moderadores.

    //Deverá buscar a primeira ocorrência do TX e trarar a Sting.
      if pos(ETX,wResposta) > 0 then
        wResposta := Copy(wResposta, 1, pos(ETX,wResposta) - 1);
      else
        if pos(CR,wResposta) > 0 then //tratativa para o modelo C&F C6MT
        wResposta := Copy(wResposta, 1, pos(CR,wResposta) - 1);

     

    Para essa balança funcione é necessário executar os passos que estão no manual acima, item "Tecla I" e alterar conforme prints em anexo. A opção "Ciclo" é o item correspondente a tecla 8.

    foto 2.JPG

    foto 3.JPG

    foto 1.JPG

    ACBrBALFilizola.pas

    CF_Computadora_2013.pdf

    • Curtir 1
  3. Moderadores, 

    Fiz uma pequena correção na função "InterpretarRepostaPeso", na classe TACBrBALFilizola, a qual é do componente ACBrBAL. Essa correção foi necessária, pois como pode ser observado no LOG da balança ela retorna TX duas vezes, e a função citada apenas considerada a existência do "TX", apenas uma única vez e no final da string.  

    -> LOG: Balança:

    - 00:36:46:401 RX <- [STX]02255[ETX][ETX]
                  UltimoPesoLido: 2,255 - Resposta: [STX]02255[ETX][ETX]

    Trecho antigo:

    if (Copy(wResposta, Length(wResposta), 1) = ETX) then
        wResposta := Copy(wResposta, 1, Length(wResposta) - 1);

     

    Nova versão:

    if pos(ETX,wResposta) > 0 then
        wResposta := Copy(wResposta, 1, pos(ETX,wResposta) - 1);

     

    Arquivo completo se encontra em anexo.

    Att, Fabiano Cunha

    ACBrBALFilizola.pas

    • Curtir 1
  4. Boa Tarde!

    Alguém já conseguiu integrar a balança C&F C 6 MT (pelo que entendi  é segunda linha da Filizola). Utilizei o Demo do ACBR balança, configurei Filizola, ele consegue capturar uma string que contem as informações que preciso, PESO principalmente, porém traz também PREÇO e TOTAL. Usando o Hyperterminal, consegui monitorar o retorno da balança. Em anexo os arquivo de log da balança. 

    Gostaria de saber, se neste caso é apenas "formatar" a saída da resposta da balança? Pois tem duas propriedades de PosInicio e PosFim, que a principio fazem "Corte" na string de retorno. Olhando a classe da Filizola, não considera essas duas propriedade no comando "COPY".  

    Neste caso basta eu criar uma classe para esse novo tipo de balança e implementar na função de formatação da resposta para retornar apenas o Peso?

    Gostaria apenas de orientação, pois assim posso contribuir para o ACBR.

    Conseguindo algum progresso, deixarei registrado aqui para histórico.

    Obrigado.

    BalLog.txt

    foto.JPG

    CF_Computadora_2013.pdf

  5. Eudis, tive este erro de assinatura recentemente com um certificado de Goias. Qual é a certificadora do certificado?   No meu caso era um certificado A1 da DocCloud, após a instalação ele funcionava certinho do site da sefaz, receita federal, porém ao fazer a transmissão dava erro. 

    Só resolveu depois que fiz a instalação da cadeia de certificado Autoridade da Certificadora. 

     

  6. Eu sempre salvo no banco o xml assinado e validado. Executo os dois métodos (assinar e validar), salvo no banco de dados e depois chamo a função de enviar. Na tabela de Nota fiscal eu controlo o status da NF desta forma eu sei como proceder numa eventual necessidade de reenviar.

    Att, Fabiano Cunha

  7. 5 minutos atrás, [email protected] disse:

    Eu instalei o driver pelo spoler e consultando no gerenciador de dispositivos, estava demonstrando sinal de ! .. e uma mensagem no texto, informando um problema no certificado digital. Tenho windows 7, consultei pela mensagem, e verifiquei que num blog, uma pessoa indicou para desabilitar a leitura do certificado digital ao iniciar o computador, mas esse procedimento não é realizado uma unica vez, toda vez que desligo ele tenho que fazer o mesmo procedimento. 

    Minha preocupação é nos clientes, a maioria usa windows 7. 

    Fernanda, estou no meio deste problema, agora numa máquina windows 7 64bits, num outra máquina windows 7 32 bits, deu certinho. Se você achar uma outra solução deste problema da assinatura do certificado do driver da bematech, compartilha que estou em busca dessa solução neste momento. 

    Eu mandei um e-mail para a Bematech, porque no windows 7 32 deu certo e no windows 7 64 bits, não?

    Att, Fabiano Cunha

     

  8. 6 horas atrás, [email protected] disse:

    Olá Fabiano Cunha, 

    O programa teste não consegui acessar, mas peguei uma outra impressora, a MP 4200, mas agora a dificuldade é acionar a gilhotinha, o comando ascii não está funcionando ESC 119.

     

     

    Fernanda, você esta utilizando a impressora MP 4200 TH não fiscal USB? Se sim, no cliente que estou fazendo a implantação, eu fiz a instalação dos drivers Bematech. Após ver qual a porta da impressora no windows, utilizei o programa de teste do ACBRPosPrinter, e funcionou perfeitamente todas as funções, inclusive o corte total e parcial. Utilizei windows 10 64bits, impressora USB (sem nenhum conversor). 

    Att, Fabiano Cunha

  9. Fernanda,

    Achei a solução do problema. Instalei o driver da bematech Spoler de impressão para o modelo MP 2100 TH. Fiz o download no site da Bematech. E no programa de teste do ACBRPosPrint, deve usar a porta RAW:xxxxx, onde xxxx é o nome da impressora. Funcionou perfeitamente com o programa de teste. Fiz a impressão de 100 itens varias vezes e não deu  mais o erro de timeout 997. Se utilizar a porta COM dá erro de timeout 997.

    Windows 7 32 bits. Impressora MP2100 TH, serial (Sem utilizar conversor).

  10. Fernanda, 

    Você conseguiu resolver o problema da impressão na bematech MP 2100 TH não fiscal. Já fiz testes usando o Programa teste  ACBrPosPrinter e esta dando um erro 9997, TimeOut, Este erro acontece quando é enviado muitas linhas. Se for poucas não apresenta erro.

    Já fiz alteração no timeout do Device do componente e mesmo assim o erro acontece. 

    Obrigado.

     

     

  11. Pessoal, eu resolvi este problema no windows 10 64bits, usando o drivers 64 da impressora Bematech MP4200 TH, utilizei o programa que acompanha o driver da impressora(Bematech Printers User Software - Bematech User Software v2.7.0 for 64 bits)  e fiz uma alteração no setup da impressora. Baixei a temporização do corte para 2. Na aba de "comandos especiais" alterei o tipo de comando para "ESC/POS@", no mais deixei igual. Percebi que é necessário um tempo entre o Ativar da impressora e você mandar os primeiros comandos para ela. Coloquei um Sleep(1000). Pois faço a ativação do componente ACBrPosPrinter1, a cada vez que mando imprimir. Não tive mais problemas

  12. Eu acho que esta situação de exclusão é bug do windows. Se você, formatar um computador, ao fazer a instalação do windows, deixar o certificado conectado no computador, o windows, apaga o certificado. 

    Ou então é o bug do driver do certificado.

    Não tem como, o ACBr apagar a chave, pois não executa nenhum comando para tal ação.

    Att,

    Fabiano Cunha

  13. Carlos, Bom dia!

    Minha regra de negócio é só aparecer no caixa o que realmente converteu em caixa. Tudo que foi vendido, cuja forma de pagamento não é a vista, eu gero um contas a receber. Se for cartão, eu gero o título em nome da operadora de cartão, pois assim, eu sei quanto tenho a receber de cada operadora e também a data de  vencimento do título é a data que normalmente a operadora faz os pagamentos D+3, D+10, etc. Inclusive os cartões de débito entram na mesma rotina. O cheque eu gero o título no nome do cliente. 

    Quando o usuário fizer a conciliação bancaria, ele tem que fazer as baixas dos títulos e o dinheiro vai para o caixa.  Os dados complementares para geração do título estão cadastrados na tabela de forma de pagamento.

    • Curtir 1
  14. Concordo com a forma apresentada pelo RickMao, apenas acrescentaria uma sugestão, após terminar o rateio, verificar se por erros de arredondamento, o valor total final do desconto ficou correto, considerando duas casas decimais, se não ficou, a diferença positiva ou negativa, deve ser aplicado no item mais "caro", pois assim não corre o risco de ficar negativo os valores do rateio, assim, ao totalizar as linhas os valores fecham. 

    Esta formula acima serve para fazer o rateio de qualquer coisa na NFe.

  15. Amigos, 

    Apenas fiz a criação no meu sistema de uma tabela de cadastro de CEST e coloquei um campo no cadastro do Item para o usuário dizer qual o CEST. Não vou implementar a complexidade de relacionamento N para M entre NCM e CEST.

    Para auxiliar na carga inicial, vou pegar a relação de NCM dos itens do cliente e gerar em XLS para ajudar o contador a fazer a co-relação para mim. 

  16. Em 18/08/2016 at 18:25, alessandro pancotte disse:

    Amigo,

    Uso o Delphi 2007, meu exe estava dando cerca de 40mega compilando como release e 76mega como debug

    Mudei pro Xe7 e o exe foi para 106mega e nao da diferenca do debub pra release

    Tenho outra aplicacao menor que no 2007 estava dando 9mega e no xe7 foi para 16mega

    Detalhe esta aplicacao tem umas 6 telas somente, pois é um programinha que serve somente para emitir nfe/nfce

    O teu exe tambem aumentou?

     

    Alessandro, o meu executável saiu de quase 3 mega para uns 17 mega, também não deu diferença entre release e debug.  Não sei o motivo de ter aumentado o tamanho. Vou testar ainda aqueles programas que tem na internet que dizem fazer a redução do exe.

    Em 21/08/2016 at 19:06, doidopb disse:

    Olá Fabiano, tudo bom?

    Rapaz, eu migrei do Delpi 7 para o Delphi 2010 também sem muitas complicações.

    Assim como no seu caso, o Delphi 2010 reclamou do tipo dos campos Fields gerados pelo Zeoslib, e assim como você tentei utilizar o localizar e substituir tudo de TStringField para TWideStringField. Mas no meu caso fiquei recebendo o erro1.jpg em anexo. Ao responder YES ele tenta marcar o field novamente como TStringField na unit e ao responder NO ele deixa como está, mas no Object Inspector (erro2.jpg) ele continua como TStringField e ao compilar acabo recebendo o erro3.jpg.

    Para resolver tal problema tive que ir em cada ZQuery e apagar todos os fields de cada uma,  e depois inseri novamente (CTRL + F), forçando o componente criar os fields com o tipo correto, no caso TWideStringField. Só que desse jeito é bem mais demorado.

    Como você conseguiu só pelo Localizar/Substituir?

    Abraços

    erro1.JPG

    erro2.JPG

    erro3.JPG

    Amigo, no meu caso deu certo apenas a operação de localizar e substituir. Não precisei apagar os fields do objeto query e inseri-los novamente. Só porque eu utilizei o programa TextPad para fazer a substituição.  Dentro do programa TextPad, existe uma opção de "localizar em arquivos" Find in Files. Procurei em todos os arquivos *.dfm e *.pas. Localizar a palavra TStringField. Quando listar todos os arquivos, é só pedir para o textPad abrir todos. E em seguida fazer a substituição em todos os documentos abertos. Salvar tudo e abrir o Delphi.

    Att,

    Fabiano Cunha

  17. Migrei o meu sistema do Delphi 7 para Xe7, sem muita complicações. Em delphi 7 era zeoslib + Rxlib. Fiz a conversão para Xe7 para Zeoslib + JVCL. Para migrar do Rxlib para JVCL existe uma utilitário que faz a alteração do nome das classes no seu código fonte. Algumas classes ele não fez a mudança, neste caso utilizei o TextPad (localizar e substituir), pois encontrei na internet a referência entre as classes Rxlib e JVCL. Foi tranquilo.

    No delphi Xe7 ele vai reclamar do tipo dos campos Fields gerados pelo Zeoslib, Neste caso utilizei o localizar e substituir novamente e tudo certo.  TstringFields para TwideStringFields.

    O que deu um pouco de trabalho, foi uns componentes meus. Tive que refazê-los. Os que utilizadam algoritmo de criptografia parou de funcionar, neste caso eu mudei para a lib DCPCrypt-master. 

    Levei uma semana para fazer a migração, trabalhando só 3 horas por dia.

  18. Jean, uma opção criar o cadastro de PDV e associar a este o número da Serie que ele utilizará no Modelo 65.

    Lembrando aos colegas que dentro de cada serie quando chegar ao número 999.999.999, você poderia retornar para a nota 1, pois existe um campo chamado "giro", que deve ser incrementado. Podendo assim ser reiniciando a numeração da NF.  Ou poderá criar uma nova série.

    Esta questão do giro é muito utilizada nas NF de conta de telefone/ água/ energia.  E agora existe uma legislação especifica para empresas de telecom/provedores de internet. Onde poderá reiniciar a numeração das notas todo mês. Creio que deverá fazer isso, utilizando o "giro"

    • Obrigado 1
  19. Everson Luis, 

    Eu uso os componentes ZeosLib no Delhi 7. Usando apenas objetos DataSet (zquery) + DataSource padrão do delphi. + objeto ZupdateSQL (ZeosLib). Este desenho você terá os mesmo controle de uso que fazia quando usamos os objetos Table do Delphi.

    qryCliente (contendo o SQL que busca pela chave primaria da tabela todos os campos da mesma).

    Você deverá dizer no Zquery qual é o UpdateSQL.

    updCliente( clique duplo, ele abre o editor de Fields, só pedi gerar o sql dos comandos (INSERT, UPDATE e delete).

     

    O código poderá colocar no evento que você terá as informações para passar no parâmetro da query.

    qryCliente.close;

    qryCliente.Params[0].value:= 'valor';

    qryCliente.open;

    if (qryCliente.RecordCount > 0 ) then

    begin

    qry.Cliente.edit;

    end

    else

    begin

    qryCliente.insert;

    end;

     

    Para salvar os dados:

    try

     if (dsCliente.State in [dsInsert, dsEdit]) then

    begin

    qryCliente.post; //salva  as alterações.

    qryCliente.Connection.commit; //Apos a operação de POST, você faz o COMMIT da transação. 

    end;

    except on ex:exception do

    begin

    qryCliente.Connection.Roolback;

    MessageBox(handle,PAnsiChar(ex.Message),'ERRO: Gravar dados',MB_OK);

    end;

    end;

     

    Espero que consiga de ajudar. Qualquer coisa me fala que preparo um exemplo para você. 

     

     

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