-
Total de ítens
266 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que William F. L. postou
-
Daniel posso estar errado mas não achei essa assinatura de 344 caracteres no material do CD, achei que nem iria precisar.
-
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?
-
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?
-
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.
-
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?
-
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.
-
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.
-
Obrigado Ricardo pela resposta, pensei dessa maneira mesmo!
-
Minha dúvida surgiu porque já tive casos do cliente voltar mais de 1 hora depois da venda pedindo cancelamento
-
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.
-
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?
-
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?
-
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
-
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.
-
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;
-
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.
-
Realmente Antonio, estou fazendo uma pesquisa e não estou achando uma saída.
-
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?
-
Simples e objetivo, somente pressionei o botão "Ativar" em uma máquina onde não está instalada a impressora:
-
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.
-
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.
-
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!
-
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.
-
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!
-
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.