Ir para conteúdo
  • Cadastre-se

William F. L.

Membros
  • Total de ítens

    266
  • Registro em

  • Última visita

Tudo que William F. L. postou

  1. Daniel posso estar errado mas não achei essa assinatura de 344 caracteres no material do CD, achei que nem iria precisar.
  2. No Emulador uso uma cadeia de caracteres aleatórias com 344 caracteres "sdfsfsfsfsfsfsfsfdghffnfjfhf..." Desenvolvi o sistema com emulador usando essa assinatura e nunca deu problemas, o SDK precisa dessa assinatura verdadeira?
  3. Bom dia, postei a mesma dúvida no fórum da TANCA, adquiri um aparelho SAT SDK-1000 e estou fazendo alguns testes, mas sempre que tento enviar uma venda pelo programa IntelliSAT ele está alertando sobre “Assinatura do Aplicativo Comercial não é válida!”. Nesse tópico afirma que já vem associado http://www.projetoacbr.com.br/forum/topic/23063-teste-de-impress%C3%A3o-do-extrato-via-monitorplus/. Já tentei vincular a mesma assinatura de teste que uso no emulador do Fisco mas não é aceita, vai precisar gerar uma assinatura verdadeira com certificado digital?
  4. Resolvido, como imaginava o erro foi meu mesmo no momento de preencher os dados no ACBrSAT, bastou ler o arquivo "NotasSAT.txt" nos fontes do componente e a especificação (página 92) para ver que esse campo troco é calculado pelo próprio SAT. Quando usava esse crédito como parte do pagamento estava gerando desconto e rateando entre os produtos, com isso era gerado um valor de troco pela diferença.
  5. Pessoal, estou com uma dúvida relativa a troca de produtos após ser finalizada uma venda, acredito que estou preenchendo os dados da maneira errada. Atualmente quando o cliente realiza uma venda e retorna ao estabelecimento para trocar apenas um dos produtos comprados quer seja por defeito ou compra errada, o sistema abre um documento de devolução e gera um crédito nesse valor para aquele cliente. Ele pode comprar outros produtos no estabelecimento e abater do total dessa nova venda o valor de crédito. Exemplo: Venda: 001 Itens: 1 -> 1,00 + 2 -> 2,00 Total da Venda = 3,00 Forma de Pagamento: 3,00 em Dinheiro Ele retorna ao estabelecimento para trocar o item 1 gerando um crédito de 1,00 e efetua uma nova compra. Venda: 002 itens: 1 -> 4,00 + 2 -> 3,00 Total da Venda: 7,00 Forma de Pagamento: 1,00 em Crédito + 6,00 em Dinheiro Porém nessa nova venda estou tentando identificar nas formas de pagamento do ACBrSAT esse crédito que foi gerado, já tentei as 2 opções abaixo: 1 - mpOutros 2 - mpCreditoLoja (pelo o que pesquisei tem mais relação com vendas parceladas) Quando passo umas das formas citadas acima ele subtrai a diferença paga em dinheiro pelo valor total da venda (7,00 - 6,00) e manda para o extrato um troco no valor do crédito (1,00). A dúvida que fica é se estou preenchendo da maneira correta os dados para esse tipo de ação no PDV?
  6. No meu entendimento da especificação e do próprio componente ACBrSAT essa cópia é relacionada ao XML, o sistema que desenvolvi grava em uma pasta todos os XMLs de retorno do SAT, mas são arquivos normais nada criptografado.
  7. Ramalho se a sua dúvida for em relação a cópias do XML retornado pelo SAT, isso o próprio componente ACBrSAT já possui propriedades para vc indicar onde serão gravados esses arquivos de retorno na máquina.
  8. Obrigado Ricardo pela resposta, pensei dessa maneira mesmo!
  9. Minha dúvida surgiu porque já tive casos do cliente voltar mais de 1 hora depois da venda pedindo cancelamento
  10. Perfeito Sérgio, entendi da mesma maneira que você, tenho esse XML de retorno gravado e também disponibilizo essa opção para impressão de 2º via, só coloquei um bloqueio se o usuário tentar imprimir a 2º via de um CF-e que já foi cancelado anteriormente.
  11. Então Sérgio essa verificação dos 30 minutos no meu sistema já está funcionando, minha dúvida é se existe a possibilidade de cancelar somente a venda após os 30 minutos?
  12. Pessoal, já tenho uma rotina que verifica se a impressora está ligada ou não e avisa o usuário, mas se a impressora estiver offline: 1 - Posso emitir uma venda normalmente para o SAT e imprimir esse extrato (se necessário) depois de resolvido o problema da impressora? 2 - Bloqueio o PDV até o problema da impressora ser resolvido?
  13. Olá pessoal, na reta final de implementação do SAT me surgiu uma dúvida, atualmente meu sistema já possui uma rotina que durante o cancelamento do CF-e verifica se o mesmo foi emitido a mais de 30 minutos, caso não executa o cancelamento normalmente. Mesmo lendo a especificação não encontrei nada conclusivo, se realmente for necessário cancelar uma venda com mais 30 minutos como devo proceder: 1 - Não cancelo o CF-e porém cancelo a Venda (fica meio estranho isso) 2 - Não aceito nenhum tipo de cancelamento
  14. Entendo Daniela, mesmo sendo direcionado para impressoras em geral não sabemos se essa rotina é funcional para todos os modelos (Epson, Daruma e Bematech) que o componente ACBrPosPrinter contempla. Postei a código na intenção que alguns colegas possam testar com outros modelos, infelizmente só tenho a Epson.
  15. Daniel passando para compartilhar minha solução! Segui meus testes com a Unit WinSpool.pas e consegui verificar o status da minha impressora EPSON TM T20 (USB), compartilhada na rede. As 2 funções foram escritas baseadas em postagem colhidas na WEB, não saberia dizer em quais sites exatamente porque foram várias pesquisas. A função VerStatusImpressora() captura um valor cardinal e a função RetornaStatusString() verifica esse valor comparando com as constantes e retorna uma string, durante meus testes a impressora ligada sempre retornava o valor "0" e quando desligada retornava "4096". Obtive sucesso nos 2 ambientes de Teste: Windows Seven 32 bits (Máquina Virtual em Desktop com Linux) acessando a impressora via rede Windows 10 64 bits (Notebook) com a impressora instalada Observação: A verificação do status não funcionou com IP, somente com o nome da máquina onde estava instalada a impressora, exemplo \\DESKTOP-FO4AT77\Epson function TForm2.VerStatusImpressora(CaminhoImpressora: string): string; var hPrinter : THandle; pInfo: PPrinterInfo2; bytesNeeded: DWORD; begin OpenPrinter(PChar(CaminhoImpressora), hPrinter, nil); try Winspool.GetPrinter( hPrinter, 2, Nil, 0, @bytesNeeded ); pInfo := AllocMem( bytesNeeded ); try Winspool.GetPrinter( hPrinter, 2, pInfo, bytesNeeded, @bytesNeeded ); Result := RetornaStatusString(pInfo^.Status); finally FreeMem( pInfo ); end; finally ClosePrinter( hPrinter ); end; end; function TForm2.RetornaStatusString(Status:cardinal):string; begin result := ''; if Status and PRINTER_STATUS_BUSY = PRINTER_STATUS_BUSY then result := result + '; The printer is busy. '; if Status and PRINTER_STATUS_DOOR_OPEN = PRINTER_STATUS_DOOR_OPEN then result := result + '; The printer door is open. '; if Status and PRINTER_STATUS_ERROR = PRINTER_STATUS_ERROR then result := result + '; The printer is in an error state. '; if Status and PRINTER_STATUS_INITIALIZING =PRINTER_STATUS_INITIALIZING then result := result + '; The printer is initializing. '; if Status and PRINTER_STATUS_IO_ACTIVE =PRINTER_STATUS_IO_ACTIVE then result := result + '; The printer is in an active input/output state '; if Status and PRINTER_STATUS_MANUAL_FEED =PRINTER_STATUS_MANUAL_FEED then result := result + '; The printer is in a manual feed state. '; if Status and PRINTER_STATUS_NO_TONER =PRINTER_STATUS_NO_TONER then result := result + '; The printer is out of toner. '; if Status and PRINTER_STATUS_NOT_AVAILABLE =PRINTER_STATUS_NOT_AVAILABLE then result := result + '; The printer is not available for printing. '; if Status and PRINTER_STATUS_OFFLINE =PRINTER_STATUS_OFFLINE then result := result + '; The printer is offline. '; if Status and PRINTER_STATUS_OUT_OF_MEMORY =PRINTER_STATUS_OUT_OF_MEMORY then result := result + '; The printer has run out of memory. '; if Status and PRINTER_STATUS_OUTPUT_BIN_FULL =PRINTER_STATUS_OUTPUT_BIN_FULL then result := result + '; The printer "s output bin is full. '; if Status and PRINTER_STATUS_PAGE_PUNT =PRINTER_STATUS_PAGE_PUNT then result := result + '; The printer cannot print the current page. Windows 95/98/Me: Indicates the page is being "punted" (that is, not printed) because it is too complex for the printer to print. '; if Status and PRINTER_STATUS_PAPER_JAM =PRINTER_STATUS_PAPER_JAM then result := result + '; Paper is jammed in the printer '; if Status and PRINTER_STATUS_PAPER_OUT =PRINTER_STATUS_PAPER_OUT then result := result + '; The printer is out of paper. '; if Status and PRINTER_STATUS_PAPER_PROBLEM = PRINTER_STATUS_PAPER_PROBLEM then result := result + '; The printer has a paper problem. '; if Status and PRINTER_STATUS_PAUSED = PRINTER_STATUS_PAUSED then result := result + '; The printer is paused. '; if Status and PRINTER_STATUS_PENDING_DELETION =PRINTER_STATUS_PENDING_DELETION then result := result + '; The printer is being deleted. '; if Status and PRINTER_STATUS_POWER_SAVE = PRINTER_STATUS_POWER_SAVE then result := result + '; The printer is in power save mode. '; if Status and PRINTER_STATUS_PRINTING = PRINTER_STATUS_PRINTING then result := result + '; The printer is printing. '; if Status and PRINTER_STATUS_PROCESSING = PRINTER_STATUS_PROCESSING then result := result + '; The printer is processing a print job. '; if Status and PRINTER_STATUS_SERVER_UNKNOWN = PRINTER_STATUS_SERVER_UNKNOWN then result := result + '; The printer status is unknown. '; if Status and PRINTER_STATUS_TONER_LOW = PRINTER_STATUS_TONER_LOW then result := result + '; The printer is low on toner. '; if Status and PRINTER_STATUS_USER_INTERVENTION = PRINTER_STATUS_USER_INTERVENTION then result := result + '; The printer has an error that requires the user to do something. '; if Status and PRINTER_STATUS_WAITING = PRINTER_STATUS_WAITING then result := result + '; The printer is waiting. '; if Status and PRINTER_STATUS_WARMING_UP = PRINTER_STATUS_WARMING_UP then result := result + '; The printer is warming up. '; if Status = 0 then result := 'Impressora Ligada'; end;
  16. Daniel estive lendo os fontes do ACBrPosPrinter além do Demo que avisa sobre essa questão da porta serial, estou estudando alguma solução ligada a Unit do Delphi winspool.pas, mas ainda não tenho nada de concreto e nem sei se será viável.
  17. Realmente Antonio, estou fazendo uma pesquisa e não estou achando uma saída.
  18. Boa noite pessoal, fiquei na dúvida em qual área do fórum postar essa dúvida! Estou finalizando meu sistema para emissão de NFC-e com ACBrSAT e ACBrPosPrinter e está correndo tudo muito bem, mas sempre temos que testar vários caminhos onde temos que simular erros. Então estou tentando verificar o status da minha impressora Epson TM T20 (USB), caso ocorram situações em que a impressora não esteja ligada, quando usava a "InterfaceEpsonNF.dll" existia um método onde controlava com uma exception esse status e avisava o usuário do problema, mas com o componente ACBrPosPrinter não consigo nem gerar uma exception. Desligo a impressora e mando imprimir, mas não gera nenhum tipo de erro, existe a possibilidade de capturar esse status com o ACBrPosPrinter?
  19. Simples e objetivo, somente pressionei o botão "Ativar" em uma máquina onde não está instalada a impressora:
  20. Olá pessoal, estou trabalhando com o componente ACBrPosPrinter, quando a impressora EPSON TM T20 está na máquina local funciona normalmente mas quando tento acessar via rede acaba dando um erro. Analisando o arquivo ACBrDevice.pas descobri que o meu problema está no trecho abaixo onde existem as diretivas para criar as variáveis, não sei o porque mas meu Delphi XE não entra nesse {$ELSE}: procedure TACBrDevice.EnviaStringArquivo( const AString: AnsiString); Var I, Max, NBytes : Integer ; {$IFDEF Use_Stream} FS : TFileStream ; Buffer : AnsiString ; {$ELSE} ArqPrn : TextFile ; {$ENDIF} Como "gambiarra" somente para desenvolvimento, fiz uma alteração e agora funciona normalmente em rede: procedure TACBrDevice.EnviaStringArquivo( const AString: AnsiString); Var I, Max, NBytes : Integer ; {$IFDEF FPC} {$IFDEF Use_Stream} FS : TFileStream ; Buffer : AnsiString ; {$ENDIF} {$ELSE} ArqPrn : TextFile ; {$ENDIF} Mas fica a dúvida do porque ele não reconhece a diretiva.
  21. Só para encerrar esse tópico, criei outra máquina virtual e instalei novamente o Delphi XE e os componentes JEDI e ACBr com todos os fontes atualizados, agora está tudo funcionando normalmente.
  22. Daniel a coisa conseguiu piorar mais ainda, até esqueci dos problemas na instalação do ACBr e do Fortes, após as limpezas o sistema que está em produção com alguns componentes do JEDI não compila mais, não consegue achar os arquivos DCU do JEDI. Momentaneamente a prioridade é voltar a compilar esse sistema!
  23. Mantendo informado sobre a situação, revisei no meu C:/ se havia mais referências para units do ACBr e limpei inclusive a lixeira, só para confirmar rodei o script "apagarAcbr", revisei todos os caminhos do Library Path no Delphi e removi qualquer tipo de referência ao ACBr. Como também tinha uma versão mais antiga do Fortes Report (apesar de não usar ele atualmente), removi ela e instalei um pacote que foi indicado em outro post aqui no fórum: http://www.projetoacbr.com.br/forum/topic/22800-instala%C3%A7%C3%A3o-do-fortes-report-com-o-trunk2/. Reiniciei a máquina e quando abri o Delphi mesmo sem instalar o ACBr fui testar o novo Fortes Report, agora ficou um pouco pior porque se eu for usar um componente dele não compila mais, com vários erros! Um do erros, onde aparentemente o meu Delphi XE está perdido entre as diretivas: [DCC Fatal Error] RLReport.pas(27): F1026 File not found: 'Qt.dcu' Antes que alguém diga algo sobre os caminhos dos sources e packages do Fortes no library path, eu já indiquei todos. Bom com tudo isso não preciso nem dizer que o instalador do ACBr contínua acusando vários erros na compilação, inclusive em relação ao Fortes agora.
  24. Olá Daniel, por experiências ruins com instalações anteriores, antes de iniciar essa nova instalação removi todos os componentes no delphi, referências no library path e os arquivos .bpl gerados anteriormente, além da pasta do ACBr com trunk antigo. Inclusive reiniciei a máquina!
  25. Boa tarde pessoa! Criei uma pasta e baixei os fontes a partir do trunk2 antes de iniciar o processo de instalação! Ao instalar os componentes usando o instalador no Delphi XE, estou obtendo erros ao compilar o pacote para ACBr_BoletoFR, segue o trecho do log onde aponta o erro: Compiling package C:\ACBr\Pacotes\Delphi\ACBrBoleto\FC\Fast\ACBr_BoletoFR.dpk Copyright (c) 1983,2010 Embarcadero Technologies, Inc. C:\ACBr\Fontes\ACBrBoleto\FC\Fast\ACBrBoletoFCFRReg.pas(66) Error: E2003 Undeclared identifier: 'TACBrFileProperty' C:\ACBr\Fontes\ACBrBoleto\FC\Fast\ACBrBoletoFCFRReg.pas(66) Error: E2021 Class type required C:\ACBr\Fontes\ACBrBoleto\FC\Fast\ACBrBoletoFCFRReg.pas(68) Error: E2137 Method 'GetFilter' not found in base class C:\ACBr\Fontes\ACBrBoleto\FC\Fast\ACBrBoletoFCFRReg.pas(82) Error: E2010 Incompatible types: 'class of TBasePropertyEditor' and 'class of TACBrBoletoFCFRFileNameProperty' ACBr_BoletoFR.dpk(59) Fatal: F2063 Could not compile used unit '..\..\..\..\..\Fontes\ACBrBoleto\FC\Fast\ACBrBoletoFCFRReg.pas' Compilation failure Trabalho com o gerador de relatórios FastReport 5.0 o mesmo está funcionando normalmente em meus sistemas.
×
×
  • 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.

The popup will be closed in 10 segundos...