Erro 12029 ao utilizar Delphi com Kinvey

Situação: Servidor de aplicação desenvolvido em Delphi (Berlin), usando o Kinvey para envio de Push Notifications para celulares Android e iOS.

Problema: De uma hora para outra, não foi mais possível enviar as notificações. O erro retornado era “REST request failed: Error sending data (12029). Uma conexão com o servidor não pode ser estabelecida“.

Ambiente: Windows Server 2012 (100% atualizado através do Windows Update)

Para encurtar a história, depois de muito bater a cabeça, descobri que o problema estava no fato do servidor de aplicação não conseguir conectar o Kinvey usando TLS 1.2. Obs: Nas configurações de Internet do Windows, TLS 1.1 e 1.2 estavam ativas.

Aparentemente o Kinvey passou a exigir TLS 1.2 nas conexões (não sei exatamente em que data isso se tornou obrigatório, possivelmente em 04/Setembro/2018). Olhando nas DLLs carregadas pela aplicação Delphi, percebi que ela faz uso do WinHttp para comunicação. Sendo assim, vasculhando a internet, encontrei esse artigo, da própria Microsoft: Atualização para ativar o TLS 1.1 e o TLS 1.2 como um protocolos de segurança padrão no WinHTTP no Windows.

Após instalar o EasyFix do link acima, tudo voltou a funcionar!

Fica a dica, e também a reclamação do “por que” o WindowsUpdate não ter instalado isso por padrão!

Listando as propriedades de uma classe

Segue um código (pascal/Delphi) que criei para listar as propriedades que pertencem a uma classe.

O código usa a RTTI do Delphi para “percorrer” as propriedades. A procedure é recursiva, ou seja, se uma das propriedades for também um classe, a procedure chama ela mesma passando como parâmetro a classe da propriedade encontrada.

Para compilar o código abaixo, crie uma nova aplicação VCL e no form principal coloque um TMemo e um TButton, e configure os eventos conforme o código abaixo.

Substitua o segundo parâmetro da chamada a getPropList pela classe que deseja “vasculhar”. O terceiro parâmetro é o quão “profundo” você deseja ir em relação as iterações quando uma propriedade encontrada for uma classe.

Recebendo pagamentos do exterior

PayoneerQuando decidi lançar meu eBook Guia de Migração para o Firebird 3 em inglês, já prevendo oferecê-lo também em formato impresso através dos serviços de impressão sob demanda da CreateSpace, mal sabia os transtornos que viriam pela frete. Talvez o maior deles seja o fato que a CreateSpace só faz pagamentos através de cheques ou depósito bancários em bancos americanos.

Não preciso dizer que a opção “jurássica” de receber em cheque é quase que inviável no Brasil, visto que, além da demora (Correios), perde-se também muito dinheiro com as taxas cobradas pelos bancos e com a conversão de moeda. Abrir uma conta em um banco estrangeiro também é um processo burocrático e inviável para muitos.

A boa notícia é que existe um serviço chamado Payoneer, que facilita tremendamente receber pagamentos não só da CreateSpace, como de qualquer empresa internacional! O Payoneer é um cartão de crédito pré-pago, em USD. Ao se cadastrar na Payoneer e solicitar o cartão, você recebe também, automaticamente, uma conta corrente “virtual” em um banco americano (First Century Bank), com o serviço ACH (Automated Clearing House) habilitado. Isso possibilita que você receba pagamentos de praticamente qualquer empresa americana (ou estrangeira). Quando o dinheiro é depositado na sua conta virtual, ele automaticamente vai pro saldo do seu cartão Payoneer. O melhor é que você pode usar o cartão em qualquer estabelecimento que aceite Mastercard, inclusive para compras on-line em lojas do exterior (Amazon, Google, etc). Também dá pra sacar dinheiro em determinados caixas ATM em todo o mundo.

É óbvio que existem tarifas envolvidas em todo o processo. O próprio cartão tem um custo de anuidade de USD 30, além de ser cobrada uma pequena taxa a cada utilização. No entanto, pode ser uma boa opção para quem precisa receber pagamentos em dólar, e quer gastar esses dólares comprando em lojas virtuais americanas, ou mesmo em viagens para o exterior, visto que essas taxas serão menores do que os 6.38% de IOF que pagamos ao usar um cartão de crédito “brasileiro” para fazer compras em moeda estrangeira. Ainda não sei dizer se compensa usa-lo para sacar o dinheiro em Reais nos caixas eletrônicos no Brasil, pois vai depender da taxa de conversão adotada, e também da tarifa que a rede ATM irá cobrar.

Para os desenvolvedores de software, a Payoneer também aceita receber pagamentos diretamente de serviços como a PayPro, Digital River, etc.

