Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

ST – Dar de Alta el Precio desde una solapa del producto


usr_v_stmplp.jpg

La idea es no necesitar tener que entrar a las listas de precios para dar de alta el correspondiente a un producto dado, sino hacerlo desde una solapa del abm.

La forma de hacerlo es crear una tabla hija de STMPDH y luego borrarla y reemplazarla por una vista que traiga los registros STTPRE asociados al productos.

Los campos claves de STTPRE son STTPRE_TIPPRO.
STTPRE_ARTCOD ,STTPRE_CODLIS,STTPRE_FECLIS; campos análogos formaran la clave de la tabla hija ( Tippro y artcod heredados de STMPDH y se agregan Codlis y Feclis, más el atributo precio ).

Luego, con los triggers INSTEAD OF se reemplazan las sentencias de insercion, actualizacion por un store procedure que actualiza STTPRE. En el caso del borrado, opté por no hacer nada ( en ese caso hay que hacerlo desde la lista de precio )

1. Crear una tabla hija de STMPDH con el STDICCIO llamada USR_V_STMPLP

usr_v_stmplp-stdiccio.jpg

2. Borrar la Tabla y Crear la vista en su lugar



CREATE VIEW USR_V_STMPLP
AS
SELECT 
STTPRE_TIPPRO           USR_V_STMPLP_TIPPRO,
STTPRE_ARTCOD         USR_V_STMPLP_ARTCOD,
STTPRE_CODLIS        USR_V_STMPLP_CODLIS,
STTPRE_FECLIS       USR_V_STMPLP_FECLIS,
STTPRE_PRECIO        USR_V_STMPLP_PRECIO,
'USR_V_STMP'		USR_V__OALIAS	,
'12345678911234'	USR_V__USERID ,
'A'				USR_V__ULTOPR ,
GETDATE()		USR_V__FECALT,
GETDATE()		USR_V__FECMOD,
'N'			USR_V__DEBAJA

FROM STTPRE

3. Crear el sp Usr_Sp_USR_STTPRE_InsertUpdate , que va a ser disparado por un trigger INSTEAD OF INSERT,UPDATE de la vista recién creada

-- =============================================-- Author:		Carlos L. Pedranti

-- Create date: 06/02/2008

-- Description:	Actualiza o Inserta Lista de Precios

-- =============================================

CREATE PROCEDURE Usr_Sp_USR_STTPRE_InsertUpdate

-- Add the parameters for the stored procedure here

@CODLIS CHAR(10),

@TIPPRO CHAR(6) ,

@ARTCOD VARCHAR(30),

@FECLIS DATETIME,

@PRECIO NUMERIC(20,6),

@USERID VARCHAR(15)

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for procedure here

DECLARE @EXISTE INTEGER

SELECT @EXISTE = COUNT(1)

FROM STTPRE

WHERE

STTPRE_CODLIS = @CODLIS

AND STTPRE_TIPPRO = @TIPPRO

AND STTPRE_ARTCOD = @ARTCOD

AND STTPRE_FECLIS = @FECLIS

IF @EXISTE > 0

UPDATE STTPRE

SET STTPRE_PRECIO = @PRECIO,

STTPRE_FECMOD = GETDATE(),

STTPRE_USERID = @USERID

WHERE

STTPRE_CODLIS = @CODLIS

AND STTPRE_TIPPRO = @TIPPRO

AND STTPRE_ARTCOD = @ARTCOD

AND STTPRE_FECLIS = @FECLIS

ELSE

INSERT INTO STTPRE

( STTPRE_CODLIS,

STTPRE_TIPPRO,

STTPRE_ARTCOD,

STTPRE_FECLIS,

STTPRE_PRECIO,

STTPRE_PRMIPR,

STTPRE_PRMXPR,

STTPRE_FECALT,

STTPRE_FECMOD,

STTPRE_USERID,

STTPRE_ULTOPR,

STTPRE_DEBAJA,

STTPRE_OALIAS

)

SELECT @CODLIS,

@TIPPRO	STTPRE_CODLIS,

@ARTCOD	STTPRE_TIPPRO,

@FECLIS	STTPRE_FECLIS,

@PRECIO	STTPRE_PRECIO,

0	STTPRE_PRMIPR,

0	STTPRE_PRMXPR,

GETDATE()	STTPRE_FECALT,

GETDATE()	STTPRE_FECMOD,

@USERID	STTPRE_USERID,

'A'	STTPRE_ULTOPR,

'N'	STTPRE_DEBAJA,

'STTPRE' STTPRE_OALIAS

END

4. Dar de Alta los triggers INSTEAD OF de la vista



CREATE TRIGGER IO_Trig_INS_USR_V_STMPLP ON USR_V_STMPLP

INSTEAD OF UPDATE,INSERT

AS

BEGIN

SET NOCOUNT ON	DECLARE

@u_codlis char(10),

 @u_tippro char(6),

 @u_artcod varchar(30),

 @u_feclis datetime,

 @u_precio numeric(20,6)

DECLARE CUR_USR_V_STMPLP_UPD CURSOR FOR

  SELECT INSERTED.USR_V_STMPLP_TIPPRO,

 		INSERTED.USR_V_STMPLP_ARTCOD,

 		INSERTED.USR_V_STMPLP_CODLIS,

 		INSERTED.USR_V_STMPLP_FECLIS,

 		INSERTED.USR_V_STMPLP_PRECIO

FROM INSERTED

OPEN CUR_USR_V_STMPLP_UPD

FETCH NEXT from CUR_USR_V_STMPLP_UPD into

 	@u_tippro,

 	@u_artcod,

 	@u_codlis,

 	@u_feclis,

 	@u_precio

WHILE (@@FETCH_STATUS <> -1 )

 	BEGIN

 		EXEC Usr_Sp_USR_STTPRE_InsertUpdate  @u_codlis,@u_tippro,

 			@u_artcod,@u_feclis,@u_precio,'TRIGGER_UPD'

FETCH NEXT from CUR_USR_V_STMPLP_UPD into

 	@u_tippro,

 	@u_artcod,

 	@u_codlis,

 	@u_feclis,

 	@u_precio

END

CLOSE CUR_USR_V_STMPLP_UPD

 DEALLOCATE CUR_USR_V_STMPLP_UPD

END

CREATE TRIGGER IO_Trig_DEL_USR_V_STMPLP ON USR_V_STMPLP

INSTEAD OF DELETE

AS

BEGIN

SET NOCOUNT ON

END

febrero 7, 2008 - Posted by | 1. SotLand Logic, 1.1 Stdiccio, 1.7 ST - Stock, Cwa Logic

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: