Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 20-05-2019 em todas as áreas

  1. Há uns 6 anos atrás achei isso: tão verdade...
    3 pontos
  2. Leia o manual de contingência off-line da NFCe. http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=YbZEjEHCuHQ= Caso você tente enviar uma NFCe no modo normal e haja falha de comunicação, você já deve emitir uma segunda NFCe em contingência, e marcar a primeira para cancelamento ou inutilização. A NT 2018.004 implantou o cancelamento por substituição que valida o conteúdo de ambas as notas para garantir que sejam referentes à mesma venda, estende o prazo do cancelamento por substituição para 168 horas, e reduz o cancelamento normal para 30 minutos. No cancelamento por substituição você deve informar a chave da NFCe emitida em contingência que acoberta a NFCe sendo cancelada. A única diferença é que hoje a série da NFCe em contingência não é reservada, então você pode ter NFCe série 1 número 20 em modo normal, e NFCe série 1 número 21 em contingência off-line. Com a reserva da série, você terá NFCe série 1 número 20 em modo normal, e NFCe série 890 número 1 em contingência, por exemplo.
    3 pontos
  3. Atualmente eu faço isso também... Se der algum exception de conexão com o WebService eu tento novamente. Controlando o tempo de espera para tentar novamente e o quantas vezes irá tentar. Em resumo, a questão de TimeOut é "quase" nula aqui. Por padrão no aplicativo vai os seguintes parâmetros: TimeOut: 30 segundos (sim é um valor alto, mas esse WebService é complicado). Número Tentativas: 10 tentativas. Tempo de espera entre as tentativas: 5 segundos.
    3 pontos
  4. Caso você não use pagamento integrado (TEF) na aplicação, pode informar apenas a tag tpIntegra = 2. with pag.Add do begin ... tpIntegra := tiPagNaoIntegrado; Os demais dados devem ser informados caso tpIntegra seja 1.
    2 pontos
  5. sendo simples na resposta, sim é possível. Desde que você passe o NSU da nota completa e não do resumo (que é o que está fazendo). Reafirmando ainda que para ter acesso ao XML completo é necessário realizar a manifestação do destinatário antes.
    2 pontos
  6. Opa, boa tarde. Você está consultando um NSU de um resumo. Por isso está obtendo o XML de resumo. Primeiramente deverá realizar a manifestação do destinatário. Feito isso o Ambiente Nacional irá gerar um novo NSU, agora com o XML da nota. Ou seja, depois que você realizar a manifestação, um novo NSU será gerado. É a partir desse novo NSU que você vai obter o XML completo da nota fiscal. Eu particularmente não utilizo esse método DistribuicaoDFePorNSU pois eu preciso saber qual será o NSU que eu desejo consultar. Se eu já sei o NSU, significa que eu já tenho os dados pertinente aquele NSU. Aqui eu utilizo o método DistribuicaoDFePorUltNSU, nele é passado um NSU "base" e com o isso retorna os NSU's que foram criados depois do que você passou como base. Exemplo: se eu passar zero, retorna todos os NSU's dos últimos 90 dias. Quando eu recebo esses NSU's eu armazeno no banco de dados e a próxima consulta eu passo o último NSU que eu tenho gravado no banco de dados... Com os NSU's em mãos, realizo a manifestação do destinatário e executo o método DistribuicaoDFePorUltNSU novamente ou o método DistribuicaoDFePorChaveNFe
    2 pontos
  7. Para acrescentar ao que o Júnior escreveu, Esse erro se refere a uma nota que foi emitida e transmitida e ao considerar o horário da recepção pelo servidor da SEFAZ, isso aconteceu num tempo superior a 5 minutos. Por exemplo: Você emite uma nota e a data de emissão dela consta 16/05/2019 10:30:19. Mas quando ela é transmitida, o horário do servidor da receita consta 16/05/2019 10:36:19. Nesse caso a nota vai ser rejeitada com o erro mencionado. No caso de vocês parece que está havendo um mal entendido da diferença de funcionamento Síncrono/Assíncrono. Quando vocês emitem e transmitem pela primeira vez dá tudo certo, como o Júnior mencionou. Só que não há consulta do status então talvez o programa de vocês encare como se a nota ainda não foi processada. Daí o sistema está tentando transmitir a mesma nota várias vezes. E como isso está acontecendo até com um mês de diferença, vocês passam a receber o erro acima. Veja abaixo que é a mesma nota sendo enviada nessa parte do log:
    2 pontos
  8. Boa tarde Aparentemente esta tentando um retorno Assíncrono para uma NFCe que obtem retorno Síncrono... Note que o primeiro retorno é de Lote Recebido com sucesso. Experimente passar o sexto parâmetro como "1", Síncrono... ex: NFE.CriarEnviarNFe("arquivo.ini...", , , , ,1) https://acbr.sourceforge.io/ACBrMonitor/NFEEnviarNFe.html
    2 pontos
  9. Basicamente, é isso mesmo. Não sei como está a demanda de vocês, qualquer coisa podemos desenvolver, após postamos para analisarem. Vamos precisar desse processo, pois alguns clientes não vão transmitir direto ao WebService, apenas irão gerar o XML para a contabilidade transmitir. Como não sabemos a forma que o software da contabilidade vai se portar, iremos disponibilizar as duas opções por LOTE e por arquivo separado.
    2 pontos
  10. Bom dia. Muito Obrigado @Daniel Simoes, e lembrando pra quem for implementar o MFE do Ceará sem o integrado. A opção de envio via DLL funciona apenas para Envio, Cancelamento e Inutilização, se foi enviar o pagamento POS tem que ter o integrador rodando pois ainda usa ele. Obrigado.
    2 pontos
  11. Bom dia, a última versão do ACBrMonitor já contempla o componente, porém ainda estamos atualizando o Manual com todos os métodos. É provável que esteja disponível o manual na próxima semana. Lembrando que os métodos do BPe está em fase de testes no ACBrMonitor. Contamos com a ajuda também de quem vai utilizar, para os testes...
    2 pontos
  12. Modifiquei o Demo... além do "cast" sem teste, ainda havia um "Memory Leak"... eu particularmente, não gosto de métodos que criam e retornam Objetos... (mas foi implementado dessa maneira) procedure TForm1.btMFEEnviarPagamentoClick(Sender: TObject); var PagamentoMFe : TEnviarPagamento; RespostaPagamentoMFe : TRespostaPagamento; begin RespostaPagamentoMFe := Nil; PagamentoMFe := TEnviarPagamento.Create; try with PagamentoMFe do begin Clear; ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D'; ChaveRequisicao := '26359854-5698-1365-9856-965478231456'; Estabelecimento := '10'; SerialPOS := InputBox('SerialPOS','Informe o Serial do POS','ACBr-'+RandomName(8)); CNPJ := edtEmitCNPJ.Text; IcmsBase := 0.23; ValorTotalVenda := 1530; HabilitarMultiplosPagamentos := True; HabilitarControleAntiFraude := False; CodigoMoeda := 'BRL'; EmitirCupomNFCE := False; OrigemPagamento := 'Mesa 1234'; end; if ACBrSAT1.SAT is TACBrSATMFe_integrador_XML then RespostaPagamentoMFe := TACBrSATMFe_integrador_XML(ACBrSAT1.SAT).EnviarPagamento(PagamentoMFe) else RespostaPagamentoMFe := ACBrIntegrador1.EnviarPagamento(PagamentoMFe); if Assigned(RespostaPagamentoMFe) then ShowMessage(IntToStr(RespostaPagamentoMFe.IDPagamento)); finally PagamentoMFe.Free; if Assigned(RespostaPagamentoMFe) then RespostaPagamentoMFe.Free; end; end;
    2 pontos
  13. Opa! Não entendi muito bem sua pergunta. Mas vamos lá... Caso queira baixar notas fiscais emitidas CONTRA o CNPJ do seu cliente. Deve-se utilizar o método de DistribuicaoDFe. (Aqui uma explicação, e aqui um exemplo prático) Observação 1: você consegue baixar um resumo das notas fiscais para que seja possível você realizar o manifesto. Após o evento de manifestação o Ambiente Nacional disponibiliza o XML da nota em questão. Observação 2: O Ambiente Nacional disponibiliza o resumo/DFe apenas se o seu cliente for o Destinatário, Transportadora ou o CNPJ estiver na tag <AutXML>. Caso queira RECUPERAR um ou mais XML EMITIDO pelo seu cliente. Deve-se alimentar o componente com os dados da venda/nota, assinar e consultar. (Aqui um exemplo prático) Observação 1: Não é muito indicado ficar fazendo isso. Já que na lei diz que o contribuinte é obrigado guardar o XML do documento fiscal. Observação 2: Caso você tenha o XML assinado, você pode carregar o XML e executar o método Consultar apenas... Dessa forma o XML será atualizado com o protocolo. Observação 3: O único método oficial pela SEFAZ é realizar o download do documento fiscal diretamente pelo portal, utilizando o certificado digital. Sites como Arquivei lite fornece um XML válido porém sem validade jurídica já que a assinatura não é a do emitente.
    2 pontos
  14. Cross Compile de Linux para Win32 Baixe o Lazarus do Site oficial: https://www.lazarus-ide.org/ Exemplo de arquivos a serem baixados: lazarus-2.0.2-0.x86_64.rpm, fpc-3.0.4-1.x86_64.rpm, fpc-src-3.0.4-1.x86_64.rpm Instalar FPC e FPCSRC (em modo "root") rpm -U fpc* Instalar Lazarus (em modo "root") rpm -U lazarus* Testar a instalação do Lazarus (em modo normal) startlazarus Feche o Lazarus e acesse a pasta dos fontes do FPC cd /usr/share/fpcsrc/3.0.4 Compilar FPC em Win32 (em modo "root") make all OS_TARGET=win32 CPU_TARGET=i386 Instalar novas DCUs e Compilador no Linux (em modo "root") make crossinstall OS_TARGET=win32 CPU_TARGET=i386 INSTALL_PREFIX=/usr Editar /etc/fpc.cfg (em modo "root") Incluir antes da sessão "Linking" a linha -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/* Criar Link Simbólico para o compilador Win32 em /usr/bin (em modo "root") ln -s /usr/lib/fpc/3.0.4/ppcross386 /usr/bin/ppcross386 Configure o seu projeto, criando um novo Build Mode (em modo normal) Acesse Project Options -> Compiler Options -> Config and Target Target OS -> Win32 Target CPU -> i386 Se ocorrer erros na recompilação da IDE, e tiver dificuldades de descobrir o problema. Selecione em Mensagens, para não efetuar nenhum filtro Botão direito em Mensagems -> Filter non Urgent Messages -> Filter None Observe as mensagens, geralmente é acusada a falta de alguma Biblioteca compartilhada... No caso de dúvidas, por favor crie um novo tópico em: https://www.projetoacbr.com.br/forum/forum/12-object-pascal-delphi-lazarus/
    1 ponto
  15. Boa tarde Victor, Você esta configurando o componente com o winCrypt, correto? Por favor teste com essa outra Unit. ACBrDFeXsLibXml2.pas
    1 ponto
  16. Boa tarde Baixei o ACBr dia 10-05-2019 e a Unit ACBrCalculadora.pas e ao dar um ESC e reabrir a Calculadora o Valor do display permanece. Gostaria de sugerir que o display e a memória da calculadora fossem zerados Correção: function TACBrCalculadora.Execute: Boolean; Substituir Linha FrCalculadora.ValorDisplay := '0'{FloatToStr( FValor ) };
    1 ponto
  17. Boa tarde Veja um exemplo funcional no demo que acompanha o projeto ACBrMonitor no repositório em: C:\ACBr\Projetos\ACBrMonitorPLUS\Lazarus\Exemplos\Lazarus Basta configurar o Monitor para TCP/IP e deixam ambos na mesma porta.
    1 ponto
  18. 1 ponto
  19. Bom dia, Toda vez que ocorre esse tipo de erro (999 - Erro não catalogado), sem duvida é na SEFAZ. Devemos entrar em contato com eles e expor o problema.
    1 ponto
  20. Se compreendi.. você deseja ter um ACBrMonitor centralizado, e vários terminais acessando o mesmo, correto ? Se sim, ele não foi projetado para esse cenário... Ele não tem tratamento de Semáforos, e isolamento dos componentes, entre várias conexões...
    1 ponto
  21. Bom dia Dercide, Muito obrigado pela colaboração, ainda hoje estarei enviando para o repositório.
    1 ponto
  22. Bom dia Bruno, Fiz uma alteração no arquivo INI do provedor e ainda hoje estarei envia para o repositório. Quem sabe com essa alteração resolve o problema.
    1 ponto
  23. Lentidão dos webservices do governo é comum, existem técnicas de programação que podemos fazer para minimizar isso. Erro de timeout do webservice pode ser tratado com um simples try..except no nosso software. Podemos fazer uma thread para ficar consultando o webservice de tempos em tempos. Acho que o povo reclama demais.
    1 ponto
  24. Bom dia, Já esta no forno, terminando de assar. Esta sendo feito alterações nas telas no Monitor para acomodar as opções de configurações do BP-e e por fim fazer os testes. Não sei lhe informar com precisão quando vai ser liberado a versão do Monitor que vai contemplar o BPe, pois também falta atualizar o Manual juntamente com um exemplo de arquivo INI com os campos que vão conter os dados do Bilhete, bem como os exemplos dos eventos suportados. Peço um pouco mais de paciência, pois esta chegando.
    1 ponto
  25. Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
    1 ponto
  26. Parece ser algum erro da Sefaz, também estou com o mesmo erro desde sexta-feira a tarde.
    1 ponto
  27. Bom dia Pelo erro apresentado não esta conseguindo gravar o arquivo no path especificado. Este diretórios estão corretos? C:\ACBRNFEMONITOR\ENT.TXT C:\ACBRNFEMONITOR\SAI.TXT C:\ACBrMonitorPLUS\LOG.TXT
    1 ponto
  28. Verifique se as configurações da serial da Balança são as mesmas no Monitor... Velocidade, paridade, etc..
    1 ponto
  29. ACBrLibNFe foi finalizado recentemente provavelmente estará disponível para download esta semana.
    1 ponto
  30. O problema estava na configuração da balança - Tudo resolvido. - Obrigado
    1 ponto
  31. Opa, Se você não utiliza capicom e/ou MSXML. Vá até: .../Fontes/ACBrComum/ Abra o arquivo ACBr.inc. Descomente as diretivas abaixo (retirando o ponto do início). Salve o arquivo. De um build no seu projeto. {.$DEFINE DFE_SEM_CAPICOM} {.$DEFINE DFE_SEM_MSXML}
    1 ponto
  32. Boa tarde, @Eduardo Santana! Nota fiscal emitida pelo seu próprio cliente: não tem como recuperar apenas com a chave de acesso. É necessário carregar o componente ACBrNFe com todos os dados da nota fiscal novamente. Vou deixar um outro tópico aqui embaixo onde eu explico melhor sobre essa questão, com exemplos:
    1 ponto
  33. Exatamente! Inclusive eu acabei de testar aqui e o EMITENTE recebe o "Evento completo" da manifestação do destinatário. E o tpEvento são exatamente esses que você citou. Um detalhe importante: Na prática o método DistribuicaoDFe funciona de forma cronológica, ou seja; sempre terá o resumo da nota fiscal antes de um evento (já que a nota sempre será emitida antes de um evento ser criado). Porém poderá ter casos (esse que você está citando) onde serão retornados eventos que não são relacionados a notas fiscais recebidas e sim emitidas pela própria empresa que está executando o método. Então você deverá tratar esses casos onde o método DistribuicaoDFe retorna apenas um evento e que esse evento se refere a uma uma NFe que o EMITENTE criou e não a uma NFe que foi DESTINADA ao EMITENTE. Exemplo: Empresa ABC emite uma nota para a empresa DFG. Empresa DFG realiza a manifestação do destinatário. Empresa ABC recebe um NSU/evento (através do DistribuicaoDFe) com a manifestação da empresa DFG. O sistema deverá relacionar esse evento com a nota fiscal que foi EMITIDA pela empresa ABC.
    1 ponto
  34. Separei o tópico por se tratar de assunto diferente. Tópico original: Evite colar código como corpo da mensagem, anexe os arquivos modificados.
    1 ponto
  35. tive esse problema em varios clientes e o que um amigo meu observou foi que o modem que controlava a rede era de uma operadora e ele oscilava muito. Trocamos o modem por um swit e serolveu o problema
    1 ponto
  36. O tópico é um pouco antigo, na época que tivemos o problema, não era possível realizar o bloqueio, devido ao sat estar em processamento, não sei como esta nos dias de hoje; Aqui pelo menos na época , os novos clientes compraram outro equipamento sat (de outro fabricante ), enquanto a bematech "enrolava" 60 dias para realizar a troca e depois realizavam a venda do equipamento quando voltada do RMA; O mais engraçado que aqui pelo menos, esse problema do CF-e só ocorriam com equipamento da Bematech, outros fabricantes (Elgin, Gertec, Dimep, Tanca), nunca pegamos aqui; --Ao meu ver é sim um problema no Software Base da Bematech, e não da SEFAZ, pois a alguns meses atras passamos por problemas durante a ativação de SAT's da Elgin, que todo o lugar falava ser problema na sefaz, após contato com a Elgin, foi lançado uma nova versão do Software Base que solucionou o problema na ativação.; Coisa que a bematech não pega e faz, se só eles tem esse problema, alguma coisa da errado;
    1 ponto
  37. Pode ser que o estado não esteja preparado para a versão 2.0 do GNRe. Você pode verificar isso no seguinte site: Pode-se consultar alguma (in)compatibilidade no seguinte site: http://www.gnre.pe.gov.br/gnre/portal/consultarTabelas.jsp Queiram por favor verificar também o seguinte tópico sobre o assunto que indica que alguns campos adicionais podem não estar disponíveis em algumas UFs:
    1 ponto
  38. Boa noite Italo. Obrigado pelo Retorno tão rápido. Então não é preciso emitir um MDF-e que faça o percurso de Minas até Bahia, na situação da Transportadora estiver vazia. Mesmo que ela saia de Minas para realizar a busca da mercadoria na Bahia. Nesta situação o correto seria a empresa(no caso o fornecedor) em que foi realizada a compra na Bahia, emita a Nota de venda de mercadoria para outro estado( Minas) e o mesmo cadastre um MDF-e com o estado de carregamento igual a BA e o estado de Descarregamento em MG. Na situação de utilizar a Transportadora de Minas. Então... como eu faria este cadastro?? Já pesquisei de várias formas, porém não consegui chegar a um denominador comum para resolver o problema. Novamente, agradeço a atenção.
    1 ponto
  39. Verifique se a DLL é de 32 bits... ou se usa a convenção de chamada CDECL
    1 ponto
  40. Tenho algumas sugestões para você: Opção 1 - Verificar com o contador se o seu cliente pode fazer os lançamentos com enfoque no declarante. Quer dizer, ele lançaria não exatamente o que vem escrito na nota, mas como ele considera o produto. Nesse caso em vez de lançar 120 m3 de madeira ele vai lançar 120 caibros 5X2, 60 caibros 5,5X2, etc... Opção 2 - Verificar como o seu cliente fazia anteriormente pra controlar o estoque. A partir daí, você pode tentar seguir o mesmo esquema automatizando de acordo com seu programa. Opção 3 - Criar um sistema de conversão de produtos de entrada. Nesse caso, seu sistema teria um cadastro de produtos que são gerados a cada m3 de madeira. O cadastro seria alimentado pelo cliente e, a partir da entrada, seu programa faria a conversão. Mas só funcionaria mesmo se os fornecedores dele mandam sempre a mesma quantidade de material para a mesma quantidade de m3 de madeira. Opção 4 - Criar um sistema de produção. Esse seria uma área separada do seu programa e funcionaria como o Italo descreveu acima.
    1 ponto
  41. Deu certo muito obrigado
    1 ponto
  42. Obrigado pela resposta. Eu não estava validando essa informação antes de enviar para o componente. Vou validar isso e testar novamente...
    1 ponto
  43. Pela chave informada na tag chNFeRef é possível determinar o tpEmis da NFCe referenciada, já que a tag compõe a chave de acesso. Então se você informar uma chave de uma NFCe que não foi emitida em contingência off-line terá a rejeição. No caso essa NFCe foi emitida no modo normal.
    1 ponto
  44. Bom dia Fernanda, Não se faz necessário o PDF do DANFE da NFC-e, somente o XML. Outra coisa, no DANFE da NFC-e temos a chave e a URL onde o consumidor pode realizar uma consulta, para saber se realmente a nota foi enviada para SEFAZ, sem falar no QR-Code que de posse de um leitor podemos realizar a mesma consulta. A impressão via EscPos não é possível a geração do PDF pelo simples fato do componente realizar uma comunicação direta com a impressora, ou seja, não é gerado uma imagem do que vai ser impresso e depois enviado para a impressora, funciona de forma semelhante a impressão em impressoras matriciais realizada pelos programas feitos para o DOS.
    1 ponto
  45. No tópico abaixo, temos uma excelente resposta, de @Gabriel Franciscon, sobre esse mesmo tema
    1 ponto
  46. Boa Tarde @eliton.sc estava tendo o mesmo problema que você e encontrei uma solução. Antes de qualquer coisa aconselho a entrar em contato com o seu contador atual e parabeniza-lo pela correta interpretação da legislação em vigor, pois é difícil encontrarmos um profissional que faça o seu trabalho bem feito e este foi o caso que ficou em evidência. Antes de falar como resolver o problema iremos tratar da legislação: A pesar de não poder falar por todos os estados, tendo em vista que a legislação que autoriza a emissão de um CTe de substituição é estadual, estarei repassando o que é feito no estado do ES, mas creio que isto seja regra geral, favor confirmar com o seu contador. Existem basicamente dois casos que de fato precisamos emitir um CTe em nome do tomador: Tomador do serviço está correto e o valor do serviço está maior do que o acordado, porém o mesmo não é contribuinte, você irá realizar a emissão de uma NFe(modelo 55) no CFOP 1.206/2.206 e destacar exatamente os mesmos valores e destaque de imposto se houver. Sendo possível a emissão de um CTe de substituição depois se for o caso. Tomador do serviço está errado. Com isso estarei abordando a necessidade de emitir um CTe referenciando o caso número 2, mas antes temos que ter em mente que o CTe, assim como qualquer programa de computador é uma ferramenta para um fim, nada mais nada menos, uma ferramenta de suma importância, mas somente uma ferramenta. Tendo em vista que o CTe se trata de uma ferramenta, ela deve ser alterada sempre que a sua base for alterada e entenda aqui como base a legislação. Resumidamente seria: Legislação altera manual do CTe, manual do CTe nunca altera legislação, por isso que as pessoas que te responderam usaram o termo "está incoerente com o apresentado na legislação" O Ajuste SINIEF 8/2017 alteraou o Ajuste SINIEF 9/2007 em sua cláusula sétima-A, dando a opção de ser feito a alteração do tomador do CTe a partir de 01/11/2017, versando o seguinte, grifo meu: Diante da legislação fica claro que podemos fazer a operação em questão, fato. Agora vamos a solução No erro ele fala, grifo meu : ou seja, no seu XML você informou o grupo "tomaICMS" então temos que verificar quando é necessário informar este grupo: Sendo assim no meu caso o meu cliente estava colocando indevidamente o grupo "tomaICMS", pois o cliente é contribuinte do ICMS e emite seus documentos fiscais, resolvemos a questão solicitando ao suporte do seu sistema que deletasse esse Schema do XML, simples assim. Espero que seja de ajuda para outros amigos do fórum.
    1 ponto
  47. @alexandrebarbosa, veja o que diz a nota técnica NT_2016_002_v1.42, na última página (60). 6 Campos do DANFE Nesta nova versão não haverá alteração no leiaute do DANFE. As informações relativas ao Fundo de Combate à Pobreza (FCP) devem ser informadas: No campo de "Informações Adicionais do Produto, tag: indAdProd", os valores informados por item nos campos (vBCFCP, pFCP, vFCP, vBCFCPST, pFCPST, vFCPST), quando existirem. Os valores de totais do FCP (id: W04b e W06a) devem ser informados em "Informações Adicionais de Interesse do Fisco, campo “infAdFisco", quando existirem."
    1 ponto
×
×
  • 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...