IVAND
31-01-2006, 00:39:53
Hola a todos
Tengo un problema en mi Sp explico el problema te
Tengo una tabla que contiene los productos que tienen relacion con un producto (unidos por key_producto) , el SP lo que deberia hacer es llamar todos los productos que tengan relacion con este codigo dar de baja el saldo e insertar en los historicos pero resulta que me barre todos los productos de mi tabla productos
El query lo pruebo desde la consola me funciona perfecto enviando el mismo parametro alguien me puede ayudar
CREATE PROCEDURE BAJAR_COMBO (
KEY_VIENE INTEGER,
KEY_CAB INTEGER,
KEY_PRODUCTO INTEGER,
CANTID NUMERIC(15,2))
AS
DECLARE VARIABLE KEY_PRODUB INTEGER;
DECLARE VARIABLE KEY_PROD INTEGER;
DECLARE VARIABLE PCOSTO NUMERIC(15,4);
DECLARE VARIABLE BAJAR_CANTIDAD NUMERIC(15,2);
DECLARE VARIABLE PRECIO_ULT NUMERIC(15,4);
DECLARE VARIABLE PRECIOA NUMERIC(15,4);
DECLARE VARIABLE PRECIOB NUMERIC(15,4);
DECLARE VARIABLE PRECIOC NUMERIC(15,4);
begin
/* Procedure Text */
FOR Select pc.key_producto,pc.key_producto_b,(pc.cantidad*:cantid) Bajar,p.pre_cos,p.precio_uing,
p.precioa,p.preciob,p.precioc
from pdet_compuesto pc, producto p
Where pc.key_producto=p.key_producto
and p.key_producto=:key_producto
INTO :KEY_PROD,:KEY_PRODUB,:BAJAR_CANTIDAD,:PCOSTO,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC do
BEGIN
Update producto set saldo_fac=saldo_fac-:Bajar_cantidad
Where key_producto=:Key_prod;
/* Se da de baja a las bodegas*/
Update producto_bodega set cantidad=cantidad-:Bajar_cantidad
Where key_producto_b=:Key_produb;
/* Se Ingresa a los Historicos */
Insert Into His_mov(key_producto_b,Key_viene,viene_de,tp_mov,key_cabeza,cod_transac,key_caja,fecha_sys,cantidad, subtotal,pre_cos,Pre_uing,PrecioA,PrecioB,Precioc,saldo)
Values(:KEY_PRODUB ,:KEY_viene,'E', -1, :KEY_CAB, 'VEN', null, 'Now', :BAJAR_CANTIDAD,1,:pcosto,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC,0);
END
suspend;
end
Tengo un problema en mi Sp explico el problema te
Tengo una tabla que contiene los productos que tienen relacion con un producto (unidos por key_producto) , el SP lo que deberia hacer es llamar todos los productos que tengan relacion con este codigo dar de baja el saldo e insertar en los historicos pero resulta que me barre todos los productos de mi tabla productos
El query lo pruebo desde la consola me funciona perfecto enviando el mismo parametro alguien me puede ayudar
CREATE PROCEDURE BAJAR_COMBO (
KEY_VIENE INTEGER,
KEY_CAB INTEGER,
KEY_PRODUCTO INTEGER,
CANTID NUMERIC(15,2))
AS
DECLARE VARIABLE KEY_PRODUB INTEGER;
DECLARE VARIABLE KEY_PROD INTEGER;
DECLARE VARIABLE PCOSTO NUMERIC(15,4);
DECLARE VARIABLE BAJAR_CANTIDAD NUMERIC(15,2);
DECLARE VARIABLE PRECIO_ULT NUMERIC(15,4);
DECLARE VARIABLE PRECIOA NUMERIC(15,4);
DECLARE VARIABLE PRECIOB NUMERIC(15,4);
DECLARE VARIABLE PRECIOC NUMERIC(15,4);
begin
/* Procedure Text */
FOR Select pc.key_producto,pc.key_producto_b,(pc.cantidad*:cantid) Bajar,p.pre_cos,p.precio_uing,
p.precioa,p.preciob,p.precioc
from pdet_compuesto pc, producto p
Where pc.key_producto=p.key_producto
and p.key_producto=:key_producto
INTO :KEY_PROD,:KEY_PRODUB,:BAJAR_CANTIDAD,:PCOSTO,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC do
BEGIN
Update producto set saldo_fac=saldo_fac-:Bajar_cantidad
Where key_producto=:Key_prod;
/* Se da de baja a las bodegas*/
Update producto_bodega set cantidad=cantidad-:Bajar_cantidad
Where key_producto_b=:Key_produb;
/* Se Ingresa a los Historicos */
Insert Into His_mov(key_producto_b,Key_viene,viene_de,tp_mov,key_cabeza,cod_transac,key_caja,fecha_sys,cantidad, subtotal,pre_cos,Pre_uing,PrecioA,PrecioB,Precioc,saldo)
Values(:KEY_PRODUB ,:KEY_viene,'E', -1, :KEY_CAB, 'VEN', null, 'Now', :BAJAR_CANTIDAD,1,:pcosto,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC,0);
END
suspend;
end