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

Osmar Aparecido Bento Junior osmar.bento em ig.com.br
Sex Set 4 13:13:00 -03 2009


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
>



Mais detalhes sobre a lista de discussão lista