SQL Server - Planilla

 
Vista:

Planilla

Publicado por Keren (3 intervenciones) el 19/06/2020 20:21:54
Hola necesito ayuda

Tengo un procedimiento almacenado con tres tablas una de empleado, bono y pago. Necesito sacar en un cursor las horas extra de las horas laborables (3horas) pero en ves de contar que salga 9-10-11 como horas extras. Ademas de cacular el bono empleado se beneficiará con un programa de bonificación que tiene fecha en la
que inicia y una fecha en la que termina. Por ejemplo: “Bonificación de ventas del
1 de junio de 2020 al 5 de febrero de 2020”. Una bonificación puede aplicarse uno o varios días de la semana. Ejemplo “Bonificación válida solo jueves, viernes y sábado”. Una bonificación dependerá de la cantidad vendida por el empleado y puede contener más de una condición. Por ejemplo: Simple (Ventas mayores de 1000 tendrá un bono de 10), compuesta (Ventas mayores de 1000 tendrá un bono de 10; Ventas mayores de 2000 tendrá un bono de 20, Ventas mayores a 3000 tendrá un bono de 30 balboas.

alter procedure calcularEmpleado_sp (
@datos xml
)
as
--procesar el xlm a una tabla
DECLARE @TablaEmpleado AS TABLE
(
idEmpleado int,
nombre VARCHAR (30),
fecha date,
horaEntrada int,
horaSalida int,
venta decimal
)

DECLARE @TablaComision AS TABLE
(
codigoBono INT,
Bono_Inicio DATE,
Bono_Final DATE,
Comision INT
)
DECLARE @TablaPago AS TABLE
(
codigoPago INT,
hora_trabajada int ,
monto_hora_trabajada DECIMAL,
horaExtra1 INT,
horaExtra2 INT ,
monto_horaExtra1 DECIMAL,
monto_horaExtra2 DECIMAL
)
INSERT INTO @TablaEmpleado
SELECT
T.c.value('(idEmpleado/text())[1]', 'int') AS idEmpleado,
T.c.value('(nombre/text())[1]', 'varchar (30)') AS nombre,
T.c.value('(fecha/text())[1]', 'date') AS fecha,
T.c.value('(horaEntrada/text())[1]', 'int') AS horaEntrada,
T.c.value('(horaSalida/text())[1]', 'int') AS horaSalida,
T.c.value('(venta/text())[1]', 'decimal') AS venta
FROM @datos.nodes('/ArrayOfEmpleado/Empleado') T(c)

DECLARE @idEmpleado int,
@nombre VARCHAR (30),
@fecha DATE,
@horaEntrada int,
@horaSalida int,
@venta INT

DECLARE curEmpleados CURSOR FOR
SELECT * FROM @TablaEmpleado

OPEN curEmpleados
FETCH curEmpleados INTO @idEmpleado,@nombre,@fecha,@horaEntrada,@horaSalida,@venta
WHILE @@FETCH_STATUS = 0 BEGIN

select idEmpleado,nombre, fecha, horaEntrada, horaSalida, venta, hora_trabajada = @horaSalida-@horaEntrada,
monto_hora_trabajada=(@horaSalida-@horaEntrada)*3.00, DATEADD(SS,3,@horaSalida) AS horaExtra1,
SUM((240000/30)*5/40)*0.50 AS Recargo_Domingo,
SUM((240000/30)*5/40)*0.75 AS DiasFeriados
FROM @TablaEmpleado
GROUP BY idEmpleado,nombre, fecha, horaEntrada, horaSalida,venta

fetch curEmpleados into @idEmpleado,@nombre,@fecha,@horaEntrada,@horaSalida, @venta
END
close curEmpleados
deallocate curEmpleados
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Planilla

Publicado por Isaias (4558 intervenciones) el 20/06/2020 18:14:16
¿Y que resultado te da tu procedimiento?

Creas tablas en memoria como @TablaComision y @TablaPago, pero no se utilizan.

¿Cuantas lineas trae @datos xml aproximadamente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Planilla

Publicado por Keren Hernandez (3 intervenciones) el 20/06/2020 18:34:12
El xml trae las lineas de las @datos son 5 las mismas de la tabla empleados.
El procedimiento me manda como resultado 14 campos, id Empleado nombre, fecha, horaEntrada, horaSalida, venta, salario, RecargoDomingo y feriado es el select que apareve alli.

Ademas en el problemas solo se solicita que solo la tabla empleado pueda tener variables declaradas, las otras tablas son el resultado de los calculos realizados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Planilla

Publicado por Isaias (4558 intervenciones) el 20/06/2020 21:16:09
¿Y porque declarar tablas que NO OCUPAS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Planilla

Publicado por Keren Hernandez (3 intervenciones) el 20/06/2020 21:24:38
Bueno si las ocupo como seria lo del la comision en un if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar