Ir para conteúdo
  • Cadastre-se

renesul

Membros
  • Total de ítens

    59
  • Registro em

  • Última visita

Tudo que renesul postou

  1. E aí pessoal. Com a situação atual de abandono de IDEs não unicode tive que atualizar todos os sistemas para delphi 10. Ai surgiu a necessidade de botar a mão no bolso para atualizar outros componentes como a devexpress. Alguém conhece algum componente de grid para delphi (funcionalidades semelhantes) que seja grátis ou mais barato que o pacote da dev que está por volta de R$ 4500,00?
  2. http://www.projetoacbr.com.br/forum/topic/23610-ntpteste-aplicativo-para-testar-comunicaçao-ntp-server/
  3. Adicionando.... O equipamento baixa o arquivo de parametrização(dados da empresa) toda vez que inicia da sefaz. Portanto o erro é porque está parametrizado errado na sefaz (Suporte Bematech). Deve se solicitar a correção na sefa
  4. renesul

    NFe no Linux

    Linux 64 funcionando 100% sudo apt-get install libxmlsec1-dev libltdl-dev <--instala pacotes básicos Não precisa criar links simbólicos pois a versão baixada é normal, diferentemente da que vem com o debian, que é modificada sem a parte da carga dinâmica da biblioteca ativa e por isto o lazarus falha em achar a biblioteca... Só compilar o ACBR
  5. Para mim não resolveu o link "ln -s ...".. nano /etc/fpc.cfg -- -FCSelect manually ++ -FClazres Resolvido
  6. O problema é o windows desatualizado... Existem xxx.reg que ajusta o registro com as datas corretas. Semana que vem na mudança de horário de verão os problemas desaparecerão.
  7. Pssss decepcionante este compilador do delphi 7.... O FPC do lazarus funcionou 100% Analisando o restante dos casos de uso da função RoundABNT no fonte ACBR me arrisco a dizer que é o único lugar onde a função pode receber um argumento com valor negativo é nesta classe ACBrECFVirtual. Estaremos migrando o sistema em breve pro Delphi Seatle ai espero que estes casos minimizem. Obrigado.
  8. Pois é... Também achei a implementação errada mas tive que faze-la para resolver este problema. Fiz o teste que você colocou com 2: -1, -0,9, -0,89 já com o valor positivo -2 -> -2, -2, -2 Vou testar com o Lazarus amanhã para ver o que acontece.
  9. --- ACBrECFVirtual.pas (revision 11135) +++ ACBrECFVirtual.pas (working copy) @@ -1008,6 +1008,7 @@ ); var ItemCupom: TACBrECFVirtualClassItemCupom; + Desconto : Boolean; begin VerificaFaixaItem(NumItem); @@ -1016,9 +1017,15 @@ if ItemCupom.DescAcres <> 0 then raise EACBrECFERRO.create(ACBrStr('Item ('+IntToStrZero(NumItem,3)+') já recebeu Desconto ou Acrescimo.')) ; + if ADescAcres < 0 then + begin + Desconto := True; + ADescAcres := ADescAcres * -1; + end; + ItemCupom.DescAcres := RoundABNT( ADescAcres, -2); - fpSubTotal := fpSubTotal + ItemCupom.DescAcres; // Atualiza SubTotal Cupom + fpSubTotal := fpSubTotal + (ItemCupom.DescAcres * IfThen(Desconto, -1, 1)); // Atualiza SubTotal Cupom end; procedure TACBrECFVirtualClassCupom.CancelaItem(NumItem: Integer); ACBrECFVirtual.pas
  10. Uso o ecfvirtual para gerar NFC-e e SAT com o delphi 7. Ao aplicar um desconto de por exemplo R$ 2,00 na venda de um item é enviado pela procedure TACBrECFVirtualClassCupom.DescAresItem(NumItem: Integer; ADescAcres: Double O desconto de 2 reais é passado como -2 para a função RoundABNT que retorna o valor de -1,99 e não -2 que é esperado. Passar número negativo para para função RoundABNT pode retornar erro enquanto números positivos funcionam normal. Abaixo alteração que resolveu o problema pontualmente. --- ACBrECFVirtual.pas (revision 11135) +++ ACBrECFVirtual.pas (working copy) @@ -1016,8 +1016,14 @@ if ItemCupom.DescAcres <> 0 then raise EACBrECFERRO.create(ACBrStr('Item ('+IntToStrZero(NumItem,3)+') já recebeu Desconto ou Acrescimo.')) ; + if ADescAcres < 0 then + ADescAcres := ADescAcres * -1; + ItemCupom.DescAcres := RoundABNT( ADescAcres, -2); + if ADescAcres > 0 then + ADescAcres := ADescAcres * -1; + fpSubTotal := fpSubTotal + ItemCupom.DescAcres; // Atualiza SubTotal Cupom end;
  11. Adicionado "fsSubTotal := 0;" na linha 4012 do arquivo em anexo. A mesma declaração se encontra na abertura do cupom fiscal "TACBrECFDaruma.AbreCupom". Como fiz a depuração direto no delphi não gerei arquivo de log. ACBrECFDaruma.pas
  12. Exemplo: Após finalizar uma venda de R$ 200,00 e tentar realizar um pagamento de parcela com um valor menor, gera uma falha no meu sistema. Investigando a situação pude constatar que ao usar (ACBrEcf.Subtotal - ACBrEcf.TotalPago) estava com os seguintes valores (200,00 - 50,00) = 150 sendo que neste caso o valor de R$ 200,00 referente ao ACBrEcf.Subtotal da venda anterior não foi zerado e os R$ 50,00 são do cupom não fiscal atual. Solução: Ao realizar o comando ACBrEcf.AbreNaoFiscal definir o valor da variável fsSubTotal := 0. No meu caso uso o ecf daruma e ficou 100% notei pelo código que outras impressoras terão o mesmo problema. Uso o repositório trunk2 atualizado de ontem. Qualquer dúvida só mandar.
  13. Largura do código de barras!!! Antes da alteração do SVN o valor estava fixado em 2 no código do acbr. Alterando a propriedade funcionou blz. Feito.
  14. Por default o componente coloca a largura do código de barras 3 que não imprime, com 2 fica bom e com 1 fica muito pequeno. Valeu!!!
  15. Estou usando em duas partes do software, monitor e diretamente, em ambos ocorreu a situação. Após +- duas semanas sem atualizar pelo SVN ontem atualizei o código e logo percebi a ausência das barras.
  16. Após a atualização do fonte a impressão do código de barras (em cima do QR code) passou a não ser mais impressa na EPSON TM-T20. Em outros equipamentos não pude verificar pois ainda funcionam com a compilação do fonte antigo. Alguém mais teve este problema?
  17. Marcio, verifique as permissões dos arquivos, e se executar como administrador provavelmente funcionará.
  18. renesul

    Ecf.numloja

    Boa tarde. A alteração da revisão 6980 gerou um problema no retorno do método novo. function TACBrECFDaruma.GetNumLoja: String; Var RetCmd : AnsiString ; begin if Trim(fsNumECF) = '' then o fsNumECF sempre vem com informação correta portanto nunca está pegando o número da loja begin if fpMFD then fsNumLoja := RetornaInfoECF('129') else fsNumLoja := inherited GetNumLoja ; end ; Result := fsNumLoja ; end; Não entendi o motivo do if mas ele está evitando a leitura na impressora Mach II. Se comentado funcionou 100% Até mais.
  19. Perfeito convergimos para a solução. Só que da uma olhada no código da revisão 6988 verá que o meu exemplo tentou explorar que a alteração feita não surtirá efeito almejado bastando adicionar o "Epsilon" para resolver conforme seu comentário. Valeu... É bom comentarmos no fórum este tipo de assuntos enriquece os conhecimentos.
  20. Olá Daniel. A utilização da biblioteca math não resolveu o problema no código em questão para exemplificar coloquei um código de teste para a situação ser melhor compreendida. Volto a ressaltar que a questão é a soma de double com casas decimais "diferentes" dentro do if o que só vi acontecer no delphi. teste.zip Complementando http://en.wikipedia.org/wiki/Floating_point#Accuracy%5Fproblems dentro do if até a ordem afeta o resultado.
  21. Sim. Da uma olhada neste daqui http://www.planetadelphi.com.br/dica/6886/evitando-erro-de-compara%C3%A7%C3%A3o-com-calculo-no-if-ou-no-repeat-until No nosso sistema já tivemos um problema semelhante que no caso usava comparação de dados de datasets. A solução mais "profissional" que encontramos foi fazer o cálculo fora do if que ai funciona em todos os momentos. No exemplo representado no link acima para resolver o problema poderia-se criar uma outra variável D : Double; e definir D:= A + B; que a comparação sairia perfeita. No caso do tópico garantir que a variável "TrocoMaximo" venha com precisão de 2 casas.
  22. Tenho uma Daruma Mach 2 e notei que usando a dll se consegue adicionar o CPF no meio da venda e é registrado na impressora. No ACBR não está funcionando! Fui verificar o motivo e o encontrei veja no trecho do código abaixo. procedure TACBrECFDaruma.FechaCupom(Observacao: AnsiString; IndiceBMP : Integer); <- linha 2030 .... if fsNumVersao = '2000' then <---- a variável vem com valor "010000" para a mach 2 begin StrConsumidor := PadL( PadL(Consumidor.Documento,27) + PadL(Consumidor.Nome,42)+ PadL(Consumidor.Endereco,42), 153) ; EnviaComando( ESC + #208 + StrConsumidor ) ; <----- este comando funciona end else begin StrConsumidor := PadL(Consumidor.Nome,84) + PadL(Consumidor.Endereco,84) + PadL(Consumidor.Documento,84) ; EnviaComando( ESC + #201 + StrConsumidor ) ; <----- este não funciona end ; O if acima não seria (fsNumVersao <> '2000') ? Pergunto isto pois notei que existem processos específicos para este modelo (FS2000) em várias partes da classe. Obrigado pela atenção.
×
×
  • 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.