Exemplo n.º 1
0
		private void HoRaSGeneraDaSEScalaFOn_Detach(HoRaSGeneraDaSEScalaFOn entity)
		{
			entity.EmPleadOs = null;
		}
Exemplo n.º 2
0
		private void HoRaSGeneraDaSEScalaFOn_Detach(HoRaSGeneraDaSEScalaFOn entity)
		{
			entity.SERVicIoS = null;
		}
Exemplo n.º 3
0
		private void HoRaSGeneraDaSEScalaFOn_Attach(HoRaSGeneraDaSEScalaFOn entity)
		{
			entity.EmPleadOs = this;
		}
        private void agregarFuncionario_Click(object sender, EventArgs e)
        {
            try
            {
                ControlDiarioAgregarFuncionario cdaf = new ControlDiarioAgregarFuncionario(DateTime.Parse(mtFecha.Text));
                DialogResult res = cdaf.ShowDialog(this);
                if (res == DialogResult.OK)
                {
                    EmPleadOs emp = cdaf.funcionario;
                    DateTime fechaCorresponde = DateTime.Parse(mtFecha.Text);
                    DateTime horaInicio = cdaf.HoraInicio;
                    DateTime horaFin = cdaf.HoraFin;
                    string ACargoDe = cdaf.ACargoDe;
                    // Genero una nueva HoraGeneradasEscalafon
                    HoRaSGeneraDaSEScalaFOn hgeNew = new HoRaSGeneraDaSEScalaFOn();
                    hgeNew.FechaCorrespondiente = fechaCorresponde;
                    hgeNew.HoraEntrada = horaInicio;
                    hgeNew.HoraSalida = horaFin;
                    if (ACargoDe == "Empresa")
                        hgeNew.AcArgoDeLaEmpresa = 1;
                    hgeNew.NroEmpleado = emp.NroEmpleado;
                    hgeNew.NumeroCliente = cliente.NumeroCliente;
                    hgeNew.NumeroServicio = servicio.NumeroServicio;
                    hgeNew.DiaHoraLlamadaAntesHoraEntrada = hgeNew.HoraEntrada.Subtract(TimeSpan.FromHours(2));
                    //hgeNew.Descanso = 0;

                    // Chequeamos que no se solapen hs.
                    //sistema.aplicarControlesAltaHoraGeneradaEscalafon(fechaCorresponde, hgeNew);

                    cdaf.MotivoCambio.EmPleadOs = emp;
                    cdaf.MotivoCambio.FechaCorresponde = fechaCorresponde;
                    cdaf.MotivoCambio.FechaCambio = DateTime.Now;
                                     
                    cdaf.MotivoCambio.NumeroCliente = cliente.NumeroCliente;
                    cdaf.MotivoCambio.NumeroServicio = servicio.NumeroServicio;

                    long idHGE = ControladorClientesServicios.getInstance().agregarEmpleadoControlDiario(fechaCorresponde, hgeNew, cdaf.MotivoCambio);
                    hgeNew.IDHorasGeneradasEscalafon = idHGE;
                    listaFuncsCargados.Add(idHGE, hgeNew);
                    int num = dgvHoras.Rows.Add();
                    dgvHoras.Rows[num].Cells["IdHorasGeneradasEscalafon"].Value = hgeNew.IDHorasGeneradasEscalafon;
                    dgvHoras.Rows[num].Cells["NroEmpleado"].Value = hgeNew.NroEmpleado;
                    
                    dgvHoras.Rows[num].Cells["Funcionario"].Value = emp.Nombre + " " + emp.Apellido;
                    dgvHoras.Rows[num].Cells["HoraEntrada"].Value = hgeNew.HoraEntrada.ToString("HH:mm");
                    dgvHoras.Rows[num].Cells["HoraSalida"].Value = hgeNew.HoraSalida.ToString("HH:mm");    
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 5
0
		private void HoRaSGeneraDaSEScalaFOn_Attach(HoRaSGeneraDaSEScalaFOn entity)
		{
			entity.SERVicIoS = this;
		}
        private void cambiarHora(bool cambiarEntrada, string texto)
        {
            ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Iniciando...");
            long idhge = int.Parse(dgvHoras.SelectedRows[0].Cells["IDHorasGeneradasEscalafon"].Value.ToString());
            int idFuncSeleccionado = (int)listaFuncsCargados[idhge].NroEmpleado;
            string nombreFunc = dgvHoras.SelectedRows[0].Cells["Funcionario"].Value.ToString();
            DateTime horaini = listaFuncsCargados[idhge].HoraEntrada;
            DateTime horafin = listaFuncsCargados[idhge].HoraSalida;
            CambiarHoraFuncionario changeHourForm = new CambiarHoraFuncionario(idFuncSeleccionado, nombreFunc, texto, horaini, horafin, cambiarEntrada);
            DialogResult dg = changeHourForm.ShowDialog(this);

            if (dg == DialogResult.OK)
            {
                ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "DialogResult.OK");
                // Chequeamos que no existan los horarios solapados.
                HoRaSGeneraDaSEScalaFOn hstemp = new HoRaSGeneraDaSEScalaFOn();
                hstemp.NroEmpleado = listaFuncsCargados[idhge].NroEmpleado;
                if (cambiarEntrada)
                {
                    hstemp.HoraEntrada = changeHourForm.getFechaHoraNueva();
                    hstemp.HoraSalida = listaFuncsCargados[idhge].HoraSalida;
                }
                else
                {
                    hstemp.HoraEntrada = listaFuncsCargados[idhge].HoraEntrada;
                    hstemp.HoraSalida = changeHourForm.getFechaHoraNueva();
                }
                try
                {
                    ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Antes sistema.aplicarControlesAltaHoraGeneradaEscalafon");
                    sistema.aplicarControlesAltaHoraGeneradaEscalafon(listaFuncsCargados[idhge].FechaCorrespondiente, idhge, hstemp);
                    ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Despues de sistema.aplicarControlesAltaHoraGeneradaEscalafon");
                    MotivoCambioDiarioForm mcdf = new MotivoCambioDiarioForm(DateTime.Parse(mtFecha.Text));
                    dg = mcdf.ShowDialog(this);
                    ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Despues de showDialog");
                    if (dg == DialogResult.OK)
                    {
                        int numFila = dgvHoras.SelectedRows[0].Index;

                        //long idhge = (long)dgvHoras.Rows[numFila].Cells["IdHorasGeneradasEscalafon"].Value;
                        //int nroEmp = (int)listaFuncsCargados[idhge].NroEmpleado;
                        ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Antes de changeHourForm.getFechaHoraNueva()");
                        DateTime FechaHoraNueva = changeHourForm.getFechaHoraNueva();
                        mcdf.motivoCambio.NroEmpleado = listaFuncsCargados[idhge].NroEmpleado;
                        mcdf.motivoCambio.NumeroCliente = uint.Parse(ucCliente.ClienteNRO);
                        mcdf.motivoCambio.NumeroServicio = servicio.NumeroServicio;
                        ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Despues de mcdf.motivoCambio.NumeroServicio = servicio.NumeroServicio;");
                        //DateTime DateNueva = DateTime.Parse(mtFecha.Text + " " + HoraNueva);
                        ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Antes datos.cambiarHoraFuncionarioControlDiario");
                        datos.cambiarHoraFuncionarioControlDiario(idhge, (int)listaFuncsCargados[idhge].NroEmpleado, FechaHoraNueva, cambiarEntrada, mcdf.motivoCambio);
                        ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Despues datos.cambiarHoraFuncionarioControlDiario");
                        if (cambiarEntrada)
                        {
                            listaFuncsCargados[idhge].HoraEntrada = FechaHoraNueva;
                            dgvHoras.Rows[numFila].Cells["HoraEntrada"].Value = FechaHoraNueva.ToString("HH:mm");
                        }
                        else
                        {
                            listaFuncsCargados[idhge].HoraSalida = FechaHoraNueva;
                            dgvHoras.Rows[numFila].Cells["HoraSalida"].Value = FechaHoraNueva.ToString("HH:mm");
                        }
                        TimeSpan ts = new TimeSpan(listaFuncsCargados[idhge].HoraSalida.Ticks - listaFuncsCargados[idhge].HoraEntrada.Ticks);
                        dgvHoras.Rows[numFila].Cells["TotalHs"].Value = impHora(ts);
                        aplicarFormatoCeldaHora(numFila, listaFuncsCargados[idhge].HoraEntrada, listaFuncsCargados[idhge].HoraSalida);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                ControladorUtilidades.writeToLog(this.Name, "cambiarHora", "Fin.");
            }
        }
        private void cambiarFuncionario_Click(object sender, EventArgs e)
        {   
            try
            {
                ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "Inicia metodo");
                MotIVOsCamBiosDiARioS motivoCambio = null;
                int idFuncSeleccionado = int.Parse(dgvHoras.SelectedRows[0].Cells["NroEmpleado"].Value.ToString() );
                string nombreFunc = dgvHoras.SelectedRows[0].Cells["Funcionario"].Value.ToString();
                DateTime fecha = DateTime.Parse(mtFecha.Text);
                ControlDiarioCambiarFuncionario change = new ControlDiarioCambiarFuncionario(idFuncSeleccionado,nombreFunc, fecha);
                ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "Antes de ShowDialog ControlDiarioCambiarFuncionario");
                DialogResult dg = change.ShowDialog(this);

                if (dg == DialogResult.OK)
                {
                    ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "DialogResult OK");
                    int numFila = dgvHoras.SelectedRows[0].Index;
                    long idhge = (long)dgvHoras.Rows[numFila].Cells["IdHorasGeneradasEscalafon"].Value;
                    
                    // Chequeamos que no existan los horarios solapados.
                    HoRaSGeneraDaSEScalaFOn hstemp = new HoRaSGeneraDaSEScalaFOn();
                    hstemp.NroEmpleado = change.FuncionarioNuevo.NroEmpleado;
                    hstemp.HoraEntrada = listaFuncsCargados[idhge].HoraEntrada;
                    hstemp.HoraSalida = listaFuncsCargados[idhge].HoraSalida;
                    try
                    {
                        ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "Antes de sistema.AplicarControlesAltaHoraGeneradaEscalafon");
                        sistema.aplicarControlesAltaHoraGeneradaEscalafon(listaFuncsCargados[idhge].FechaCorrespondiente, hstemp);
                        ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "Despues de sistema.AplicarControlesAltaHoraGeneradaEscalafon");
                        //
                        MotivoCambioDiarioForm mcdf = new MotivoCambioDiarioForm(DateTime.Parse(mtFecha.Text));
                        dg = mcdf.ShowDialog(this);
                        if (dg == DialogResult.OK)
                        {

                            motivoCambio = mcdf.motivoCambio;

                            //motivoCambio.IDHorasGeneradasEscalafon = idhge;
                            motivoCambio.NumeroCliente = uint.Parse(ucCliente.ClienteNRO);
                            motivoCambio.NroEmpleado = (uint)idFuncSeleccionado;
                            motivoCambio.NumeroServicio = servicio.NumeroServicio;
                            datos.cambiarFuncionarioControlDiario(idhge, (int)change.FuncionarioNuevo.NroEmpleado, motivoCambio);
                            listaFuncsCargados[idhge].NroEmpleado = change.FuncionarioNuevo.NroEmpleado;
                            dgvHoras.Rows[numFila].Cells["NroEmpleado"].Value = change.FuncionarioNuevo.NroEmpleado;
                            dgvHoras.Rows[numFila].Cells["Funcionario"].Value = change.FuncionarioNuevo.Nombre + " " + change.FuncionarioNuevo.Apellido;

                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    ControladorUtilidades.writeToLog(this.Name, "cambiarFuncionario_Click", "Fin.");
                }
            }catch(Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }      
        /// <summary>
        /// Aplica controles pero no teniendo en cuenta la linea IdHoraGeneradaActual de HorasGeneradas
        /// </summary>
        /// <param name="FechaCorrespondiente"></param>
        /// <param name="IdHoraGeneradaActual"></param>
        /// <param name="HoraGeneradaTemp"></param>
        public void aplicarControlesAltaHoraGeneradaEscalafon(DateTime FechaCorrespondiente, long IdHoraGeneradaActual, HoRaSGeneraDaSEScalaFOn HoraGeneradaTemp)
        {
            try
            {
                List<HoRaSGeneraDaSEScalaFOn> horarios = datos.obtenerHorasGeneradasEscalafonEmpleado(HoraGeneradaTemp.NroEmpleado,FechaCorrespondiente);

                foreach (HoRaSGeneraDaSEScalaFOn linea in horarios)
                {
                    if (linea.IDHorasGeneradasEscalafon != IdHoraGeneradaActual)
                    {
                        //DayOfWeek day = (DayOfWeek) DayOfWeek.Parse(typeof(DayOfWeek), h.DiA, true);
                        if (HorariosSolapados(HoraGeneradaTemp.HoraEntrada, HoraGeneradaTemp.HoraSalida, linea.HoraEntrada, linea.HoraSalida))
                            throw new Exception("Error de solapamiento de horarios. (" + HoraGeneradaTemp.HoraEntrada.ToLongTimeString() + "-" + HoraGeneradaTemp.HoraSalida.ToLongTimeString() + ") con " + "(Cliente: " + linea.NumeroCliente + " - Servicio: " + linea.NumeroServicio + ". Hs: " + linea.HoraEntrada.ToLongTimeString() + " - " + linea.HoraSalida.ToLongTimeString() + "). Dia: " + FechaCorrespondiente.ToShortDateString());
                    }                  
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        /// <summary>
        /// Agrega un nuevo funcionario con un horario determinado a un HorasGeneradasEscalafon de un cliente servicio de un dia determinado aplicando los controles necesarios para su alta.
        /// </summary>
        /// <param name="fechaCorresponde">La fechaCorrespondiente a la que se va a dar el alta</param>
        /// <param name="horaGeneradaEscalafon">La horaGeneradaEscalafon a dar de alta sin el Identificador y el Motivo.</param>
        /// <param name="motivoCambio">El MotivoCambioDiario correspondiente al motivo del cambio.</param>
        /// <returns>El Identificador del alta de HorarioEscalafonEmpleado</returns>
        public long agregarEmpleadoControlDiario(DateTime fechaCorresponde, HoRaSGeneraDaSEScalaFOn horaGeneradaEscalafon, MotIVOsCamBiosDiARioS motivoCambio)
        {
            try
            {
                aplicarControlesAltaHoraGeneradaEscalafon(fechaCorresponde, horaGeneradaEscalafon);
                long ret = datos.agregarEmpleadoHoraGeneradaEscalafon(horaGeneradaEscalafon, motivoCambio);

                return ret;
            }catch(Exception ex)
            {
                throw ex;
            }
        }
        public void generarHorasDiaServicio(int NumeroCliente, int NumeroServicio, DateTime Fecha, bool ForzarGeneracion)
        {
            try
            {
                if (Fecha.Date.CompareTo(DateTime.Today) <= 0)
                {
                    throw new GenerarHorasDiaException("La fecha a generar debe ser mayor a hoy. " + DateTime.Today.ToShortDateString());
                }
                List<HoRaSGeneraDaSEScalaFOn> listaHoras = datos.obtenerHorasGeneradasServicio(NumeroCliente, NumeroServicio, Fecha);
                if (listaHoras.Count != 0 && !ForzarGeneracion)
                {
                    throw new YaExistenHorasGeneradasParaLaFechaException("Existen HorasGeneradas del Cliente: " + NumeroCliente + " - Servicio: " + NumeroServicio + " en la Fecha: " + Fecha.ToShortDateString());
                }else
                {
                    SERVicIoS serv = datos.obtenerServicioCliente(NumeroCliente, NumeroServicio);
                    EScalaFOn escalafon = datos.obtenerEscalafon(CalcNroContrato(NumeroCliente,NumeroServicio));
                    HoRaSGeneraDaSEScalaFOn hge;
                    foreach(EScalaFOneMpLeadO esc in escalafon.EScalaFOneMpLeadO)
                    {
                        // Chequeamos que el empleado no este durante ningun evento en el EventoHistorialEmpleado en esta fecha
                        if (datos.empleadoTieneEventosHistorialEnFecha((int)esc.NroEmpleado, Fecha))
                            throw new GenerarHorasDiaException("El empleado " + esc.NroEmpleado + " tiene eventos en el Historial en la Ficha del empleado para la Fecha: " + Fecha.ToShortDateString());

                        hge = new HoRaSGeneraDaSEScalaFOn();
                        hge.FechaCorrespondiente = Fecha;
                        int i=0;
                        while (!nombreDiasInglesAEspanol(Fecha.DayOfWeek.ToString()).Equals(esc.HoRaRioEScalaFOn[i].DiA))
                        {
                            i++;
                        }
                        if (esc.HoRaRioEScalaFOn[i].TipoDia == 0)  // Si el dia es Laborable
                        {
                            hge.Descanso = 0;
                            hge.HoraEntrada = DateTime.Parse(Fecha.ToShortDateString() + " " + esc.HoRaRioEScalaFOn[i].HoRaInI);
                            hge.HoraSalida = DateTime.Parse(Fecha.ToShortDateString() + " " + esc.HoRaRioEScalaFOn[i].HoRaFIn);
                            if (hge.HoraSalida < hge.HoraEntrada)
                                hge.HoraSalida = hge.HoraSalida.AddDays(1.0);
                            hge.NroEmpleado = esc.NroEmpleado;
                            hge.NumeroCliente = escalafon.NumeroCliente;
                            hge.NumeroServicio = escalafon.NumeroServicio;
                            hge.DiaHoraLlamadaAntesHoraEntrada = hge.HoraEntrada.AddHours(-(double)esc.HsLlamadaAntesHoraInicio);
                            if (esc.AcArgoDe == "Empresa")
                                hge.AcArgoDeLaEmpresa = 1;                            

                            listaHorasGeneradas.Add(hge);
                        }
                        else
                            if (esc.HoRaRioEScalaFOn[i].TipoDia == 2)
                            {
                                hge.Descanso = 1;
                                hge.NroEmpleado = esc.NroEmpleado;
                                hge.NumeroCliente = escalafon.NumeroCliente;
                                hge.NumeroServicio = escalafon.NumeroServicio;
                                listaHorasGeneradas.Add(hge);
                            }
                    }
                }
            }
            catch(YaExistenHorasGeneradasParaLaFechaException y)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new GenerarHorasDiaException("Error en la generacion de horas. Cliente: " + NumeroCliente + " - Servicio: "+NumeroServicio + " - Fecha: " + Fecha.ToShortDateString() + "\n"+e.Message);
            }
        }