quinta-feira, março 20, 2008

 

Mensagens obscuras - User Abort

No dia a dia da programação, muitas vezes nos deparamos com mensagens de erro que, se por um lado não nos informam o que está ocorrendo, por outro nos ajudam a ficar mais confusos do que já somos.

Uma destas mensagens ocorreu conosco aqui na empresa um dia desses. A mensagem é "User Abort" quando tentávamos gravar os dados de uma determinada tabela em um banco de dados Firebird (1.5) acessado através de uma TIBQuery ligada a um TIBUpdateSQL. Para quem não conhece, o TIBUpdateSQL é um componente utilizado para "transformar" uma query normal em uma tabela, dando a esta funcionalidades do tipo Append/Insert, Edit, Delete etc. O TIBUpdateSQL permite a criação de querys de Insert, Edit e Delete, facilitando bastante o trabalho com bancos de dados SQL (Existe um componente que une esta funcionalidade, chamado IBDataSet que, na minha opinião é bem superior ao conjunto TIBQuery + TIBUpdateSQL).

Como falei acima, o erro ocorria sempre que tentávamos gravar um registro. Um simples Edit seguido por um ApplyUpdates levantava a excessão. Depois de muito sofrimento, encontramos o causador da nossa dor de cabeça: Na SQL original do IBQuery, havia um join com outras tabelas. O problema é que estes campos estvam sendo atualizados no IBUpdateSQL. A dica, então fica a seguir:

Sempre que precisar utilizar um IBUpdateSQL, certifique-se de que os campos que serão atualizados não incluam campos vindos de outras tabelas. Se você estiver utilizando o TIBDataSet a mensagem retornada é bem mais explícita.

sexta-feira, março 14, 2008

 

Non-blob column in table required to perform operation

Depois de quase um ano, estou de volta para começar a escrever uma espécie de "diário" do que vem acontecendo comigo no meu dia-a-dia como desenvolvedor.

Hoje perdi aproximadamente umas duas horas tentando resolver um problema que, do nada, passou a acontecer em nosso sistema de frente de loja. Como o sistema é mantido por várias pessoas, nem sempre sabemos com exatidão tudo o que foi modificado, e um erro desses pode tirar a paciência de um cristão (tirou a minha...)

Bom... O sistema ainda utiliza o BDE em seus acessos aos dados no banco de dados Firebird e, de alguns dias para cá, passou a dar um erro no momento em que incluíamos um ítem do cupom de venda, com a mensagem "non-blob column in table required to perform operation". Este erro passou a acontecer da noite para o dia e não foi feita nenhuma modificação nos fontes que justificasse este acontecimento. Resolví então tentar o banco de dados. Peguei um banco de dados antigo e fiz os testes. Nenhum erro. Rodei um comparador de bases de dados e deixei a base antiga com a mesma estrutura do banco atualizado. Erro!

Após uma longa caminhada, atualizando o banco parte por parte, descobri onde estava o problema: um campo foi criado com a cláusula Default preenchida. Um simples campo flag, Varchar(1), com um default para 'N'. Não sei por que, o BDE estranhou o novo campo e simplesmente não permitia gravar nada na tabela. Após retirar o 'N', problema resolvido.

Espero que esta postagem possa lhe ajudar (isso se não ajudar a mim mesmo, vai que algum dia eu me esqueça...)

segunda-feira, maio 22, 2006

 

Passos para a Homologação do TEF

Apesar de muito se falar em TEF, o "caminho das pedras" até a homologação as vezes parece um pouco "escondido". Este artigo tem como objetivo dar algumas dicas básicas sobre o processo de homologação.

O primeiro passo para se obter a homologação é desenvolver um aplicativo que seja capaz de se comunicar com uma impressora fiscal, pois é nesta que serão impressos os cupons de venda (os "cupons fiscais") e os comprovantes dos pagamentos efetuados com cartão de crédito. Este aplicativo deve ser capaz de, no mínimo, realizar vendas, efetuar "Leitura X" e "Redução Z", além de emitir leitura da memória fiscal para uma eventual fiscalização pela qual possa passar seu cliente. Também é interessante desenvolver rotinas para sangria e suprimento, que são as operações de retirada de dinheiro (antes do final do expediente) e de lançamento do fundo de caixa (utilizado para troco). Para efeito de homologação no TEF, não são verificadas questões como baixa de estoque ou fechamento de caixa através do sistema, mas é importante que o seu sistema também tenha estas funções, a fim de evitar futuros problemas.

Tendo a base do sistema desenvolvido, é hora de entrar em contato com as homologadoras e solicitar o material de desenvolvimento. Este material consiste nos softwares utilizados para efetuar a simulação das vendas com cartão de crédito, bem como dos manuais e roteiros realizados nos testes da homologação.

Para a homologação no TEF Discado, basta entrar no site http://www.softwareexpress.com.br/, se cadastrar e baixar os arquivos disponíveis. Não existe a necessidade de nenhum registro além deste, e nem é cobrada nenhuma taxa referente à homologação. Já no TEF Dedicado, é necessário efetuar um contrato com a Software Express e efetuar um pagamento um pouco salgado (girando em torno de R$ 1.200,00). Após a assinatura do contrato, a Software Express envia, via e-mail, os simuladores do TEF Dedicado além dos manuais e roteiros necessário para o desenvolvimento.

