[firebase-br] Fw: Transações x NF - ItensNF x Produto x Ficha Estoque

Rodrigo dominio em engeplus.com.br
Sex Set 4 22:03:43 -03 2009


Boa noite.

Procuro fazer por etapas.

Na primeira etapa, ao abrir a nota Inicio a transação, Na Tabela NotaFiscal 
crio o cabeçalho da Nf - Nome Endereço valortotalnf etc. Depois de Gravado a 
Tabela NotaFiscal
Insere-se todos os itens desta nota com seus respectivos valores.
Fecha a transação.

Segunda Etapa. Abre a tela de Nota Fiscal. Cliente verifica se ta tudo ok, 
insere ou altera alguns dados como transportadora, dados adicionais etc.
Clica no botao Imprimir ou Guardar sem Imprimir
Inicia Transaçao, Grava os Novos dados Alterados, atualiza o estoque , Fecha 
a transação.

Claro que da bem mais trabalho, mas carrega todos os dados em Edits em vez 
de DBEdits.

Assim a transação é aberta e fechada em questao de segundos. Mas mesmo assim 
ainda corre um minusculo risco de dois clientes alterar o mesmo produto
no mesmo momento em maquinas da rede. Entao tem que estudar um pouco sobre 
transações Otimistas ou Pessimistas. Eu optei pela pessimista onde se 
ocorrer conflito
ele alerta o cliente e  mudando a mensagem em Ingles do banco de dados para 
'Outro usuario esta tentando alterar o mesmo registro. Clique no botão 
tentar novamente para repetir a operação'.
O cliente clica e o processo inicia desde o começo da transação novamente. 
Tambem deu um pouco de trabalho para fazer isso mas valeu a pena.

Atenciosamente,
Rodrigo


----- Original Message ----- 
From: "Valdemir (gmail)" <valdemirjs em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, September 04, 2009 9:07 PM
Subject: Re: [firebase-br]Fw: Transações x NF - ItensNF x Produto x Ficha 
Estoque


Então no seu form de digitação de NF... vc tem os campos tudo Edit, e não
DBEdit

--------------------------------------------------
From: "Osmar Aparecido Bento Junior" <osmar.bento em ig.com.br>
Sent: Friday, September 04, 2009 1:13 PM
To: "FireBase" <lista em firebase.com.br>
Subject: Re: [firebase-br]Fw: Transações x NF - ItensNF x Produto x Ficha
Estoque

