create database practicas
use practicas
create table Empleado
(
Codigo varchar (25) ,
Nombres varchar(25),
Salario money,
primary key(Codigo),
Codigo_Departamento int not null,
constraint fk_empleado_departamento foreign key(Codigo_Departamento)
references Departamento (codigo_depto)
);
create table Departamento
(
codigo_depto int identity,
Descripcion varchar(25),
primary key(codigo_depto)
);
create table Planillas
(
Cod_Emp varchar(25),
Cod_planilla varchar(25),
Periodo int,
Fecha varchar(25),
Fecha_pago varchar(25),
Horas_trabajadas int,
Salario_devengado money,
Descuento_ISSS money,
Descuento_AFP money,
Total_descuentos money,
Salario_liquido money,
Nombre_departamento varchar(25)
primary key (Cod_planilla),
constraint fk_planilla_empleado foreign key (Cod_Emp) references
Empleado (Codigo) on update cascade
);
SELECT * FROM Departamento
insert into Departamento(Descripcion)
values('Produccion');
insert into Departamento(Descripcion)
values('Calidad');
insert into Departamento(Descripcion)
values('Informatica');
insert into Departamento(Descripcion)
values('Recursos Humanos');
insert into Departamento(Descripcion)
values('Administracion');
insert into Empleado
(
Codigo,
Nombres,
Salario,
Codigo_Departamento
)
values
(
'EM1',
'Nestor Beteta',
400,
4
);
insert into Empleado
(
Codigo,
Nombres,
Salario,
Codigo_Departamento
)
values
(
'EM2',
'Carlos Garcia',
500,
5
);
insert into Empleado
(
Codigo,
Nombres,
Salario,
Codigo_Departamento
)
values
(
'EM3',
'Gustavo López',
600,
3
);
select*from Empleado
/*Leer los datos de la tabla EMPLEADOS con las columnas codigo,
codigo,nombres, apellidos, salario y código departamento con Join a
la tabla de DEPARTAMENTOS, de aquí leer el código_depto y Descripcion y
luego crear un cursor que permita calcular la planilla quincenal de
N empleados que existen.*/
--JOIN DE EMPLEADO A DEPARTAMENTO
select E.Codigo, E.Nombres, E.Salario, E.Codigo_Departamento, D.Descripcion, D.codigo_depto
from Empleado AS E inner join
Departamento AS D ON
E.Codigo_Departamento=D.codigo_depto
where Codigo='EM3';
select*from Planillas
declare mipla cursor for select
Cod_Emp, Cod_planilla, Periodo,Fecha,Fecha_pago,Horas_trabajadas,Salario_devengado,
Descuento_ISSS,Descuento_AFP,Total_descuentos,Salario_liquido,Nombre_departamento
from Planillas
open mipla
declare @Cod_Emp as varchar(25)
declare @Cod_planilla as varchar(25)
declare @Periodo as int
declare @fecha as datetime
declare @fecha_pago varchar (25)
declare @horas_trabajadas int
declare @salario_devengado money
declare @descuento_ISSS money
declare @descuento_AFP money
declare @total_descuentos money
declare @salario_liquido money
declare @nombre_departamento varchar(25)
declare @salario money;
declare @cod_Depart int
declare @salario_hora money;
declare @total_horas_trabajas_quincena int;
fetch next from mipla
into
@Cod_Emp,@Cod_planilla,@Periodo,@fecha,@fecha_pago,@horas_trabajadas,@salario_devengado,
@descuento_ISSS,@descuento_AFP,@total_descuentos,@salario_liquido,@nombre_departamento
while @@fetch_status=0
begin
SET @salario_hora=@salario/30/8
SET @total_horas_trabajas_quincena = 88
SET @Salario_Devengado= @salario_hora * @total_horas_trabajas_quincena
SET @Descuento_isss= @salario_devengado*2.5/100
SET @Descuento_AFP= @salario_devengado*4.5/100
SET @total_Descuentos= @Descuento_ISSS+@Descuento_AFP
SET @Salario_liquido=@Salario_Devengado-@total_Descuentos
set @Cod_planilla='1-05-2012'
set @fecha_pago='15/05/2012'
insert into planillas
(
Cod_Emp, Cod_planilla, Periodo,Fecha,Fecha_pago,Horas_trabajadas,Salario_devengado,
Descuento_ISSS,Descuento_AFP,Total_descuentos,Salario_liquido,Nombre_departamento
)
VALUES
(
@Cod_Emp,@Cod_planilla,@Periodo,@fecha,@fecha_pago,@horas_trabajadas,@salario_devengado,
@descuento_ISSS,@descuento_AFP,@total_descuentos,@salario_liquido,@nombre_departamento
);
fetch next from mipla
into
@Cod_Emp,@Cod_planilla,@Periodo,@fecha,@fecha_pago,@horas_trabajadas,@salario_devengado,
@descuento_ISSS,@descuento_AFP,@total_descuentos,@salario_liquido,@nombre_departamento
end
close mipla
deallocate mipla
select * from Planillas