Procedimientos almacenados

tema enviado por lexadj en SQL
tema iniciado el 19/07/2010
Hola amigos, requiero de su ayuda para resolver el siguiente caso; tengo un SP que guarda el historial de ventas de un punto de venta obvio, genera un kardex de los movimientos realizados entre ellos las ventas y actualiza los articulos en el almacen correspondiente que hayan sido parte del movimiento en este caso una venta, el sistema trabajo estable hasta cierto punto, mi problema es que en las ventas de un dia por ejemplo hay problemas con uno o dos articulos. Al momento que el SP toma la existencia actual del almacen para guardar el historial en el kardex esta toma un valor que no se de donde toma y el valor que introduce afecta el inventario, por que hay problemas al detectar dicha falla, cual puede ser el problema si el codigo normalmente trabaja bien y solamente falla uno o dos veces por dia o aveces pasan mas dias y se mantiene estable, aqui les dejo parte del codigo del SP espero puedan darme alguna idea saludos. --INSERTA EL ENCABEZADO DE LA VENTAS INSERT INTO FolioVentas ( vTipoOperacion,dFechaVta,vCveVendedor,vCveMensajero, mConCuantoPaga,mTotalVta,iUbicacionVta,iTipoCaja,iUsuarioId, iCveTipoPago,bFactura,vTelefonoCliente,bCorte,bPagado,bCancelado, iCveCliente,mCambio,bPagaCambio,bConfirmaCambio,vArea) VALUES(@vTipoOperacion,@dFechaVta,@vCveVendedor,@vCveMensajero, @mConCuantoPaga,@mTotalVta,@iUbicacionVta,@iTipoCaja,@idUsuarioConectado, @iCveTipoPago,@bFactura,@vTelefonoCliente,@bCorte,@bPagado,@bCancelado, @iCveCliente,@mCambio,@bPagaCambio,@bConfirmaCambio,@vArea) --GENERA FOLIO CONSECUTIVO DE VENTAS SET @vFolioVta=SCOPE_IDENTITY() --ACTUALIZA EL USUARIO QUE CAPTURO LA VENTA POR EL FOLIO GENERADO PARA ESA VENTA UPDATE Ventas_Recuperar SET vFolioVta = @vFolioVta WHERE vFolioVta = @iTipoCaja; --INSERTA KARDEX INSERT INTO Kardex(Foliodocto,Cvemovimiento,Cantidad,Existencia_ini,Existencia_fin,Icvebios,Costoprod, Idusuario,Fecha,Idalmacen) SELECT @vFolioVta,50,Ventas_Recuperar.iTotalArticulo,Almacenes.iExistencias, Almacenes.iExistencias - Ventas_Recuperar.iTotalArticulo,Ventas_Recuperar.iCveBios,Ventas_Recuperar.mPrecioCosto, @idUsuarioConectado,@dFechaVta,@iUbicacionVta FROM Almacenes INNER JOIN Ventas_Recuperar ON Almacenes.iCveAlmacen = @iUbicacionVta AND Almacenes.iCveBios = Ventas_Recuperar.iCveBios WHERE Ventas_Recuperar.vFolioVta = @vFolioVta INSERT INTO Kardex(Foliodocto,Cvemovimiento,Cantidad,Existencia_ini,Existencia_fin,Icvebios, Costoprod,Idusuario,Fecha,Idalmacen) SELECT @vFolioVta,50,Ventas_Recuperar.iTotalArticulo,0,Ventas_Recuperar.iTotalArticulo,Ventas_Recuperar.iCveBios, Ventas_Recuperar.mPrecioCosto,@idUsuarioConectado,@dFechaVta,@iUbicacionVta FROM Ventas_Recuperar WHERE vFolioVta = @vFolioVta AND Ventas_Recuperar.iCveBios NOT IN (SELECT iCveBios FROM Almacenes WHERE iCveAlmacen = @iUbicacionVta) --ACTUALIZA PRODUCTOS EN EL ALMACEN DESTINO UPDATE Almacenes SET Almacenes.iExistencias = Almacenes.iExistencias - Ventas_Recuperar.iTotalArticulo FROM Almacenes INNER JOIN Ventas_Recuperar ON iCveAlmacen = @iUbicacionVta AND Almacenes.iCveBios = Ventas_Recuperar.iCveBios WHERE Ventas_Recuperar.vFolioVta = @vFolioVta --INSERTA DETALLADO DE VENTA DESDE LA VENTA TEMPORAL INSERT INTO Ventas( vFolioVta,vCveproducto,iTotalArticulo,mPrecioBios,mPrecioCosto,iCveBios) SELECT vFolioVta,vCveProducto,iTotalArticulo,mPrecioBios,mPrecioCosto,iCveBios FROM Ventas_Recuperar WHERE vFolioVta = @vFolioVta --ELIMINAR REGISTROS TABLA TEMPORAL DE COMPRAS DELETE FROM FolioVentas_Recuperar WHERE vFolioVta = @iTipoCaja --DELETE FROM Ventas_Recuperar WHERE vFolioVta = @vFolioVta