[firebase-br] Firebird IBO ou Programador com erro

Marcio Alves de Almeida net.marcio em gmail.com
Qua Maio 26 14:33:49 -03 2010


Tenho um sistema vendas rodado depois de fazer o pedido um cliente
vai ateh um caixa pagar e nesse momento
eh dado a baixa no estoque acontece essa semana em uma venda na hora
da baixa do estoque aconteceu algo estranho tenho uma tabela aparte
que guarda as movimentacoes dos produto tipo UltimoEstroque  a
quantidade de saida e Saldo depois da venda
tipo Assim
Cod   UltimoEstoque      Saida     EstoqueAtual    Hora cod_venda
1        500                       10           490          07:10:10
     255551
1        490                       10           480          07:10:15
     255555
1        480                       20           460          07:10:22
     255569


acontece que em um determinada venda 1 produto foi dar baixa ao
mesmo tempo e aconteceu isso
1        401                       1            400          09:10:01
      255571

1        400                       1            399          09:10:22
      255902
1        400                       1            399          09:10:22
      255940

ele deveria ficar assim

1        399                       1            398          09:10:22
      255940

Delphi 7 IBO 4.7.16  Firebird 2.0
alguem tem uma luz sobre isso o que eu poderia fazer para nao
acontecer isso
uma vez que no tabela produtos nao deu baixa no estoque isso nao pode
acontecer.

        If Q_Produto.RecordCount > 0 Then
        Begin
         Modulo.Q_MovSaida.Append;
         Modulo.Q_MovSaidaCod_Venda.Value        :=
Modulo.Q_VendaCod_Venda.Value;
         //*******************************************
         Modulo.Q_MovSaidaVen_NumNota.Value      :=
Modulo.Q_VendaVen_NumNota.Value;
         Modulo.Q_MovSaidaCod_Marca.Value        := Q_ItemVendaCod_Marca.Value;
         //*******************************************
         Modulo.Q_MovSaidaCod_ItemVenda.Value    :=
Q_ItemVendaCod_ItemVenda.Value;
         Modulo.Q_MovSaidaCod_Produto.Value      :=
Q_ItemVendaCod_Produto.Value;
         Modulo.Q_MovSaidaCod_Grupo.Value        :=
Q_ItemVendaItem_Cod_Grupo.Value;
         Modulo.Q_MovSaidaCod_vendedor.Value     :=
Modulo.Q_VendaCod_Funcionario.Value;
         Modulo.Q_MovSaidaCod_Caixa.Value        :=
Modulo.Q_VendaCod_Caixa_Funcionario.Value;
         Modulo.Q_MovSaidaNumeroNota.Value       :=
Modulo.Q_VendaVen_NumNota.Value;
         Modulo.Q_MovSaidaSaida_Estorno.Value    := 'Venda';
         Modulo.Q_MovSaidaData.Value             :=
Modulo.MemoriaDataServer.Value;
         Modulo.Q_MovSaidaPrecoUnit.Value        :=
Q_ItemVendaItem_VlrVenda.Value;
         Modulo.Q_MovSaidaQuantidade.Value       :=
Q_ItemVendaItem_QtddVenda.Value;
         Modulo.Q_MovSaidaHora.Value             := Now;
         Modulo.Q_MovSaidaValorTotal.Value       := Q_ItemVendaItem_Total.Value;
         Modulo.Q_MovSaidaCod_Fecha_Nota.Value   :=
Modulo.Q_Fecha_NotaCod_Fecha_Nota.Value;
         Modulo.Q_MovSaidaEstoqueAnterior.Value  :=
Q_ProdutoPro_Quantidade.Value;
         Modulo.Q_MovSaidaEstoqueAtual.Value     :=
Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
         Modulo.Q_MovSaida.Post;

         Q_Produto.Edit;
         Q_ProdutoPro_Quantidade.Value          :=
Q_ProdutoPro_Quantidade.Value - Q_ItemVendaItem_QtddVenda.Value;
         Q_ProdutoPro_DtUltimaVenda.Value       :=
Modulo.MemoriaDataServer.Value;
         Q_Produto.Post;
        end;




Mais detalhes sobre a lista de discussão lista