-
Total de ítens
276 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que William F. L. postou
-
Olá Régys, nesse caso existe um valor para cada produto ou porcentagem desse imposto?
-
Propriedade ACBrSAT.CFe.infCFe.ID lembrando que esse valor só está disponível após o retorno do SAT.
-
Não se é o ideal, mas tenho uma tabela CF-e onde gravo as seguintes informações: - Número da CF-e - Chave de Acesso - Número da Sessão - Código de Retorno - Mensagem de Retorno - Data Envio - Hora Envio - CF-e Cancelamento (Caso seja cancelada atribuo o número da CF-e de cancelamento) - Data Cancelamento - Hora Cancelamento - Caminho e nome do arquivo XML - Número da Venda
-
Basta carregar novamente o XML aprovado no componente ACBrSAT e mandar imprimir!
-
Então Daniel, o Teste Fim a Fim só funciona com o SW da TANCA por isso tem essa mensagem de sucesso, se for com o SATTexte.exe o aparelho SAT é reiniciado. Todos os testes que postei acima se forem feitos no emulador do Fisco funciona, quando mudo para o SDK da TANCA começa a instabilidade, com isso tudo acabo postando informações divergentes. Por esse motivo estou dando como encerrado o tópico e agradecendo sua atenção!
-
Até ontem dava a seguinte mensagem "O SAT não está respondendo", hoje cedo troquei de porta USB e emiti 20 vendas sem problema nenhum, realmente é tentativa e erro. Porém o Teste Fim a Fim contínuo sem conseguir enviar pelo SATTeste.exe, o log da TANCA postei acima e o log do ACBrSAT consta "Sat em Processamento. Tente Novamente". Já começo a acreditar que 100% não vai ficar mesmo .. ssrsr Até ontem dava a seguinte mensagem "O SAT não está respondendo", hoje cedo troquei de porta USB e emiti 20 vendas sem problema nenhum, realmente é tentativa e erro. Porém o Teste Fim a Fim contínuo sem conseguir enviar pelo SATTeste.exe, o log da TANCA postei acima e o log do ACBrSAT consta "Sat em Processamento. Tente Novamente". Já começo a acreditar que 100% não vai ficar mesmo .. ssrsr
-
Então Daniel gostaria de ter uma mensagem de erro para eu analisar e também poder postar aqui no fórum, mas no log só aparece a última venda enviada com sucesso e mais nada abaixo disso. 20151006225735|AC-SAT|info|Funcao EnviarDadosVenda requisitada. 20151006225736|SAT-AC|info|Funcao EnviarDadosVenda: Emitido com sucesso + conteudo notas. 20151006225833|SAT|info|Relogio sincronizado com sucesso (NTP: ntp.cais.rnp.br) 20151006225929|SAT-SEFAZ|info|Acessando CFeStatus (obtendo status) 20151006225932|SEFAZ-SAT|info|CFeStatus: [109] Serviço em Operação 20151006225937|SAT|info|Relogio sincronizado com sucesso (NTP: ntp.cais.rnp.br) Me passa uma impressão que é problema de comunicação USB porque os leds do aparelho ficam normais como se estivesse conectado. Outro ponto interessante quando envio um Teste Fim a Fim do SATTeste.exe ou do meu Sistema o SAT aparentemente é reiniciado, aí sim tenho mensagens no log como segue abaixo: 20151006230444|AC-SAT|info|Funcao TesteFimAFim requisitada. 20151006230456|SAT|info|=============== SAT ligado. =============== 20151006230456|SAT|info|Parametrizacoes carregadas com sucesso. Nivel do Log: 2 20151006230456|SAT|info|Configuracoes iniciais carregadas com sucesso 20151006230459|SAT|info|Conexao a rede estabelecida 20151006230500|SAT|info|Relogio sincronizado com sucesso (NTP: ntp.cais.rnp.br) 20151006230500|SAT|info|Aguardando comandos do AC. 20151006230500|SAT-SEFAZ|info|Acessando CFeComandos (comandos) 20151006230503|SEFAZ-SAT|info|CFeComandos: [120] Não existem comandos da SEFAZ pendentes 20151006230531|AC-SAT|info|Funcao ExtrairLogs requisitada. Agora um Teste Fim a Fim enviado pelo SW da Tanca: 20151007073944|AC-SAT|info|Funcao TesteFimAFim requisitada. 20151007073944|SAT-SEFAZ|info|Acessando CFeTeste 20151007073950|SEFAZ-SAT|info|CFeTeste: [125] CF-e de teste de produção emitido com sucesso. 20151007073950|SAT-AC|info|Funcao TesteFimAFim: Emitido com sucesso 20151007074015|SAT-SEFAZ|info|Acessando CFeComandos (comandos) 20151007074018|SEFAZ-SAT|info|CFeComandos: [120] Não existem comandos da SEFAZ pendentes 20151007074040|SAT|info|Relogio sincronizado com sucesso (NTP: ntp.cais.rnp.br)
-
Bom Daniel tive uma evolução, consigo enviar uma venda por vez pelo meu sistema! Mas para fazer outra venda tenho que desconectar o SAT e conectar novamente, só assim para iniciar outra venda.
-
Ok, Daniel vou tentar novamente!
-
Pessoal acho que não estou sabendo me expressar, já li várias vezes o Guide e nele vem alguns dados, entre eles: Assinatura da Software House = SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT Minha dúvida na mensagem de erro "Assinatura do Aplicativo Comercial não é válida" é se ela tem relação com aquela assinatura de 344 caracteres geradas a partir de um certificado digital Software House ou com essa Assinatura da Software House? No IntelliSAT tem uma funcionalidade AssociarAssinatura, isso é necessário no SDK da Tanca?
-
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;
