ViniciusConsultor / controlhoras

Automatically exported from code.google.com/p/controlhoras
1 stars 0 forks source link

2011-01-31 - Varios Puntos del escalafon, control diario, motivoscambiosdiarios, etc. #9

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Modificaciones:

- Lograr generar hs con vacantes momentaneas. La idea en ppio seria crear un 
nuevo funcionario 9998 que este lo permita generar. Y luego en el control 
diario cambiar el funcionario.

- Cuando se da de baja un funcionario en RRHH, actualizar el escalafon seteando 
el 9999 como asignado a los mismos puestos.

- Listado de Personal Activo no asignado, que se muestren las observaciones de 
los eventos ingresados en el historial del empleado.
Al listado agregarle Fecha de Ingreso.

- Listado de Escalafon Diario:
    - Quitar columnas, NombreCliente y NroServicio.
    - Agregar Columnas, NroEmpleado y dia de Descanso.

- En el proceso de consolidacion, agregar control de que no haya un evento en 
el historial del empleado en el rango de generacion.

- El control de consolidacion, que no se chequeen solapamientos con servicios 
inactivos.

- Al cambiar Funcionario en el control diario, se guarda el funcionario 
reemplazante y no el que estaba (el reemplazado).

- Listado de Personal que trabajo en determinado mes para un servicio 
determinado.          
Nombre, Apellido, número de funcionario, C.I., turno

- Listado de Escalafon diario. Registros duplicados al encontrarse el mismo 
funcionario en el escalafon del mismo servicio en horarios diferentes.

Original issue reported on code.google.com by juanga...@gmail.com on 31 Jan 2011 at 10:59

GoogleCodeExporter commented 8 years ago
Punto 7: "- Al cambiar Funcionario en el control diario, se guarda el 
funcionario reemplazante y no el que estaba (el reemplazado)."
Pronto. Se setea el NroFuncionario al objeto MotivoCambiosDiarios en el capa de 
interfaz en vez de la capa de datos.

Original comment by juanga...@gmail.com on 1 Feb 2011 at 2:14

GoogleCodeExporter commented 8 years ago
Punto 5: "- En el proceso de consolidacion, agregar control de que no haya un 
evento en el historial del empleado en el rango de generacion."

Pronto. Se agrega la operacion:
/// <summary>
        /// Devuelve True si el empleado tiene algun evento que tenga FechaInicio anterior o igual a Fecha y FechaFin mayor o igual a Fecha.
        /// </summary>
        /// <param name="NroEmpleado">Nro del Empleado.</param>
        /// <param name="Fecha">Fecha a consultar.</param>
        /// <returns>Devuelve TRUE si el empleado tiene algun evento en el historial que caiga en esta Fecha. FALSE en otro caso.</returns>
        bool empleadoTieneEventosHistorialEnFecha(int NroEmpleado, DateTime Fecha);

en la interfaz IDatos. 
Esta operacion se utiliza en la operacion, void generarHorasDiaServicio(int 
NumeroCliente, int NumeroServicio, DateTime Fecha, bool ForzarGeneracion) de la 
clase ControladorClientesServicios.
Se hace en esta operacion porque para poder saber si el empleado esta en el 
historial se precisa de una fecha, y en la consolidacion no se manejan fechas, 
solo dias.
Tiene impactos en la BD. Se crea indice:
create index IX_IdEmpleadoFechaInicioFechaFin on 
eventoshistorialempleado(IdEmpleado,FechaInicio,FechaFin);

Original comment by juanga...@gmail.com on 1 Feb 2011 at 3:19

GoogleCodeExporter commented 8 years ago
Punto 1: "- Lograr generar hs con vacantes momentaneas. La idea en ppio seria 
crear un nuevo funcionario 9998 que este lo permita generar. Y luego en el 
control diario cambiar el funcionario."

Pronto. Se crea una nueva propertie en el archivo app.config.
<add key ="NroFuncionarioVacanteTemporal" value="9998"/>

Esta propertie se utiliza en la operacion obtenerMaxIdEmpleado() en el 
ControladorDatos, para obtener el MaxIdEmpleado diferente de 
NroFuncionarioVacanteTemporal.

Ademas, se utiliza en la consolidacion de horas, en la operacion 
ejecutarControlesEscalafonEmpleado de la clase ControladorClienteServicio, de 
forma que se realizan los chequeos si el usuario es diferente de 
NroFuncionarioVacanteTemporal.

Original comment by juanga...@gmail.com on 1 Feb 2011 at 3:58

GoogleCodeExporter commented 8 years ago
Punto 2: "- Cuando se da de baja un funcionario en RRHH, actualizar el 
escalafon seteando el 9999 como asignado a los mismos puestos."

Pronto.
Se modifica la operacion btnGuardar_Click del ABMEmpleados para que luego de 
guardado, si el cbNoActivo esta seleccionado, se hace la sustitucion del 
empleado 9999 por el recien dado de baja.
Ademas, se modifico el metodo de la operacion SustituirEmpleadoEnEscalafon en 
la clase ControladorClienteServicio para que no haga los chequeos de 
solapamiento en cado de que el NroNuevoEmp sea el NroFuncionarioPivot o 
NroFuncionarioVacanteTemporal.