Para quem ficou interessado, use esse link para se inscrever no Payoneer e receber USD 25 de crédito (tão logo acumule um saldo de USD 100 no cartão nos primeiros 12 meses após o cadastro – mais detalhes sobre as condições aqui). Com isso, quase que se zera a primeira anuidade.

NT 2015.003 v 1.60 – a “palhaçada” continua!

Dia 30/12… nosso querido governo, obviamente sabendo que programadores não gostam de viajar, muito menos de comemorar a virada do ano, resolve lançar mais uma atualização da NT 2015.003, com mais alterações e, como de costume, deixando mais dúvidas pairando no ar.

Uma das alterações diz que o valor do FCP não deve ser somado ao valor do ICMS do estado de destino, nos itens das notas. No entanto, no total, continua somando. E aí? Não seria uma incoerência? Ou será que o estagiário esqueceu de atualizar o texto?

Nesse momento, se tentarmos autorizar uma NF seguindo as novas instruções da NT 1.60, ela é rejeitada, pois o total do ICMS do estado de destino na nota não fecha com a soma do valor do icms de destino dos itens, o que reforça a incoerência descrita acima, ou então indica que a Sefaz não atualizou os webservices de homologação.

Eu já desabafei sobre esse assunto no meu post anterior, então não vou repetir os “elogios” aqui… mas que é revoltante, no mínimo, é!

Feliz Ano Novo para todos!

NT 2015.003 v1.60

Preenchimento do XML de NF-e referente a partilha do ICMS

O mês de Dezembro/2015 está sendo extremamente desgastante para os programadores de softwares ERP, visto que nosso “querido governo” aparentemente não tem a mínima noção das implicações causadas pelas mudanças de leis, muito menos qualquer bom senso sobre a estipulação de prazos. Soma-se a isso o aparente fato de que, nem mesmo quem altera/cria as leis, parece ter a mínima consciência das complicações que irá gerar. Vide a “tragicomédia” referente a Nota Técnica 2015.003, que já tem várias revisões, onde uma nova revisão muitas vezes desfaz o que foi estipulado na versão anterior, e nem sempre orienta corretamente sobre os procedimentos, como foi o caso do exemplo de cálculo introduzido na revisão 1.40 e removido na revisão 1.50 (por não ser mais válido), sendo que um novo exemplo nem mesmo tenha sido introduzido.

Já passamos da metade do mês, temos Natal e Ano Novo pela frente, e parece que somente há alguns dias atrás, chegou-se a uma versão final de como devem ser feitos os cálculos para apurar os valores de partilha de ICMS. No entanto, nenhum exemplo oficial sobre o cálculo e preenchimento dos campos no XML foi disponibilizado, o que dá margem para múltiplas interpretações, colaborando ainda mais para o surgimento de dúvidas, contestações e desespero daqueles que se vêem obrigados a implementar as alterações em seus softwares, sem nem mesmo ter certeza de como faze-lo, estando há menos de 10 dias para a entrada em vigor das obrigações!

Isso só comprova o CIRCO instaurado no país, em todos os seus níveis e camadas! A legislação tributária, já infinitamente complexa, não pára de se complicar! Até mesmo o SuperSimples, que como o nome sugere, deveria ser SUPER SIMPLES, se torna cada vez MENOS SIMPLES. Me espanta a passividade dos contadores – classe que deveria estar brigando (juntamente com o empresariado) pela simplificação da legislação tributária, na tentativa de traze-la à um mínimo de racionalidade!

Feito o desabafo, vamos ao motivo real desse post, que é o de ajudar os colegas programadores que ainda estejam com dúvidas no preenchimento dos novos campos do XML. Para tanto, estou disponibilizando uma planilha Excel com um exemplo, seguindo meu atual entendimento de como deve ser feito. Observe que esse entendimento pode não ser o correto, portanto, use a planilha por sua conta e risco, e fique a vontade para comentar caso ache alguma inconsistência. Aconselho validar com seu contador a fórmula de cálculo que adotar (torcendo para que ele esteja bem informado/atualizado sobre o assunto).

Feliz Natal, e boa sorte!

  • Atualização 30/12/2015: Ler esse post.
  • Atualização 04/01/2016: Planilha atualizada (1.01) conforme v 1.60 da NT 2015.003

Planilha Preenchimento XML ICMS

Baixe um eBook gratuito, todo dia!

A Packt Publishing é uma editora de livros técnicos, com diversos títulos disponíveis, passando por programação para Android, PHP, Arduino, HTML, CSS, Java, Javascript, etc.

O interessante é que ela libera um título gratuitamente, todos os dias! Para baixar o eBook, basta se cadastrar no site, e entrar diariamente neste link para ver qual título está disponível e, se interessar, baixa-lo imediatamente, DE GRAÇA!

Fica a dica!

1 2 3 29