PDA

Ver la Versión Completa : un trigger de actualizacion


santiago14
27-11-2004, 05:30:20
No quisiera molestar tanto pero estoy obligado....
Tengo un trigger:

CREATE TRIGGER MODIFICOPCIO_LISTA_REP FOR REPUESTOS
ACTIVE AFTER UPDATE POSITION 2
AS
declare variable dto_Caja double precision;
begin
/* en este caso la modificación es en el precio de lista */

/* pcio_Costo = pcio_Lista - Dtos_Pieza + IVAc - Dto_Caja */
/* pcio_Vta = pcio_Costo + IVAv + Gcia_Rep */

/*si se modificó el precio de lista del repuesto*/
if (new.pcio_lista <> old.pcio_lista) then
begin
/*dto_Caja es la tasa de descuento */
execute procedure recuperodtocaja(old.cod_prov)
returning_values dto_Caja;
/*actualizamos el pcio de costo*/
execute procedure actualizopcio_costo_rep(new.pcio_lista,old.dto1_rep,
old.dto2_rep,old.cod_rep,:dto_Caja);
/*actualizamos el pcio de venta*/
execute procedure actualizopcio_vta_rep(old.gcia_rep,new.pcio_costo,
old.cod_Rep);
end
end

El tema es el siguiente, en el SP actualizopcio_costo_rep hago justamente eso, y no hay problema, la cuestión es que, el precio de costo recién actualizado sirve para actualizar también el precio de vta, tal actualización se hace en actualizonpcio_vta_rep, SP que necesita entre sus parámetros de entrada el precio de costo recién actualizado, para ello le paso como parámetro new.pcio_costo suponiendo yo que el valor que pasa es el pcio_costo recientemente actualizado en el SP anterior, pero no es así, el pcio_costo que pasa es el viejo, o sea, el que estaba en la tabla de repuestos antes de que se disparara este trigger.
Necesito saber como pasar el pcio_costo recién actualizado al SP de actualización de pcio_vta, por lo visto new.pcio_costo todavía no conoce al nuevo pcio_costo que puse en el SP actualizonpcio_costo_rep.
Bueno, no se si me hice un lio, espero haber sido claro.
Gracias de antemano.

defcon1_es
29-11-2004, 12:36:59
Hola,
una solución sería que el procedimiento actualizopcio_costo_rep
devolviese el nuevo precio de costo ya calculado, ¿no?.

Puedes definirte un procedimiento nuevo que haga lo mismo que el que tienes,
pero que te devuelva el nuevo PMC.

Salu2.

santiago14
30-11-2004, 03:57:19
gracias compañero, siempre a tus ordenes.

Santiago