[firebase-br] OFF - Entrada de Produtos

Valmir Cardoso valmircardoso em itj.viacabocom.com.br
Ter Mar 28 16:04:24 -03 2006


Graça e Paz a Todos!

D7+IBO+FIREBIRD 2.0

Há muito tempo venho me debatendo com uma questão
que me intriga.
Tenho num Form para cadastrar Notas de Entrada, um
PageControl com 3 abas. Uma para os dados do Cabeçalho
da Nota, outra aba para o corpo e outra para o Contas a
Pagar.

Coloco uns Tib_Edit, ligados diretamente nas Tib_Querys,
para fazer a digitação dos dados. Então na Primeira aba
tem botões INCLUIR, ALTERAR, GRAVAR,CANCELAR,
EXCLUIR e o mesmo acontece nas 2 outras abas. Cuido
apenas para que os botões das 2 outras abas não sejam
habilitados caso não haja nenhum dado já GRAVADO na
primeira aba do cabeçalho.

Neste ponto já estou perdido! Como o programa vai saber
que o operador já terminou a digitação de todos os produtos
do corpo da Nota? Talvez colocando um botão chamado
COMMITAR NOTA e outro ROLLBACK na primeira aba?
Mas deste modo não posso dar commit em cada produto
digitado e muito menos no cabeçalho, dando apenas o POST?

Bem, supomos que farei isto acima. O operador então
digitou uma Nota, GRAVOU (COMMITOU) e lembrou
que no meio dos 50 produtos digitados, informou um código
errado e assim o Estoque ficou errado, ou seja, sobrando
num produto que não entrou e faltando num que entrou.

Então, ele acessa o Sistema, LOCALIZA a tal nota, e vai
no botão ALTERAR da Aba do Corpo da Nota. Localiza
o tal produto, faz alteração do código e grava. Acontece que na primeira
vez que gravou o computador gerou um CUSTO MÉDIO
para o produto errado e assim tem que desfazer aquilo. Isto
é possível grando o CUSTO MÉDIO anterior na tabela do
corpo da Nota, pois em caso de erro, é só devolver o que
estava lá antes da entrada.

Nas vamos supor que o operador, na bobeira, após alterar
o código do produto, Clika no Excluir e exclui um produto
do corpo da Nota. Então no desespero, acha que o produto
excluído foi o código tal e reinsere este. Bem no fim, fica
na dúvida e quer abandonar aquela alterar toda, para começar
tudo novamente.

Isto é possível? É só usar post e rollback que resolve tudo?

No Clipper, eu chama o corpo a ser alterado para uma MATRIZ.
Então o operador "mexia" nos dados da matriz enquanto que
os dados previamente  gravados ficavam na tabela "quietinhos".
Assim, quando ele chekou que tudo estava certou, escolhia
GRAVAR e o Sistema apagava integralmente a ENTRADA
anterior e GRAVAVA a nova, não importando quantas alterações
foram feitas.

Alguém tem alguma idéia se o caminho é por aí mesmo?



Valmir







Mais detalhes sobre a lista de discussão lista