Original comment by juanga...@gmail.com on 1 Feb 2011 at 4:21

GoogleCodeExporter commented 8 years ago
Se elimina la FK entre motivoscambiosdiarios y el idHorasGeneradas para 
permitir la regeneracion de hs sobre servicios que se hizo algun cambio diario 
en un dia futuro a hoy. Teniendo en cuenta esto, se agrega la fecha del cambio 
y la fecha del dia en que se realizo el cambio.
Cambios en BD:

-- 1) Eliminamos la FK FK_motivoscambiosdiarios_4
alter table motivoscambiosdiarios drop FOREIGN KEY FK_motivoscambiosdiarios_4;
-- 2) Eliminamos el campo IdHorasGeneradasEscalafon
alter table motivoscambiosdiarios drop column IdHorasGeneradasEscalafon;
-- 3) Agregamos una Fecha, FechaCorresponde que vendria a ser la Fecha del 
registro que se hizo el cambio
alter table motivoscambiosdiarios add column FechaCorresponde Date not null;
-- 4) Cambiamos el nombre de la columna Fecha.
alter table motivoscambiosdiarios change column Fecha FechaCambio datetime not 
null;

-- Con el cambio de nombre del campo Fecha a FechaCambio, hay que cambiar una 
consulta de clientes;
update consultasclientes set Query=replace(Query,"mcd.Fecha","mcd.FechaCambio") 
where idConsultaCliente=4;

Original comment by juanga...@gmail.com on 5 Feb 2011 at 10:21

GoogleCodeExporter commented 8 years ago

Original comment by juanga...@gmail.com on 5 Feb 2011 at 10:21

GoogleCodeExporter commented 8 years ago
Punto 4. A medias. - Listado de Escalafon Diario:
    - Quitar columnas, NombreCliente y NroServicio.
    - Agregar Columnas, NroEmpleado y dia de Descanso.

