1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Frédéric Croisé
-- Create date: 22/06/2006
-- Description: TRIGGER à l'insertion dans t_pallet pour t_mvt
-- =============================================
ALTER TRIGGER [SCAW_t_pallet_INS]
ON [dbo].[t_pallet]
FOR INSERT
NOT FOR REPLICATION
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @user_insert AS varchar(50)
DECLARE @user_application AS char(1)
DECLARE @mvt_type AS varchar(10)
DECLARE @mvt_ok as bit
SET @mvt_type='DEF_INS'
SET @mvt_ok=0
--On récupère le nom de l'utilisateur et de l'application
SELECT @user_application = ISNULL(dbo.t_users.user_appli,'D'),
@user_insert = ISNULL(dbo.t_users.user_display,'DEFAULT')
FROM dbo.t_users INNER JOIN
dbo.t_session ON dbo.t_users.user_name = dbo.t_session.user_name
WHERE dbo.t_session.user_spid = @@spid
ORDER BY date_session;
--INVIRTUAL
--On vérifie si on met à jour le virtual à 'O'
IF UPDATE(virtual)
BEGIN
DECLARE @virtual_insert AS char(1)
SELECT @virtual_insert = UPPER(virtual)
FROM inserted;
IF @virtual_insert='O'
BEGIN
SET @mvt_type='INVIRTUAL'
SET @mvt_ok=1
END
END
--INRETURN
--On vérifie si on est dans le cas d'un retour
IF (@mvt_ok=0)
BEGIN
--On vérifie si le sscc est dans t_pallet_file
SELECT dbo.t_pallet_file.sscc
FROM inserted, dbo.t_pallet_file
WHERE (inserted.sscc = dbo.t_pallet_file.sscc)
IF @@ROWCOUNT>0
BEGIN
SET @mvt_type='INRETURN'
SET @mvt_ok=1
END
END
--INPICK
--On vérifie si on est dans le cas d'un picking
IF (@mvt_ok=0)
BEGIN
--On vérifie dans t_sscc
SELECT dbo.t_sscc.sscc
FROM dbo.t_sscc, inserted
WHERE dbo.t_sscc.sscc = inserted.sscc
IF @@ROWCOUNT>0
BEGIN
SET @mvt_type='INPICK'
SET @mvt_ok=1
END
END
--INMAN | INRECEPT | INRECAUTO
--On vérifie si on est dans le cas d'une insertion manuel
--On vérifie si on est dans le cas d'une réception
IF (@mvt_ok=0)
BEGIN
--On vérifie si le scc n'est pas dans t_recadv_lines
SELECT dbo.t_recadv_lines.sscc
FROM inserted, dbo.t_recadv_lines
WHERE (inserted.sscc = dbo.t_recadv_lines.sscc)
IF @@ROWCOUNT=0 --Le sscc n'est pas dans t_recadv_lines
BEGIN
SET @mvt_type='INMAN'
END
ELSE --Le sscc est dans t_recadv_lines
BEGIN
--On attribue le type en fonction de l'application
IF @user_application='T'
BEGIN
SET @mvt_type='INRECEPT'
END
ELSE IF @user_application='M'
BEGIN
SET @mvt_type='INRECAUTO'
END
END
END
--On insere dans t_mvt
INSERT INTO t_mvt(type_mvt, sscc, product, qty_before, qty_mvt, qty_after, user_mvt, platform, appli_mvt)
SELECT @mvt_type, sscc, dun14, dbo.FS_qty_product(dun14,platform)-qty,
qty, dbo.FS_qty_product(dun14,platform), @user_insert, platform, @user_application
FROM inserted
END |