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

Valdemir (gmail) valdemirjs em gmail.com
Sáb Set 5 08:25:47 -03 2009


obrigado rodrigo.. vou ter que estudar a mudança que irei fazer


--------------------------------------------------
From: "Rodrigo" <dominio em engeplus.com.br>
Sent: Friday, September 04, 2009 10:03 PM
To: "FireBase" <lista em firebase.com.br>
Subject: Re: [firebase-br]Fw: Transações x NF - ItensNF x Produto x Ficha 
Estoque

> 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
>
>
>
> ______________________________________________
> 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