Se quitaron las columnas NombreCliente y NroServicio. Se agrego la columna 
NroEmpleado, y se hizo una concatenacion entre el NroEmpleado, Nombre y 
Apellido para que lo devuelva en una sola columna.
Query: select ser.NumeroCliente, ser.Nombre as 
Servicio,date_format(date_add(hge.HoraEntrada,INTERVAL 
-escemp.HsLlamadaAntesHoraInicio HOUR), '%H:%i') as 
Llamada,date_format(hge.HoraEntrada, '%H:%i') as 
Entrada,date_format(hge.HoraSalida, '%H:%i') as Salida,concat(emp.NroEmpleado,' 
- ', emp.Nombre,' ', emp.Apellido) as Funcionario, emp.CelularenConvenio, 
emp.Celular as CelularParticular from EscalafonEmpleado escemp, Empleados 
emp,horasgeneradasescalafon hge, Servicios ser where emp.NroEmpleado = 
escemp.NroEmpleado and hge.FechaCorrespondiente='FECHA' and hge.HoraEntrada is 
not null and hge.HoraSalida is not null and escemp.NroEmpleado=hge.NroEmpleado 
and escemp.IdEscalafon=hge.NumeroCliente*1000+hge.NumeroServicio and 
ser.NumeroCliente = hge.NumeroCliente and ser.NumeroServicio = 
hge.NumeroServicio order by date_format(date_add(hge.HoraEntrada,INTERVAL 
-escemp.HsLlamadaAntesHoraInicio HOUR), '%H:%i')

Falta el tema de mostrar el dia de Descanso del empleado.
      Consulta para ver porque no funca:
select ser.NumeroCliente, ser.Nombre as 
Servicio,date_format(date_add(hge.HoraEntrada,INTERVAL 
-escemp.HsLlamadaAntesHoraInicio HOUR), '%H:%i') as 
Llamada,date_format(hge.HoraEntrada, '%H:%i') as 
Entrada,date_format(hge.HoraSalida, '%H:%i') as Salida,emp.NroEmpleado, 
emp.Nombre, emp.Apellido, emp.CelularenConvenio, emp.Celular as 
CelularParticular , group_concat(distinct(he.dia)) as DiaDescanso
from EscalafonEmpleado escemp, Empleados emp,horasgeneradasescalafon hge, 
Servicios ser , horarioescalafon he, tiposdias td
where
 emp.NroEmpleado = escemp.NroEmpleado and
 hge.FechaCorrespondiente='2011-02-05' and hge.HoraEntrada is not null and hge.HoraSalida is not null and escemp.NroEmpleado=hge.NroEmpleado and escemp.IdEscalafon=hge.NumeroCliente*1000+hge.NumeroServicio and ser.NumeroCliente = hge.NumeroCliente and ser.NumeroServicio = hge.NumeroServicio   and he.NroEmpleado = emp.NroEmpleado and he.IdEscalafonEmpleado = escemp.IdEscalafonEmpleado
-- and emp.NroEmpleado = 1346
 and he.TipoDia=td.Id and td.Nombre="Descanso"
 order by date_format(date_add(hge.HoraEntrada,INTERVAL -escemp.HsLlamadaAntesHoraInicio HOUR), '%H:%i')

Y devolver NroEmpleado, nombre y apellido en una misma columna
Al agregar el concat, se dan errores al cargarse la grilla.

Original comment by juanga...@gmail.com on 5 Feb 2011 at 2:11

GoogleCodeExporter commented 8 years ago
Punto 8

Se resuelve agregando que el programa entienda las variables NROCLIENTE y 
NROSERVICIO en las consultas de clientes.
Luego se hace esta consulta
'select emp.NroEmpleado,emp.Nombre, emp.Apellido, emp.NumeroDocumento, 
emp.Turno from Empleados emp, horasgeneradasescalafon hge where 
hge.NumeroCliente=NROCLIENTE and hge.NumeroServicio = NROSERVICIO and 
MONTH(''FECHA'')= MONTH(hge.FechaCorrespondiente) and YEAR(''FECHA'') = 
YEAR(hge.FechaCorrespondiente) and emp.NroEmpleado = hge.NroEmpleado group by 
(emp.NroEmpleado)'

Original comment by juanga...@gmail.com on 5 Feb 2011 at 6:07

GoogleCodeExporter commented 8 years ago
Punto 4: Listado de Escalafon Diario.  Mostrar el dia de Descanso del 
Funcionario, y mostrar en una unica columna el NroEmpleado - Nombre Apellido.

Se resolvio con la siguiente consulta

select ser.NumeroCliente, ser.Nombre as Servicio,
date_format(date_add(hge.HoraEntrada,INTERVAL -escemp.HsLlamadaAntesHoraInicio 
HOUR), '%H:%i') as Llamada
,date_format(hge.HoraEntrada, '%H:%i') as Entrada,
date_format(hge.HoraSalida, '%H:%i') as Salida,
cast(concat(emp.NroEmpleado,' - ', emp.Nombre,' ', emp.Apellido) as char) as 
Funcionario, 
emp.CelularenConvenio, emp.Celular as CelularParticular 

,(select group_concat(distinct(he.dia)) from horarioescalafon he, tiposdias td 
where he.TipoDia=td.Id and td.Nombre="Descanso" and he.NroEmpleado = 
escemp.NroEmpleado) as DiaDescanso

from EscalafonEmpleado escemp, Empleados emp,horasgeneradasescalafon hge, 
Servicios ser

where emp.NroEmpleado = escemp.NroEmpleado and hge.FechaCorrespondiente='FECHA' 
and hge.HoraEntrada is not null 
and hge.HoraSalida is not null 
and escemp.NroEmpleado=hge.NroEmpleado and 
escemp.IdEscalafon=hge.NumeroCliente*1000+hge.NumeroServicio 
and ser.NumeroCliente = hge.NumeroCliente and ser.NumeroServicio = 
hge.NumeroServicio 

group by ser.NumeroCliente, ser.Nombre,
date_format(date_add(hge.HoraEntrada,INTERVAL -escemp.HsLlamadaAntesHoraInicio 
HOUR), '%H:%i')
,date_format(hge.HoraEntrada, '%H:%i'),
date_format(hge.HoraSalida, '%H:%i'),
cast(concat(emp.NroEmpleado,' - ', emp.Nombre,' ', emp.Apellido) as char), 
emp.CelularenConvenio, emp.Celular
order by date_format(date_add(hge.HoraEntrada,INTERVAL 
-escemp.HsLlamadaAntesHoraInicio HOUR), '%H:%i')

Original comment by juanga...@gmail.com on 6 Feb 2011 at 2:48

GoogleCodeExporter commented 8 years ago
Punto 9: - Listado de Escalafon diario. Registros duplicados al encontrarse el 
mismo funcionario en el escalafon del mismo servicio en horarios diferentes.

Quedo arreglado con la consulta mostranda en el Comment 9.

Original comment by juanga...@gmail.com on 6 Feb 2011 at 2:58

GoogleCodeExporter commented 8 years ago
El punto 3: - Listado de Personal Activo no asignado, que se muestren las 
observaciones de los eventos ingresados en el historial del empleado.
Al listado agregarle Fecha de Ingreso.

Se creo otro listado que se pide en el issue 11.

Original comment by juanga...@gmail.com on 6 Feb 2011 at 3:02

GoogleCodeExporter commented 8 years ago
1 hora insumida en Comentarios 9 y 10

Original comment by juanga...@gmail.com on 6 Feb 2011 at 3:36

GoogleCodeExporter commented 8 years ago

Original comment by juanga...@gmail.com on 2 Apr 2011 at 11:18

GoogleCodeExporter commented 8 years ago

Original comment by juanga...@gmail.com on 21 Apr 2011 at 4:16