Files
MBS/PROYECTO/vedir/PUNTOVENTAS/queryfacial.4gl
T

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