-
Total de ítens
59 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por renesul
-
-
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?
-
-
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
-
Linux 64 funcionando 100%
sudo apt-get install libxmlsec1-dev libltdl-dev <--instala pacotes básicos
Em 20/02/2015 at 16:03, William Duarte disse:Baixe no site : https://www.aleksey.com/xmlsec/download.html(versão .20)
Extrai em uma pasta e fiz no terminal o seguinte :
1) ./configure
2) make
3) make install
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
- 2
-
Para mim não resolveu o link "ln -s ..."..
nano /etc/fpc.cfg
-- -FCSelect manually
++ -FClazres
Resolvido
- 1
-
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.
-
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.
-
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.
-
--- 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); -
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;
-
Show deu certo.
-
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.
-
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.
-
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.
-
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!!!
-
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.
-
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?
-
Marcio, verifique as permissões dos arquivos, e se executar como administrador provavelmente funcionará.
-
Boa tarde.
A alteração da revisão 6980 gerou um problema no retorno do método novo.
function TACBrECFDaruma.GetNumLoja: String;VarRetCmd : AnsiString ;beginif Trim(fsNumECF) = '' then o fsNumECF sempre vem com informação correta portanto nunca está pegando o número da lojabeginif fpMFD thenfsNumLoja := RetornaInfoECF('129')elsefsNumLoja := 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. -
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.
- 1
-
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.
Complementando http://en.wikipedia.org/wiki/Floating_point#Accuracy%5Fproblems dentro do if até a ordem afeta o resultado.
-
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.
-
Testado...
Funcionou corretamente.
Obrigado Daniel.
-
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 2beginStrConsumidor := PadL( PadL(Consumidor.Documento,27) +PadL(Consumidor.Nome,42)+PadL(Consumidor.Endereco,42), 153) ;EnviaComando( ESC + #208 + StrConsumidor ) ; <----- este comando funcionaendelsebeginStrConsumidor := PadL(Consumidor.Nome,84) +PadL(Consumidor.Endereco,84) +PadL(Consumidor.Documento,84) ;EnviaComando( ESC + #201 + StrConsumidor ) ; <----- este não funcionaend ;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.
Substituto para Grid da devexpress
em Classificados
Postado
Bem interessante a suite EhLib....