Para o desenvolvimento e testes, você vai precisar de uma impressora fiscal (que pode estar em modo de treinamento) e de um pinpad compatível com o TEF. O Pinpad é o periférico responsável pela leitura do cartão de crédito e é imprescindível tanto nos testes quanto na homologação em si. As marcas de pinpad que trabalhei são Verifone, Dione e Gertec.

O roteiro de testes é um tanto extenso, e normalmente é modificado de tempos em tempos. Cada teste precisa ser feito com cuidado, pois falhas não são perdoadas na homologação. Também é importante certificar-se que a versão do roteiro que você possui está em dia, para evitar ser pegue de surpresa por um teste recém-adicionado. Sugiro que seja separado um tempo específico para desenvolvimento e testes das rotinas do TEF. Muitos programadores "levam pau" porque acham que conseguirão homologar com as rotinas do TEF "quase" certas e deixam passar pequenos detalhes que fazem diferença na hora da homologação. Uma outra coisa importantíssima é que a pessoa desingada para ir à homologação seja o desenvolvedor da aplicação, pois normalmente existem ajustes de última hora que exigem que o programador conheça bem os fontes.

Estando seguro que todas as rotinas estão desenvolvidas e que você está conseguindo executar corretamente todos os testes, é necessário entrar em contato com a SoftwareExpress para solicitar a pré-homologação, que consiste em enviar, através do correio, cupons impressos de cada teste para avaliação. Passando nesta fase, será agendada a homologação, que dura no mínimo dois dias e é realizada exclusivamente em São Paulo.

Homologar o TEF requer do programador uma dedicação especial. Realizar todos os testes várias vezes, verificar as possíveis falhas que podem ocorrer, testando todas as situações possíveis é muito importante. Se possível, reserve tempos específicos para o desenvolvimento e testes do TEF, não deixando outras coisas tirar sua concentração. Também é importante entrar em contato com outros programadores que já homologaram para trocar algumas idéias e, sempre que sentir dificuldade, entrar em contato com o suporte técnico da Software Express ou da Seven PDV. É melhor parecer chato e tirar todas suas dúvidas do que ser o cara "que não incomoda" e ter que voltar a São Paulo outro dia para realizar a homologação.

Espero que este "caminho das pedras" seja um bom ponto de partida para você. Boa sorte!

Aurimenes Apolônio
http://aurimenes.blogspot.com/

Consulte também:
http://www.softwareexpress.com.br
http://www.sevenpdv.com.br
http://br.groups.yahoo.com/group/AutomacaoTotal/ - Grupo de desenvolvedores em Automação

domingo, maio 21, 2006

 

O que é TEF?

TEF é uma sigla de Transferência Eletrônica de Fundos, e consiste no conjunto de ações necessárias para executar um pagamento por meios eletrônicos, incluindo aí a Internet e vendas com cartões de crédito em estabelecimentos comerciais.

No meio da Automação Comercial, TEF tem um significado mais voltado ao programa frente de loja que possui a capacidade de processar pagamentos por cartão de crédito, tendo sido homologado junto às administradoras de cartão de crédito através de empresas especialmente contratadas para este fim. As principais empresas que realizam este tipo de homologação são a Software Express (http://www.softwareexpress.com.br/) e a Seven PDV (http://www.sevenpdv.com.br/).

Existem dois tipos principais de TEF no mercado hoje em dia: O TEF Discado e o TEF Dedicado. O TEF Discado utiliza uma conexão telefônica para efetuar as transações com cartão de crédito e débito. Já o TEF Dedicado, utiliza uma conexão X25 permanente, através de uma linha dedicada e possui uma velocidade de transação bem maior que o TEF Discado. Uma nova modalidade de TEF, o chamado TEF via IP está sendo desenvolvida, e permite a utilização de uma conexão de Internet comum para a comunicação com as operadoras de cartão de crédito.

Apesar de a velocidade de transação do TEF Dedicado ser muito maior que a mesma transação no TEF Discado, a versão dedicada é muito menos usada devido ao alto custo do aluguel de uma linha dedicada, e é utilizado quase que exclusivamente por empresas que possuem um alto fluxo de movimentação, como as grandes redes de supermercados, lojas diversas e grandes postos de combustíveis. As pequenas empresas encontram no TEF Discado uma solução a um custo bem mais baixo, embora peque no quesito velocidade. Com a chegada do TEF via IP, a tendência é que o TEF Discado passe a ser deixado de lado, já que a nova modalidade tem uma velocidade comparável à do TEF Dedicado.

segunda-feira, maio 15, 2006

 

Bem-Vindos!

Sejam bem-vindos ao Blog do Desenvolvedor.

Aqui discutiremos sobre vários assuntos relativos à programação em geral, incluindo Automação Comercial, TEF, ECF, Bancos de Dados e outros.

Espero que este blog possa lhe ser útil, e conto com sua ajuda, dando opinião, dicas e enviando sua contribuição.

Um grande abraço!

Aurimenes

This page is powered by Blogger. Isn't yours?

Assinar Postagens [Atom]