> Cara, nunca usei CDS....utilizo IBQuery, da aba interbase, mandando 
> comandos
> SQL direto...
>
> 2009/9/4 Valdemir (gmail) <valdemirjs em gmail.com>
>
>> então pelo que eu entendi o correto seria trabalhar com CDS localmente
>> dando applyuptates no final ?
>>
>> vcs usam cds ou outro compomente para isso ?
>>
>> --------------------------------------------------
>> From: "Osmar Aparecido Bento Junior" <osmar.bento em ig.com.br>
>> Sent: Friday, September 04, 2009 9:44 AM
>> To: "FireBase" <lista em firebase.com.br>
>> Subject: Re: [firebase-br]Fw: Transações x NF - ItensNF x Produto x Ficha
>> Estoque
>>
>>  Na verdade o modelo ideal de trabalho é o que o rodrigo definiu...
>>>
>>> Via programação voce deve se preocupar apenas em gravar o cabeçalho da
>>> nota
>>> e os itens. Ao gravar o item, dispara uma ou várias triggers que irão
>>> fazer
>>> a atualização do estoque, financeiro, etc....iniciando a transação 
>>> quando
>>> for gravar o cabeçalho da nota e finalizando apos o ultimo item.
>>> Na trigger dos itens, voce pode colocar algum Check que pararia todo o
>>> processo caso o tivesse algum problema...
>>>
>>> 2009/9/4 Rodrigo <dominio em engeplus.com.br>
>>>
>>>  Bom dia Valdenir.
>>>>
>>>> O ideal é vc manter a transação aberta o menos tempo possivel.
>>>>
>>>> No meu caso preferi fazer o seguinte. Carregar todos os dados da NF no
>>>> Form
>>>> NF. Entao quando o cliente toma a decisão
>>>> do que fazer com a nota, Imprimir ou Guardar como Nao impressa por
>>>> exemplo,
>>>> no botao que ela escolher eu inicio a transação,
>>>> atualiza os dados e da um commit ou rollback em caso de erro. Dessa 
>>>> forma
>>>> o
>>>> tempo que a transação fica aberta é minimo. Para atualizar o estoque 
>>>> uso
>>>> uma
>>>> trigger tb. Da mais trabalho mas acho que é a melhor forma.
>>>>
>>>> Rodrigo
>>>>
>>>>
>>>> ----- Original Message ----- From: "Valdemir (gmail)" <
>>>> valdemirjs em gmail.com>
>>>> To: <lista em firebase.com.br>
>>>> Sent: Friday, September 04, 2009 8:12 AM
>>>> Subject: [firebase-br] Fw: Transações x NF - ItensNF x Produto x Ficha
>>>> Estoque
>>>>
>>>>
>>>> Correção, este erro da ao vender em duas maquinas diferentes o mesmo
>>>> produto
>>>> Ex..
>>>> maquina 1
>>>> inicio a transação
>>>> incluo a nf
>>>> incluo o produto 1  ... ainda não terminei de lanaçar a nota e a 
>>>> maquina
>>>> 2
>>>> abre uma nova nota, e inclui o mesmo produto na maquina 2 da erro de
>>>> conflito
>>>> ..........................................
>>>> ao eu usar commitretaining ao gravar o item, o erro desaparece... mas 
>>>> se
>>>> eu
>>>> cancelar a operação na maquina 1 com o rollback a nota é cancelada, os
>>>> itens
>>>> tb, mas a atualização que a trigger de inclusão que o item fez na 
>>>> tabela
>>>> de
>>>> produtos não é descartada e ai o estoque fica errado
>>>>
>>>> From: Valdemir (gmail)
>>>> Sent: Thursday, September 03, 2009 10:34 PM
>>>> To: lista em firebase.com.br
>>>> Subject: Transações x NF - ItensNF x Produto x Ficha Estoque
>>>>
>>>>
>>>> Pessoal tenho a seguinte estrutura no banco
>>>>
>>>> Produtos
>>>> Codigo
>>>> Nome
>>>> QTde
>>>>
>>>> NF (cabecalho da nota)
>>>> NF-Itens (itens da nota)
>>>>
>>>> Ficha Estoque (toda movimentação de produtos vem aqui e atualiza a 
>>>> qtde)
>>>> na
>>>> tabela de produtos
>>>> ...
>>>> ao incluir um item de NF... por trigger incluo um registro na ficha de
>>>> estoque.... e na trigger da ficha de estoque altero o saldo do produto 
>>>> no
>>>> cadastro do produto
>>>> ....
>>>>
>>>> ao lançar a NF inicio a transação desligado o auto comit, configurada
>>>> como
>>>> read comited
>>>>
>>>> incluo qtos itens desejar
>>>>
>>>>
>>>> no final dou comit, ou rolback
>>>> ...
>>>> funciona 100% desde que seja em apenas uma maquina ...
>>>>
>>>> esta dando erro de conflito se eu na maquina 1, vender o produto 1, e 
>>>> na
>>>> maquina 2 alterar o produto 2, ao mandar gravar o produto 2 da erro de
>>>> conflito, isso pq a transação da nota ainda esta aberta
>>>> ...
>>>> pensei se eu dar comit ao incluir um item a nf ainda não fechou e pode
>>>> ser
>>>> que ainda não grave por causa de alguma validação
>>>> ...
>>>> outro detalhe é que eu posso dar um rollback no final e tudo volta como
>>>> era
>>>> antes, se eu der comit no meio de tudo, vai dar um trampo danado sair
>>>> cancelando tudo ... isso pensando que se esta incluindo pq se estiver
>>>> alterando... voltar a nota como estava antes vai ser pior ainda
>>>> .........
>>>> .
>>>> este tipo de situação acho que é comum acontecer pq já vi varios 
>>>> sistemas
>>>> com esta mesma estrutura, li algumas coisas sobre o commitretaining, 
>>>> mas
>>>> não
>>>> sei se ele se encaixaria neste caso
>>>> ...
>>>> eu tenho até a revista do cantu edição 42 mas mesmo assim não achei uma
>>>> solução ou melhor "não enxerguei", pois acho que ela existe sim
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>> __________ NOD32 4394 (20090904) Information __________
>>>>
>>>> This message was checked by NOD32 antivirus system.
>>>> http://www.eset.com
>>>>
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>>  ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

__________ NOD32 4397 (20090905) Information __________

This message was checked by NOD32 antivirus system.
http://www.eset.com






Mais detalhes sobre a lista de discussão lista