156 lines
7.1 KiB
Plaintext
156 lines
7.1 KiB
Plaintext
USE [Facial]
|
|
GO
|
|
/****** Object: Trigger [dbo].[regentradas_insert] Script Date: 4/1/2023 9:33:47 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
ALTER TRIGGER [dbo].[regentradas_insert]
|
|
ON [dbo].[CHECKINOUT]
|
|
AFTER INSERT,UPDATE
|
|
AS
|
|
BEGIN
|
|
DECLARE @emp INT,@nombre varchar(100),@htrabajadas DATETIME,@hextras_35 decimal(12,2),@hextras_100 decimal(12,2),@numnomi INT,@fecha DATETIME,@tipoReg VARCHAR(1),@tipoemp VARCHAR(1),
|
|
@h_entrada time(7),@h_salida time(7),@fechaferiada DATE,@dia int,@mes int,@chfechaferiada VARCHAR(10),
|
|
@fechaEntrada DATETIME,@departamento INT,@puesto INT,@nivel INT,
|
|
@fechaInicioPeriodo date, @fechaFinPeriodo date
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT @emp=a.num_emp,@nombre=RTRIM(a.nom1_emp)+' '+a.apell1_emp,@fecha=b.CHECKTIME,@tipoReg=b.CHECKTYPE,@tipoemp=a.nomina ,@departamento=a.departamento,@puesto=a.cod_puesto,@nivel=a.nivel_emp
|
|
from marmotech.dbo.adtb00003 a,inserted b where a.cuenta_out = b.USERID
|
|
SELECT @numnomi=MIN(a.num_nomi) FROM marmotech.dbo.notb00010 a WHERE a.fecha_cierre_nomina > @fecha and tipo_emp = @tipoemp
|
|
|
|
IF EXISTS(SELECT b.num_emp FROM marmotech.dbo.adtb00054 a,marmotech.dbo.adtb00055 b WHERE a.id_hora = b.id_horario and b.num_emp=@emp)
|
|
BEGIN
|
|
IF @tipoReg ='O'
|
|
BEGIN
|
|
SELECT @mes=month(@fecha)
|
|
SELECT @dia=day(@fecha)
|
|
|
|
/* CALCULO DIAS FERIADOS */
|
|
IF EXISTS(SELECT a.dias FROM marmotech.dbo.notb00012 a WHERE a.cod_mes = @mes and a.dias = @dia)
|
|
BEGIN
|
|
SELECT @fechaferiada=@fecha
|
|
END
|
|
SELECT 'FECHA FERIADA '+CAST(@fechaferiada AS VARCHAR)
|
|
/*============================================================== */
|
|
/*---------------------------------------------------------------------------- */
|
|
/* ACTUALIZA LA TABLA NOVEDADES DE NOMINA */
|
|
/* LOS CODIGOS DE MOVIMIENTOS 2 ES PARA HORAS EXTRAS AL 35% Y EL 3 PARA LAS HORAS EXTRAS AL 1005 */
|
|
IF @fechaferiada IS NULL
|
|
/* SI ES DIA NO FERIADO */
|
|
BEGIN
|
|
|
|
SELECT @h_entrada=a.entrada,@h_salida=a.salida FROM marmotech.dbo.adtb00054 a,marmotech.dbo.adtb00055 b WHERE a.id_hora = b.id_horario and b.num_emp=@emp
|
|
|
|
SELECT ' H SALIDA '+CAST(@h_salida AS CHAR)+' HORA 35% '+CAST(convert(time(7),@fecha) AS CHAR)
|
|
/*------------------------------------------------------------------------------------------------------------------------------------------ */
|
|
IF @h_salida < convert(time(7),@fecha)
|
|
BEGIN
|
|
SELECT @fechaEntrada=convert(char(10),a.checktime,101)+' '+ convert(char(5),@h_salida) from inserted a
|
|
SELECT @hextras_35=DATEDIFF(hour,@fechaEntrada,a.CHECKTIME ) from inserted a
|
|
IF EXISTS(SELECT TOP 1 a.num_emp FROM marmotech.dbo.notb00007 a WHERE a.num_nomi = @numnomi AND a.num_Emp = @emp AND a.cod_mov = 2)
|
|
BEGIN
|
|
UPDATE marmotech.dbo.notb00007 set cantidad = cantidad + @hextras_35,us_mod = 'TRIGGER',fech_mod = getdate()
|
|
WHERE num_nomi = @numnomi AND num_emp = @emp and cod_mov = 2
|
|
END
|
|
ELSE
|
|
IF @hextras_35 > 0
|
|
BEGIN
|
|
INSERT INTO marmotech.dbo.notb00007 (num_nomi,tipo_emp,cod_mov,num_emp,departamento,cod_puesto,nivel_emp,cantidad,valor,us_crea,fech_crea)
|
|
VALUES (@numnomi,@tipoemp,2,@emp,@departamento,@puesto,@nivel,@hextras_35,0,'TRIGGER',getdate())
|
|
END
|
|
END
|
|
END /* TERMINA NO DIA FERIADO */
|
|
/*----------------------------------------------------------------------------------------------------------------------------------------------------- */
|
|
|
|
ELSE
|
|
BEGIN /* DIA FERIADO */
|
|
SELECT @h_entrada=a.entrada,@h_salida=a.salida FROM marmotech.dbo.adtb00054 a,marmotech.dbo.adtb00055 b WHERE a.id_hora = b.id_horario and b.num_emp=@emp
|
|
IF @h_salida < convert(time(7),@fecha)
|
|
BEGIN
|
|
|
|
SELECT @fechaEntrada=convert(char(10),a.checktime,101)+' '+ convert(char(5),@h_salida) from inserted a
|
|
SELECT @hextras_100=DATEDIFF(hour,@fechaEntrada,a.CHECKTIME ) from inserted a
|
|
|
|
SELECT 'H SALIDA '+CAST(@h_salida AS VARCHAR)+' TRAB H 100 '+CAST(convert(time(7),@fecha) AS CHAR)+' EMP '+cast(@emp as varchar)+' '+CAST(@numnomi AS VARCHAR)
|
|
|
|
IF EXISTS(SELECT TOP 1 a.num_emp FROM marmotech.dbo.notb00007 a WHERE a.num_nomi = @numnomi AND a.num_Emp = @emp AND a.cod_mov = 3)
|
|
BEGIN
|
|
UPDATE marmotech.dbo.notb00007 set cantidad = cantidad + @hextras_100,us_mod = 'TRIGGER',fech_mod = getdate()
|
|
WHERE num_nomi = @numnomi AND num_emp = @emp and cod_mov = 3
|
|
END
|
|
ELSE
|
|
IF @hextras_100 > 0
|
|
BEGIN
|
|
INSERT INTO marmotech.dbo.notb00007 (num_nomi,tipo_emp,cod_mov,num_emp,departamento,cod_puesto,nivel_emp,cantidad,valor,us_crea,fech_crea)
|
|
VALUES (@numnomi,@tipoemp,3,@emp,@departamento,@puesto,@nivel,@hextras_100,0,'TRIGGER',getdate())
|
|
END
|
|
END /* TERMINA DIA FERIADO */
|
|
END /* TERMINA TIPO REGISTRO */
|
|
END /* SI TIENE HORARIO */
|
|
END
|
|
/* INSERTA LA DATA EN LA BASE DE DATOS DEL SITEMA DE NOMINAS */
|
|
IF NOT EXISTS (SELECT TOP 1 a.LOGID FROM marmotech.dbo.CHECKINOUT a,inserted b where a.LOGID = b.LOGID)
|
|
BEGIN
|
|
INSERT INTO marmotech.[dbo].[CHECKINOUT]
|
|
([USERID]
|
|
,[CHECKTIME]
|
|
,[CHECKTYPE]
|
|
,[VERIFYCODE]
|
|
,[SENSORID]
|
|
,[LOGID]
|
|
,[MachineId]
|
|
,[UserExtFmt]
|
|
,[WorkCode]
|
|
,[Memoinfo]
|
|
,[sn]
|
|
,[num_emp]
|
|
,[nombre_empleado]
|
|
,h_trabajadas
|
|
,h_extras35
|
|
,h_extras100
|
|
,num_nomi
|
|
)
|
|
SELECT
|
|
USERID
|
|
,CHECKTIME
|
|
,CHECKTYPE
|
|
,VERIFYCODE
|
|
,SENSORID
|
|
,LOGID
|
|
,MachineId
|
|
,UserExtFmt
|
|
,WorkCode
|
|
,Memoinfo
|
|
,sn
|
|
,@emp
|
|
,@nombre
|
|
,@htrabajadas
|
|
,@hextras_35
|
|
,@hextras_100
|
|
,@numnomi
|
|
FROM inserted
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
WITH checke as (select * from marmotech.dbo.checkinout)
|
|
UPDATE X
|
|
SET [USERID] = x1.USERID
|
|
,[CHECKTIME] = x1.CHECKTIME
|
|
,[CHECKTYPE] = x1.CHECKTYPE
|
|
,[VERIFYCODE] = x1.VERIFYCODE
|
|
,[SENSORID] = x1.SENSORID
|
|
,[MachineId] = x1.MachineId
|
|
,[UserExtFmt] = x1.UserExtFmt
|
|
,[WorkCode] = x1.WorkCode
|
|
,[Memoinfo] = x1.Memoinfo
|
|
,[sn] = x1.sn
|
|
,num_emp = @emp
|
|
,nombre_empleado = @nombre
|
|
from checke as x
|
|
INNER JOIN checkinout x1 ON x1.logid = x.logid
|
|
END
|
|
END
|
|
|