Ir para conteúdo
  • Cadastre-se

giulianon

Membros
  • Total de ítens

    414
  • Registro em

  • Última visita

  • Days Won

    4

Tudo que giulianon postou

  1. giulianon

    ACBrSMS

    Obrigado pelo esclarecimento Régys. Já entrei em contato com a Daruma, e tirei mais umas dúvidas. Eles me passaram que o modelo 210 A é serial e o 210 B é usb. Pelo que eu li em um post aqui, o serial é o mais adequado, pois não necessita de drives e o envio é bem mais rapido. Você recomenda o serial mesmo? Outra coisa que eu li em um post aqui também, foi que você falou que a acentuação em mensagens depende de cada operadora, ou seja, mesmo usando um modem daruma não vai ter jeito de enviar alguns tipos de caracteres correto? Fiz uns testes aqui com um penmodem huawei da vivo, e percebi que "É" é enviado, mas que "ã" dá erro. O "ç" chega como "Ç". Não tenho modens de outras operadoras então será que você saberia me informar qual delas permite o envio de acentuação? Obrigado mais um vez! Att.
  2. giulianon

    ACBrSMS

    Régys vi várias pessoas usando diversos modelos de modens, mas pelo que eu acompanhei nos posts, o Daruma é um dos que funciona melhor. Fui até o da Daruma e tem 2 modelos lá. Qual modelo você usa ai? MIN210 ou MIN300A? Vou adquirir um para desenvolver uma aplicação para um cliente, e vou utilizar o ACBRSMS, então já gostaria de comprar o mais recomendado. Att.
  3. Bom dia Daniel! Era só a Data do cheque mesmo. As demais alterações são alguns testes que eu estou fazendo. Pode desconsiderar. Já vou atualizar os fontes para última versão. Abraço! Att.
  4. Ops, esqueci de anexar o fonte. Segue ACBrECFSwedaSTX.pas
  5. Funcionou Daniel. Era isso mesmo. Identifiquei outro probleminha na impressão do cheque. -- 16:33:59:398 ImprimeCheque( 001 , 0,1 , Supermercados Manentti Ltda , CRICIUMA , 17/07/2013 , Lj: 1 Cx: 124 Op: ANDRE Dt/hr: 17/07/2013 16:34 ) TX -> [STX][182]14|001|0,10|Real |Reais |Supermercados Manentti Ltda |CRICIUMA |07-17-2013[ETX]( 16:33:59:498 RX <- [STX][182]14-0023AC[128][144][146][128][128][ETX]8 ----------------- ERRO ----------------- Erro retornado pela Impressora: SwedaSTX Erro (0023) Erro na Sintaxe do Comando Enviado ---------------------------------------- É só o formato da data que está incorreto. Conferi no manual da sweda e já corrigir no fonte. Segue anexo a correção. Como a minha versão do ACBr não é última, favor desconsiderar outras alterações no fonte que não sejam no método abaixo: procedure TACBrECFSwedaSTX.ImprimeCheque(Banco: String; Valor: Double; Favorecido, Cidade: String; Data: TDateTime; Observacao: String); var Moeda,Moedas:String; sValor:String; sData:String; begin {Apesar de implementadao, não foi possível testar essa rotina por falta de equipamento que tivesse o recurso} Banco := IntToStrZero(StrToIntDef(Banco,1),3) ; Favorecido := padL(Favorecido,80) ; Cidade := padL(Cidade,30) ; Moeda := padL('Real',20) ; Moedas := padL('Reais',20) ; sValor := FormatFloat('#0.00',Valor); sData := FormatDateTime('dd/mm/yyyy',Data); ////////////////////// linha corrigida EnviaComando('14|'+Banco+'|'+sValor+'|'+Moeda+'|'+Moedas+'|'+Favorecido+ '|'+Cidade+'|'+sData); end; Obrigado mais uma vez! Abraço! Att.
  6. Boa tarde Daniel! Demorei um pouco, pois precisei ir até o cliente pra fazer alguns testes. Alterando o protocolo pra ecfSwedaSTX, estou tendo problema com a impressão de relatórios gerencias. Utilizando a mesma versão do sistema, com a mesma impressora fiscal, o erro acontece no computador do cliente, mas não acontece aqui no meu. Log gerado no computador do cliente -- 14:11:51:385 CarregaRelatoriosGerenciais TX -> [STX]C34|F1[ETX][162] 14:11:51:776 RX <- [STX]C34F0001PAR[194]METROS ECF[NUL][ESC]*CONTRA-VALE[NUL][ESC]-RECEBIMENTOS[NUL][ESC],SANGRIA[NUL][ESC]1FUNDO DE CAIXA[NUL][ESC]*RELAT.GERENCIAL[NUL][ESC])[ETX]H[STX]C34+0000AA[128][192][146][128][128]F1[ETX]e -- 14:11:51:776 TX -> [STX]D34|F2[ETX][164] 14:11:52:076 RX <- [STX]D34F00020[ESC]%90[ESC].[ETX][218][STX]D34+0000AA[128][192][146][128][128]F2[ETX]g -- 14:11:52:076 RelatoriosGerenciais TX -> [STX]E43|CONTRA-VALE [ETX][201] VerificaFimImpressao: Pedindo o Status. Seq:70 VerificaFimImpressao: ACK = 6, OK... Aguardando Bloco 14:11:53:138 RX <- [STX]E43+0000AI[128][128][146][128][128][ETX][184][STX]F34+0000AI[128][128][146][128][128][ETX][185] -- 14:11:53:138 LinhaRelatorioGerencial( "--------------- SANGRIA ----------------[CR][LF] [CR][LF] [CR][LF]--------------- DINHEIRO ---------------[CR][LF]VALOR RETIRADO: 0,01 [CR][LF] [CR][LF] [CR][LF] [CR][LF]----------------------------------------[CR][LF] ANDRE [CR][LF] [CR][LF] [CR][LF] [CR][LF]----------------------------------------[CR][LF] [CR][LF]", 0 ) TX -> [STX]G25|--------------- SANGRIA ----------------[LF] [LF] [LF]--------------- DINHEIRO ---------------[LF]VALOR RETIRADO: 0,01 [LF] [LF] [LF] [LF]----------------------------------------[LF] ANDRE [LF] [LF] [LF] [LF]----------------------------------------[LF] [LF][ETX][196] TX -> [STX]G25|--------------- SANGRIA ----------------[LF] [LF] [LF]--------------- DINHEIRO ---------------[LF]VALOR RETIRADO: 0,01 [LF] [LF] [LF] [LF]----------------------------------------[LF] ANDRE [LF] [LF] [LF] [LF]----------------------------------------[LF] [LF][ETX][196] TX -> [STX]G25|--------------- SANGRIA ----------------[LF] [LF] [LF]--------------- DINHEIRO ---------------[LF]VALOR RETIRADO: 0,01 [LF] [LF] [LF] [LF]----------------------------------------[LF] ANDRE [LF] [LF] [LF] [LF]----------------------------------------[LF] [LF][ETX][196] 14:11:55:251 RX <- ----------------- ERRO ----------------- Impressora SwedaSTX não reconheceu o Comando (ACK = 21). Falha: 2 ---------------------------------------- -- 14:12:05:435 FechaRelatorio TX -> [STX]H34[ETX][180] 14:12:05:826 RX <- [STX]H34+0000AI[128][128][146][128][128][ETX][187] Log gerado no meu computador -- 14:19:51:301 CarregaRelatoriosGerenciais TX -> [STX]C34|F1[ETX][162] 14:19:51:688 RX <- [STX]C34F0001PAR[194]METROS ECF[NUL][ESC]*CONTRA-VALE[NUL][ESC]-RECEBIMENTOS[NUL][ESC],SANGRIA[NUL][ESC]1FUNDO DE CAIXA[NUL][ESC]*RELAT.GERENCIAL[NUL][ESC])[ETX]H[STX]C34+0000AA[128][192][146][128][128]F1[ETX]e -- 14:19:51:688 TX -> [STX]D34|F2[ETX][164] 14:19:51:985 RX <- [STX]D34F00020[ESC]$110[ESC].[ETX][STX][STX]D34+0000AA[128][192][146][128][128]F2[ETX]g -- 14:19:51:985 RelatoriosGerenciais TX -> [STX]E43|CONTRA-VALE [ETX][201] VerificaFimImpressao: Pedindo o Status. Seq:70 VerificaFimImpressao: ACK = 6, OK... Aguardando Bloco 14:19:53:043 RX <- [STX]E43+0000AI[128][128][146][128][128][ETX][184][STX]F34+0000AI[128][128][146][128][128][ETX][185] -- 14:19:53:043 LinhaRelatorioGerencial( "--------------- SANGRIA ----------------[CR][LF] [CR][LF] [CR][LF]--------------- DINHEIRO ---------------[CR][LF]VALOR RETIRADO: 0,01 [CR][LF] [CR][LF] [CR][LF] [CR][LF]----------------------------------------[CR][LF] Giuliano [CR][LF] [CR][LF] [CR][LF] [CR][LF]----------------------------------------[CR][LF] Giuliano [CR][LF]", 0 ) TX -> [STX]G25|--------------- SANGRIA ----------------[LF] [LF] [LF]--------------- DINHEIRO ---------------[LF]VALOR RETIRADO: 0,01 [LF] [LF] [LF] [LF]----------------------------------------[LF] Giuliano [LF] [LF] [LF] [LF]----------------------------------------[LF] Giuliano [LF][ETX]j TX -> [STX]G25|--------------- SANGRIA ----------------[LF] [LF] [LF]--------------- DINHEIRO ---------------[LF]VALOR RETIRADO: 0,01 [LF] [LF] [LF] [LF]----------------------------------------[LF] Giuliano [LF] [LF] [LF] [LF]----------------------------------------[LF] Giuliano [LF][ETX]j 14:19:54:600 RX <- [STX]G25+0000AI[128][128][146][128][128][ETX][186] -- 14:19:54:600 FechaRelatorio TX -> [STX]H34[ETX][180] 14:19:55:126 RX <- [STX]H34+0000AI[128][128][146][128][128][ETX][187] Fiz o teste outros modelos da mesma marca (Sweda) e o problema acontece também. Será que pode ser alguma coisa relacionada a timeout? Alguma config que deva ser feita no componente para o protocolo em específico? Att.
  7. Bom dia colegas! Um cliente me relatou essa semana que após a última atualização do sistema, começou a acontecer alguns problemas em 2 pdvs que utilizam a impressora modelo ST120. Ativei o log lá o problema que encontrei foi o que segue nesse trecho: -- 17:37:09:343 EfetuaPagamento( 01 , 55,4 , , 0 ) TX -> [ESC].1001000000005540} 17:37:09:828 RX <- .+0036} -- 17:37:09:828 EfetuaPagamento( 08 , 60 , , 0 ) TX -> [ESC].1008000000006000} 17:37:10:265 RX <- .+0037} -- 17:37:10:281 FechaCupom( MD-5: B60FC50D48FE78DAC5E83B38BEF07B66[LF]Val.Aprox.Tributos R$ 31,82(27,57%) - Fonte IBPT[LF]Caixa: 001 Operador: TAISE[LF]Limite: 60.00#Saldo: 0.00[LF]TROCA SOMENTE COM CUPOM FISCAL. ) TX -> [ESC].12NN0MD-5: B60FC50D48FE78DAC5E83B38BEF07B66 0Val.Aprox.Tributos R$ 31,82(27,57%) - Fo0nte IBPT 0Caixa: 001 Operador: TAISE 0Limite: 60.00#Saldo: 0.00 0TROCA SOMENTE COM CUPOM FISCAL. } 17:37:10:390 RX <- .-0037ERRO-ATRIBUTO INVALIDO} ----------------- ERRO ----------------- Erro retornado pela Impressora: Sweda ST120 (ST) ERRO-ATRIBUTO INVALIDO ---------------------------------------- Acontece sempre no comando FechaCupom que por sinal foi alterado para imprimir os Tributos. Dei uma pesquisada aqui no fórum e não encontrei nada sobre esse problema, mas pesquisando na net encontrei um post no fórum web tratando do mesmo, e por sinal foi acompanhado pelo Daniel e que me parece que aplicou uma correção. http://www.forumweb.com.br/foruns/topic/44483-problemas-com-impressora-sweda/ Pesquisei também no manual da sweda, mas não esclareceu muita coisa ERRO-ATRIBUTO INVALIDO Aceita "0", "1" ou "2" como atributo de impressão. No comando “<ESC>.08”, aceita os atributos “7” a “9” e o fecha-chaves (“}”). Fiz alguns testes com o simulador passando os mesmos dados, mas o problema não acontece, já que o simulador é de uma ST200. Estou tentando conseguir uma ST120 emprestada pra tentar reproduzir o problema e poder depurar, mas fiz o post aqui porque de repente algum colega possa ter passado por isso recentemente e possa ajudar. Agradeço qualquer ajuda! Att.
  8. Sim mas eu faço isso com clientes que usam impressoras Bematech também. O ECFTeste é o programa exemplo que acompanha a instalação e os fontes do ACBr, e que permite testar todos os comandos com a impressora fiscal, inclusive o comando para cadastrar um comprovante não fiscal. Se puder utilizar o ECFTeste e tentar cadastrar um comprovante não fiscal imediatamente após a redução Z, acredito que vai funcionar certinho. Att.
  9. Você já tentou fazer isso com o ECFTeste? Porque faço com bastante frequência o cadastro de formas de pagamento, não fiscal, aliquotas, etc e não apresenta essa mensagem de que é necessário estar em intervenção. Lembrando que esse comando só pode ser executado para adicionar, e só é permitido fazer isso imediatamente após a redução z. Se emitir qualquer documento após o z, ai não é mais permitido alterar nada e ai provavelmente deve apresentar essa mensagem, de que só é possível sob intervenção. Att.
  10. Colegas, aparentemente a ecf não tinha "entendido" a troca de protocolo, pois de uma hora pra outra ela começou a não apresentar mais o erro na sangria e também no relatório gerencial, que era outro documento que estava apresentando problema. O modelo que eu estava testando era o ST2000. Em testes no simulador não apresentou o problema. Agora vou testar nos modelos ST1000, ST120 e ST2500 para ai sim não deixar dúvidas. Eu tinha desligado e ligado a ecf algumas vezes antes de fazer a troca do protoco ecfSweda para ecfSwedaSTX, pois já sabia que era necessário esse procedimento para ela "entender" a troca. Concluindo os testes informo aqui se está tudo ok. Att.
  11. Bom dia colegas! Estou testando o protocolo ecfSwedaSTX, para finalmente colocar em uso nos clientes (atualmente todos estão configurados com ecfSweda) e o teste com a impressão de uma sangria está retornando o seguinte erro: Erro (0058) Comando ou operação inválida! Eu estou testando com o ECFTeste e o ACBr está atualizado para última versão. Depurei e o erro acontece quando é enviada a forma de pagamento do não fiscal. Detalhe é que a sangria é o único acumulador não fiscal (-), então acho que o problema pode estar ai, já que fiz o teste com suprimento e outros não fiscais, e tudo funcionou perfeitamente. Como não conheço bem esse protocolo, gostaria de saber de vocês se o problema é esse mesmo, e se nesse caso eu teria que reprogramar a ecf pra que a sangria fosse um não fiscal (+) Segue anexo o log dos testes. Agradeço qualquer dica o sugestão! Att. acbrlog.txt
  12. Esse arquivo registra.bat faz o que exatamente?
  13. Não lembro se é exatamente esse modelo, mas peguei uma balança urano em um cliente, que retornava esse -9 e o problema era justamente esse que o Daniel falou. Entrei em contato com a Urano e me passaram que o stop bits deveria ser s2. Tente alterar essa config. Att.
  14. Bom tarde! Só pra encerrar o tópico, deixo em anexo o exemplo com a forma que eu achei a ideal, que foi utilizando Screen.FormActive e criando um form genérico para as telas que precisam de leitura do ACBrLCB. Att. scanner.zip
  15. Psé a questão é bem essa que o Daniel colocou. Pra usar como o Juliomar sugeriu, eu teria que usar o LCB como fila, e ficar monitorando de tempo em tempo pra pegar o que foi lido, e assim tratar na tela específica, ou sinalizar com alguma flag no momento que o OnLeCodigo fosse "disparado". Agora que estou com tempo, vou implementar ambas as opções do Juliomar e do Daniel pra ver qual se adapta melhor pro meu caso. Também vou tentar implementar o pattern Observer como no java pra ver se fica legal, e ai posto aqui o resultado, e o que eu acho que funcionou melhor. Obrigado pelas dicas! Abraço! Att.
  16. giulianon

    Acbrlcb - Boa Prática

    Boa tarde galera! Gostaria da opinião de vocês quanto a utilização do ACBrLCB. Quando desenvolvi o meu PDV, pra não variar sem tempo suficiente pra fazer tudo de forma bem pensada, acabei utilizando o componente ACBrLCB em 4 telas distintas do meu sistema, abrindo e fechando a COM quando cada uma delas é acessada. Ao meu modo de ver isso não e uma boa prática. Quando eu tinha o pdv desenvolvido em java, apliquei um pattern(observer) pra ter uma classe que fazia essa leitura, e cada classe que necessitava desse acesso se registrava pra receber a informação do scanner. Alguém já fez dessa maneira em Delphi? Gostaria de saber como vocês tratam isso, ou seja, ter 1 componente ACBrLCB no projeto inteiro sendo utilizado em várias telas do sistema. Obrigado por qualquer dica ou sugestão. Att.
  17. Tem alguns órgãos homologadores que não aceitam esses controles do BLOCO VII feito por triggers. Seria bom você consultar o órgão credenciado que você vai homologar e se informar a respeito.
  18. Descobri. É a ordem que os parâmetros são adicionados. Segue anexo arquivo corrigido. Att. ACBrECFFiscNET.pas
  19. Mas não é Juliomar. Pode observar ali em cima que o item é R$ 1,00 e estou dando um desconto de R$ 0,20. Esse mesmo teste foi feito com as outras marcas e funcionou certinho. Por isso achei estranho. Testei com um item de R$ 5,00 dando um desconto de R$ 0,20, pois achei que o protocolo pudesse estar considerando R$ 2,00 em vez de R$ 0,20 mas não funcionou também. Vou continuar depurando aqui pra ver se descubro. Obrigado!
  20. Bom dia Daniel! Pretendo em utilizar desse método DescontoAcrescimoItemAnterior, e para isso resolvi testar o mesmo com as marcas de ecf que meus clientes utilizam. Bematech, Daruma, Sweda e Epson OK. Com o FiscNet está retornando o erro que consta no log abaixo, gerado com testes feitos com o ECFTeste compilado agora com a última versão do ACBR. -------------------------------------------------------------------------------- ATIVAR - 10/01/13 11:25:58:097 - Modelo: FiscNET - Porta: COM5 - TimeOut: 3 Device: BAUD=115200 DATA=8 PARITY=E STOP=1 HANDSHAKE=RTS/CTS HARDFLOW MAXBANDWIDTH=0 -------------------------------------------------------------------------------- -- 11:25:58:098 TX -> {1;LeTexto;NomeTexto="VersaoSW";31} 11:25:58:251 RX <- {1;0;ValorTexto="03.00.00";26} -- 11:25:58:251 TX -> {2;LeTexto;NomeTexto="TextoLivre";33} 11:25:58:404 RX <- {2;0;ValorTexto="";18} -- 11:25:58:404 TX -> {3;LeTexto;NomeTexto="Marca";28} 11:25:58:562 RX <- {3;0;ValorTexto="ZPM";21} -- 11:25:58:562 TX -> {4;LeTexto;NomeTexto="Modelo";29} 11:25:58:718 RX <- {4;0;ValorTexto="Simulador V1.00";33} -- 11:25:58:718 Estado TX -> {5;LeInteiro;NomeInteiro="EstadoFiscal";39} 11:25:58:875 RX <- {5;0;ValorInteiro=1;19} -- 11:25:58:875 TX -> {6;LeInteiro;NomeInteiro="Indicadores";38} 11:25:59:029 RX <- {6;0;ValorInteiro=14400;23} -- 11:25:59:037 Estado TX -> {7;LeInteiro;NomeInteiro="EstadoFiscal";39} 11:25:59:203 RX <- {7;0;ValorInteiro=1;19} -- 11:25:59:203 TX -> {8;LeInteiro;NomeInteiro="Indicadores";38} 11:25:59:357 RX <- {8;0;ValorInteiro=14400;23} -- 11:26:04:416 AbreCupom( , , ) TX -> {9;AbreCupomFiscal;;19} 11:26:04:656 RX <- {9;0;;5} -- 11:26:04:657 NumCupom TX -> {10;LeInteiro;NomeInteiro="COO";31} 11:26:04:819 RX <- {10;0;ValorInteiro=8;20} -- 11:26:04:858 Estado TX -> {11;LeInteiro;NomeInteiro="EstadoFiscal";40} 11:26:05:023 RX <- {11;0;ValorInteiro=2;20} -- 11:26:08:498 VendeItem( 111222333 , TESTE DE PRODUTO , NN , 1 , 1 , 0 , UN , % , D , -1 ) TX -> {12;VendeItem;CodAliquota=-4 CodProduto="111222333" NomeProduto="TESTE DE PRODUTO" PrecoUnitario=1 Quantidade=1 Unidade="UN";124} 11:26:08:670 RX <- {12;0;;6} -- 11:26:08:670 Arredonda TX -> {13;LeInteiro;NomeInteiro="Arredondamento";42} 11:26:11:006 RX <- {13;11011;NomeErro="ErroProtNomeRegistrador" Circunstancia="Parametro NomeInteiro contem nome de registrador inexistente";121} ----------------- ERRO ----------------- Erro retornado pela Impressora: FiscNET: ZPM - Simulador V1.00 Erro: 11011 - ErroProtNomeRegistrador Parametro NomeInteiro contem nome de registrador inexistente ---------------------------------------- -- 11:26:11:060 Estado TX -> {14;LeInteiro;NomeInteiro="EstadoFiscal";40} 11:26:11:216 RX <- {14;0;ValorInteiro=2;20} -- 11:26:24:202 DescontoAcrescimoItemAnterior( 0,2 , D , $ , 1 ) TX -> {15;AcresceItemFiscal;ValorAcrescimo=-0,2 NumItem=1 Cancelar=f;62} 11:26:28:886 RX <- {15;8047;NomeErro="ErroCMDDescontoItemInvalido" Circunstancia="Desconto nao pode ser maior ou igual do que o total do item";123} ----------------- ERRO ----------------- Erro retornado pela Impressora: FiscNET: ZPM - Simulador V1.00 Erro: 8047 - ErroCMDDescontoItemInvalido Desconto nao pode ser maior ou igual do que o total do item ---------------------------------------- Fiz o teste usando o Demolog2 e funcionou certinho. Vou tentar depurar aqui e corrigir, mas se alguém ai já tiver passado por esse problema e puder dar alguma dica, agradeço. Att.
  21. Código IBGE do novo município: 4219002 Provedor Betha Sistemas Favor atualizar nos fontes. Att.
  22. De que forma você está enviando esses comandos? Na pasta \acbr\Exemplos\ACBrECF tem um exemplo bem completo que você pode estudar e testar com a ecf.
  23. Pode informar qual a marca e modelo da ecf que você está utilizando?
  24. Bom dia Daniel! Testado. Tudo ok. Muito obrigado mais uma vez! Abraço! Att.
  25. Boa tarde Daniel! Agora sim \o/ Fiz uns ajustes: - Aumentei pra 10 segundos o timeout da espera pelo cmc7, pois no modelo ST2000, essa leitura é mais lentinha, e estava retornando o erro que a ecf não estava respondendo durante a leitura. - Ajustei ali o retorno pra pegar exatamente o cmc7 function TACBrECFSwedaSTX.LeituraCMC7: AnsiString; var OldTimeOut: Integer; begin Result := EnviaComando('24|1|0|1000'); { Leitura do CMC7 deve retornar mais dados } OldTimeOut := TimeOut; try TimeOut := max(OldTimeOut,10); // Espere mais 10 segundos... GravaLog( ' Aguardando Resposta CMC7'); LeResposta; fpRespostaComando := fsRespostasComando ; // Respostas Acumuladas GravaLog( ' Retorno Completo: '+fpRespostaComando ); { Limpando de "fpRespostaComando" os Status não solicitados } fpRespostaComando := AjustaRetorno( fpRespostaComando ); GravaLog( ' Retorno Tratado: '+fpRespostaComando ); Result := copy(fpRespostaComando,35,36); // Verificar finally TimeOut := OldTimeOut; end; end; Bom acho que é isso. Agora posso mudar tudo pra ecfSwedaSTX. Muito obrigado mais uma vez, pela atenção e pela solução Daniel! Grande abraço! Att.
×
×
  • 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.