Procedure

Hola, tengo 2 tablas una llamada ventas con los campos código y cantidad y otra llamada productos con los campos cod_por
Y stock, necesito creer una sp que cada vez que ingrese una venta me descuente el stock del producto cod_pro = código
Gracias, estoy en linea

1 Respuesta

Respuesta
1
¿Las ventas entran con un sistema de PB?
Si es así: ¿No podes hacer una función que realice esta operación cada vez que vendés?
Podes tener una fx y la llamás cuando guardaste una venta.
Si tenés que usar un procedimiento almacenado podes crearlo y llamarlo desde PB o bien colocarlo dentro del procedure que asienta la venta. O también dispararlo con un trigger de update de cantidad en ventas.
Necesito código ejemplo please
Disculpa la demora pero fue una semana complicada y no tenia este código a mano.
Lo que te mando es un ej de como usar un procedimiento en PB.
El procedimiento codificalo en el lenguaje del motor que estas trabajando, hacelo que reciba el código y la cantidad, y que haga el update. Después que te devuelva si hubo algún error.
El ej de hacer la función no tiene sentido ya que es simplemente hacer las cosas con Update de SQL embebido.
DECLARE personas PROCEDURE FOR personas_uid(:ls_cuit00,:li_cuit01,:ll_cuit02,:li_cuit03,&
:ll_id_cod_doc,:ll_numero,:ls_apellido,:ls_nombre,:apellido_materno,:ls_carac_telefono,:ll_numero_telefono, &
:ll_cod_calle_leg,:ls_nom_calle_leg,:ll_numero_calle_leg,:ls_letra_parcela_leg,:ls_letra_numero_leg,&
li_piso_leg,:li_depto_leg,:ls_mono_leg,:ls_obs_leg,:ll_cod_postal_leg,:ll_sub_postal_leg,
null,:ll_id_pais_dec,null,:ll_id_profesion,:ls_sexo,:ld_fecha_nac,:ld_fecha_deceso,:ll_id_estado_civil,&
:ll_id_pais_nacionalidad,:li_tipo_op) USING ae_transaccion;
IF ae_transaccion.SQlCode <> 0 THEN
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Declare personas_uid")
CLOSE personas;
return -1
END IF
EXECUTE personas;
IF ae_transaccion.SQlCode <> 0 THEN //execute personas;
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Execute personas_uid")
CLOSE personas;
return -1
ELSE//execute personas;
FETCH personas INTO :ll_resultado;
IF ae_transaccion.SqlCode <> 0 THEN //fetch
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Fetch personas_uid")
CLOSE personas;
return -1
ELSE //fetch
//OK
commit;
END IF
END IF

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas