generar un kardex

3
Generar un kardex del producto con codigo1, este kardex debera mostrar los movimientos de los tres primeros trimestres del año 2006 como resultado final proyecte la siguiente informacion: 'factura' , 'fecha_mov' , 'cod_prod', 'des_prod', 'sald_inicial', 'cantidad', 'tipo_movimiento', 'saldo' nota1 : recordar qyue segun el mov q realice el producto, se debera ir mostrando el saldo q va quedando en bodega. nota 2: para la solucion de este problemase asume q el saldo inicial de este producto ante del año 2006 era de 10 unidades en de existencia en bodega nota 3: utilice una tabla que actue como temporal ('kardex_temp') para insertar los datos finales IF EXISTS (SELECT name FROM sysobjects WHERE name = 'kardex_TEMP' and type='U') drop table kardex_TEMP create table kardex_TEMP ( IDmov INT, fecmov smalldatetime, idprod int, desprod char (40), cantiniaño int, cantidad int, tipmov char(3), Saldo int ) DECLARE @SALDO_INICIAL INT SET @SALDO_INICIAL = 10 DECLARE @AUX_SALDO INT SET @AUX_SALDO = @SALDO_INICIAL SET DATEFORMAT YMD --Declaramos el cursor e indicamos con que datos va a trabajar el mismo DECLARE kardex_cursor CURSOR SCROLL FOR SELECT cab_mov.idmov as 'FACTURA', cab_mov.fecmov AS 'FECHA_MOVIMIENTO', producto.idprod AS 'CODIGO_PROD', producto.desprod AS 'DESCRIPCION_PROD', producto.cantiniaño AS 'SALDO INICIAL', det_mov.cantidad AS CANTIDAD_PROD, cab_mov.tipmov AS 'TIPO_MOV',

Upload: jeins-menendez-falcones

Post on 18-Apr-2015

42 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Generar Un Kardex

Generar un kardex del producto con codigo1, este kardex debera mostrar los movimientos de los tres primeros trimestres del año 2006 como resultado final proyecte la siguiente informacion: 'factura' , 'fecha_mov' , 'cod_prod', 'des_prod', 'sald_inicial', 'cantidad', 'tipo_movimiento', 'saldo'nota1 : recordar qyue segun el mov q realice el producto, se debera ir mostrando el saldo q va quedando en bodega.nota 2: para la solucion de este problemase asume q el saldo inicial de este producto ante del año 2006 era de 10 unidades en de existencia en bodeganota 3: utilice una tabla que actue como temporal ('kardex_temp') para insertar los datos finales

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'kardex_TEMP' and type='U')

drop table kardex_TEMP

create table kardex_TEMP(

IDmov INT,fecmov smalldatetime,idprod int,desprod char (40),cantiniaño int,cantidad int,tipmov char(3),Saldo int

) DECLARE @SALDO_INICIAL INT SET @SALDO_INICIAL = 10 DECLARE @AUX_SALDO INT SET @AUX_SALDO = @SALDO_INICIAL SET DATEFORMAT YMD

--Declaramos el cursor e indicamos con que datos va a trabajar el mismo

DECLARE kardex_cursor CURSOR SCROLL FOR

SELECT cab_mov.idmov as 'FACTURA',cab_mov.fecmov AS 'FECHA_MOVIMIENTO',producto.idprod AS 'CODIGO_PROD',producto.desprod AS 'DESCRIPCION_PROD',producto.cantiniaño AS 'SALDO INICIAL',det_mov.cantidad AS CANTIDAD_PROD, cab_mov.tipmov AS 'TIPO_MOV',0 saldoFROM cab_mov inner join det_mov on cab_mov.idmov = det_mov.idmov

inner join producto on (det_mov.idprod = producto.idprod ) WHERE producto.idprod=1 and fecmov between '2006/01/01' AND '2006/09/30' --Abrimos el cursorOPEN kardex_cursor

--Declaramos un conjunto de variables que van actuar como la estructura del cursor

declare @idmov int, @fecmov smalldatetime, @IDPRODC int, @DESPROD char(40), @cantiniaño int, @cantidad int, @tipo char(3), @saldo int

Page 2: Generar Un Kardex

--Armamos la estructura del cursor (usamos las variables definidas) y la vez se asignan los datos al cursor (estos datos se cargaron o se tomaron cuando se declaro el cursor DECLARE CURSOR)

FETCH NEXT FROM kardex_cursor INTO @idmov, @fecmov , @IDPRODC, @DESPROD , @cantiniaño , @cantidad , @tipo , @saldo

-- Blucle para recorrer el cursor nota.- recorre el cursor mientras no llegue al ultimo registro

WHILE @@FETCH_STATUS = 0 BEGIN

--Vamos mostrando el contenido del cursor select @IDPRODC, @DESPROD, @pvpprod) INSERTAMOS LA INFORMACION DEL CURSOR EN LA TABLA TEMPORAL

SET @SALDO_INICIAL =(CASE WHEN @tipo = 'COM' THEN @SALDO_INICIAL + @cantidad WHEN @tipo = 'VTA' THEN @SALDO_INICIAL - @cantidad WHEN @tipo = 'DCO' THEN @SALDO_INICIAL - @cantidad WHEN @tipo = 'DVT' THEN @SALDO_INICIAL + @cantidad END)

INSERT INTO kardex_TEMP (IDmov ,fecmov , idprod ,desprod ,cantiniaño ,cantidad ,tipmov ,Saldo) VALUES(@idmov, @fecmov , @IDPRODC, @DESPROD , @cantiniaño , @cantidad , @tipo , @SALDO_INICIAL ) -- Avanzamos al siguiente registro del cursor FETCH NEXT FROM kardex_cursor INTO @idmov, @fecmov , @IDPRODC, @DESPROD , @cantiniaño , @cantidad , @tipo , @SALDO

END

--MOSTRAMOS LA INFORMACION DE LA TABLA TEMPORALSELECT idmov as 'FACTURA',

fecmov AS 'FECHA_MOVIMIENTO',idprod AS 'CODIGO_PROD',desprod AS 'DESCRIPCION_PROD',cantiniaño AS 'SALDO INICIAL',cantidad AS CANTIDAD_PROD, tipmov AS 'TIPO_MOV',saldo AS SALDO

FROM kardex_TEMP

--Mostramos el @@FETCH_STATUS, en este caso devuelve -1 (indica que recorrimos todo el cursor)

select @@FETCH_STATUS

--Cerramos el cursorCLOSE KARDEX_cursor

--Eliminamos el cursor de la memoriaDEALLOCATE KARDEX_cursor