Exemplo n.º 1
0
        public static bool actualizarTarifa(DetallesHabitacion tur, Tarifa tarIni, DataGridViewRow dr)
        {
            Tarifa tarAct;
            DateTime now = DateTime.Now;
            int nroVuelta = 0;

            if (tarIni.hasta != DateTime.MinValue)
            {
                if (tarIni.hasta > now)
                {
                    bitHasta[tur.nroHab] = true;
                    tarAct = tarIni;
                    bucle1(tur, tarAct, now, tarIni, dr);

                    return true;
                }
                else
                {
                    if (!bitHasta.ContainsKey(tur.nroHab) || bitHasta[tur.nroHab])
                    {
                        bitHasta[tur.nroHab] = false;
                        contPernocte[tur.nroHab] = 0;
                    }
                    return bucle0(tur, out tarAct, now, tarIni, dr);
                }
            }
            else // No
            {
                return bucle0(tur, out tarAct, now, tarIni, dr);
            }
        }
Exemplo n.º 2
0
        public static decimal calcularPrecioExtDesdeHasta(Tarifa tar, DateTime desde, DateTime hasta)
        {
            double precioTotal = 0;
            TimeSpan difMin = hasta - desde;
            double cantidadMinutos = difMin.TotalMinutes;

            if (tar.extensionPrecio != 0)
            {
                precioTotal = ((double)tar.extensionPrecio / tar.extension) * cantidadMinutos;
            }
            else
            {
                precioTotal = (double)tar.precioMinuto * cantidadMinutos;
            }

            return Convert.ToDecimal(precioTotal);
        }
Exemplo n.º 3
0
        public static Boolean Asignar(fPrincipal2 fPrincipal, int descuentoId, int nroHab, int pernocte, int catId, int conserjeId, int socioId, int puntos, decimal montoApagar,Tarifa tarifaNoche,decimal descTotalHabitacion,decimal impExtra)
        {
            try
            {
                SqlCommand comm;
                int dia = Calendario.nroDia(DateTime.Now);
                int diaAnt = Calendario.nroDiaAnt(DateTime.Now);

                if (pernocte == 0)
                {
                    Tarifa tarActual = Tarifa.obtenerTarifaActual(catId, dia, diaAnt, DateTime.Now);
                    Tarifa tarSig = Tarifa.obtenerTarifaActual(catId, dia, diaAnt, DateTime.Now.AddMinutes(tarActual.duracion));
                    decimal precioSumarContador = 0;
                    if (tarSig.pernocte)
                    {
                        if (tarSig.desde < DateTime.Now.AddMinutes(tarActual.duracion)) // Si desde= 10:00 y hasta= 11:00 tengo que poner en el contador 1 hora en $$$
                        {
                            decimal precioAux = tools.redondeo(Tarifa.obtenerPrecioDesdeHasta(tarActual, DateTime.Now, tarSig.desde));
                            precioSumarContador = tarActual.precio - precioAux;
                        }
                    }

                    comm = new SqlCommand("Habitacion_Asignar", fPrincipal2.conn);
                    comm.CommandType = CommandType.StoredProcedure;
                    if (descuentoId != 0)
                        comm.Parameters.AddWithValue("@descuentoId", descuentoId);
                    comm.Parameters.AddWithValue("@nroHab", nroHab);
                    comm.Parameters.AddWithValue("@catId", catId);
                    comm.Parameters.AddWithValue("@dia", dia);
                    comm.Parameters.AddWithValue("@diaAnt", diaAnt);
                    comm.Parameters.AddWithValue("@pernocte", pernocte);
                    comm.Parameters.AddWithValue("@conserjeId", conserjeId);
                    comm.Parameters.AddWithValue("@contPernocte", precioSumarContador);
                    if (socioId != 0)
                        comm.Parameters.AddWithValue("@socioId", socioId);
                    if (puntos > 0)
                        comm.Parameters.AddWithValue("@puntos", puntos);
                }
                else
                {
                    if (montoApagar == 0)
                    {
                        return false;// No se encontro tarifa
                    }

                    comm = new SqlCommand("Habitacion_AsignarTurnoNoche", fPrincipal2.conn);
                    comm.CommandType = CommandType.StoredProcedure;

                    comm.Parameters.AddWithValue("@nroHab", nroHab);
                    comm.Parameters.AddWithValue("@catId", catId);
                    comm.Parameters.AddWithValue("@tarifaId2", tarifaNoche.id);
                    comm.Parameters.AddWithValue("@precioTotal", tarifaNoche.precio);
                    comm.Parameters.AddWithValue("@precioExtras", impExtra);
                    DateTime fHasta = DateTime.Now.Hour > tarifaNoche.hasta.Hour ? DateTime.Now.AddDays(1) : DateTime.Now;
                    comm.Parameters.AddWithValue("@hasta", new DateTime(fHasta.Year, fHasta.Month, fHasta.Day, tarifaNoche.hasta.Hour, tarifaNoche.hasta.Minute, 0));
                    if (descuentoId != 0)
                        comm.Parameters.AddWithValue("@descuentoId", descuentoId);
                    comm.Parameters.AddWithValue("@conserjeId", conserjeId);
                    if (socioId != 0)
                        comm.Parameters.AddWithValue("@socioId", socioId);
                    if (puntos > 0)
                        comm.Parameters.AddWithValue("@puntos", puntos);
                    if (descTotalHabitacion > 0)
                        comm.Parameters.AddWithValue("@descTotalHabitacion", descTotalHabitacion);
                }

                comm.ExecuteNonQuery();

                comm.CommandText = "UPDATE cierresCaja set cantTA = cantTA + 1 where hasta is null";
                comm.Parameters.Clear();
                comm.CommandType = CommandType.Text;
                comm.ExecuteNonQuery();

                tools.actualizarListadoTurnos(fPrincipal.dataGridView1, fPrincipal.dataGridView2);

                return true;
            }
            catch (Exception ex)
            {
                LoggerProxy.Error(" Habitacion.CS , metodo: Asignar -  " + ex.Message + " " + ex.StackTrace);
                return false;
            }
        }
Exemplo n.º 4
0
        public static decimal calcularPrecioTurno(int pernocte, decimal descuentoId,int puntos,int catId,out Tarifa tarifaNoche,out decimal totDescDinero,out decimal totExtra)
        {
            totDescDinero = 0;
            totExtra = 0;

            try
            {
                tarifaNoche = null;
                decimal precioTotal = 0;
                decimal impTurnoRedondeado = 0;
                SqlCommand comm;
                int dia;
                int diaAnt;
                dia= Calendario.nroDia(DateTime.Now);
                diaAnt = Calendario.nroDiaAnt(DateTime.Now);

                if (pernocte == 0)
                {
                    comm = new SqlCommand("Habitacion_calcularPrecioAsignar", fPrincipal2.conn);
                    comm.CommandType = CommandType.StoredProcedure;
                    if (descuentoId != 0)
                        comm.Parameters.AddWithValue("@descuentoId", descuentoId);
                    comm.Parameters.AddWithValue("@catId", catId);
                    comm.Parameters.AddWithValue("@dia", dia);
                    comm.Parameters.AddWithValue("@diaAnt", diaAnt);
                    comm.Parameters.AddWithValue("@pernocte", pernocte);
                    if (puntos > 0)
                        comm.Parameters.AddWithValue("@puntos", puntos);
                }
                else
                {
                    precioTotal = Tarifa.calcularPrecioConPernocte(catId, out tarifaNoche);
                    if (precioTotal == 0)
                    {
                        return 0;// No se encontro tarifa
                    }
                    impTurnoRedondeado = tools.redondeo(tarifaNoche.precio);
                    totExtra = tools.redondeo(precioTotal - tools.redondeo(tarifaNoche.precio));

                    if (descuentoId == 0)
                        return impTurnoRedondeado + totExtra - puntos; // no es necesario aplicar descuentos

                    comm = new SqlCommand("Habitacion_calcularPrecioAsignarTurnoNoche", fPrincipal2.conn);
                    comm.CommandType = CommandType.StoredProcedure;
                    comm.Parameters.AddWithValue("@precioTotal", impTurnoRedondeado);
                    comm.Parameters.AddWithValue("@precioExtras", totExtra);

                    if (descuentoId != 0)
                        comm.Parameters.AddWithValue("@descuentoId", descuentoId);

                    if (puntos > 0)
                        comm.Parameters.AddWithValue("@puntos", puntos);
                }
                DataSet ds = new DataSet();
                SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);
                dataAdapter.Fill(ds);
                decimal descFinal = Convert.ToDecimal(ds.Tables[0].Rows[0][1]);
                decimal impFinal = Convert.ToDecimal(ds.Tables[0].Rows[0][0]);
                decimal totPuntos = Convert.ToDecimal(ds.Tables[0].Rows[0][2]);
                totDescDinero = tools.redondeo(descFinal);

                return  impFinal - totDescDinero - totPuntos;
            }
            catch (Exception ex)
            {
                tarifaNoche = null;
                LoggerProxy.Error(" Habitacion.CS , metodo: calcularPrecioAsignar -  " + ex.Message + " " + ex.StackTrace);
                return 0;
            }
        }
Exemplo n.º 5
0
        public static Tarifa obtenerTarSiguiente(int catId, int diaAct, int diaSig, DateTime horaAct)
        {
            DataSet ds = new DataSet();
            Tarifa tarifaSig;

            int diaAnt = Calendario.nroDiaAnt(horaAct);
            SqlDataAdapter dataAdapter = new SqlDataAdapter("tarifas_obtenerSiguiente", fPrincipal2.conn);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@catId", catId);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@dia", diaAct);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@diaSig", diaSig);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@hora", horaAct);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            dataAdapter.Fill(ds);

            try
            {
                tarifaSig = new Tarifa(ds.Tables[ds.Tables.Count - 1].Rows[0]);

                if (tarifaSig.desde.Day == horaAct.Day) // Si es el mismo dia del mes
                {
                    if (tarifaSig.desde.TimeOfDay < horaAct.TimeOfDay) // y la hora desde del sig es menor a la hora actual
                    {
                        tarifaSig.desde = tarifaSig.desde.AddDays(1); // pongo fecha de mañana.
                    }
                }
            }
            catch (Exception ex)
            {
                if (ds.Tables[0].Rows.Count == 0)
                {
                    LoggerProxy.Info("ActualizadorTarifa.obtenerTarSiguiente - No se encontro tarifa Siguiente. Datos: catId:" + catId + " hora:" + horaAct.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else
                    LoggerProxy.Error("ActualizadorTarifa.obtenerTarSiguiente  = " + ex.Message + " - " + ex.StackTrace);

                tarifaSig = null;
            }

            return tarifaSig;
        }
Exemplo n.º 6
0
        static void bucle4(bool sumCont, DetallesHabitacion tur, int nroHab, DateTime hora, Tarifa tar, DataGridViewRow dr)
        {
            decimal monto;

            Tarifa tarSig = obtenerTarSiguiente(tur.catId, Calendario.nroDia(DateTime.Now), Calendario.nroDiaSig(DateTime.Now), hora);
            if (tur.hasta.AddMinutes(tar.extension) > tarSig.desde)
            {
                monto = calcularPrecioExtDesdeHasta(tar, tur.hasta, tarSig.desde);
                tur.hasta = new DateTime(tur.hasta.Year, tur.hasta.Month, tur.hasta.Day, tarSig.desde.Hour, tarSig.desde.Minute, 0);
            }
            else
            {
                monto =  tar.PrecioExtension();
                tur.hasta = tur.hasta.AddMinutes(tar.extension);
            }
            monto = tools.redondeo(monto);
            tur.impHabitacion += monto;
            if (sumCont)
                contPernocte[nroHab] += monto;

            updateDetallesTurno(nroHab, monto, tur.hasta, contPernocte[nroHab], dr);
        }
Exemplo n.º 7
0
        private static void bucle1(DetallesHabitacion tur, Tarifa tarAct, DateTime now, Tarifa tar, DataGridViewRow dr)
        {
            decimal precioTotal = tools.redondeo(contPernocte[tur.nroHab] + tarAct.PrecioExtension());

            if (precioTotal >= tarAct.precioTN) // Si
            {
                decimal montoAsumar = tools.redondeo(tarAct.precioTN - contPernocte[tur.nroHab]);
                tur.impHabitacion += montoAsumar;
                if (now.TimeOfDay > tarAct.hasta.TimeOfDay)
                    tur.hasta = new DateTime(now.AddDays(1).Year, now.AddDays(1).Month, now.AddDays(1).Day, tarAct.hasta.Hour, tarAct.hasta.Minute,0);
                else
                    tur.hasta = new DateTime(now.Year, now.Month, now.Day, tarAct.hasta.Hour, tarAct.hasta.Minute, 0);

                updateDetallesTurno(tur.nroHab, montoAsumar, tur.hasta, tarAct.precioTN, dr);
                contPernocte[tur.nroHab] = tarAct.precioTN;
            }
            else // No
            {
                bucle4(true, tur, tur.nroHab, now, tar, dr);
            }
        }
Exemplo n.º 8
0
        private static void bucle0(DetallesHabitacion tur, out Tarifa tarAct, DateTime now, Tarifa tar, DataGridViewRow dr)
        {
            tarAct = Tarifa.obtenerTarifaActual(tur.catId, Calendario.nroDia(now), Calendario.nroDiaAnt(now), now);

            if (tarAct.pernocte) // si
            {
                bucle1(tur, tarAct, now, tar, dr);
            }
            else // no
            {
                contPernocte[tur.nroHab] = 0;
                bucle4(false, tur, tur.nroHab, now, tarAct, dr);
            }
        }
Exemplo n.º 9
0
        public static Tarifa obtenerTarifaSiguiente(int catId, int diaAct, int diaSig, Tarifa tar, DateTime hora)
        {
            DataSet ds = new DataSet();
            Tarifa tarifaSig;

            int diaAnt = Calendario.nroDiaAnt(hora);
            SqlDataAdapter dataAdapter = new SqlDataAdapter("tarifas_obtenerSiguiente", fPrincipal2.conn);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@catId", catId);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@dia", diaAct);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@diaSig", diaSig);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@hora", hora);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            if (tar.hasta != DateTime.MinValue)
            {
                if (tar.hasta < hora )// Si hubo cruce de dias // REVISAR 2-7-2013
                {
                    diaAnt = diaAct;
                    diaAct = Calendario.nroDia(hora.AddDays(1));
                }
                Tarifa aux = obtenerTarifaActual(catId, diaAct, diaAnt, tar.hasta);
                if (aux.categoriaId == tar.categoriaId && aux.dia == tar.dia && aux.desde == tar.desde)// si es la misma
                {
                    dataAdapter.Fill(ds);
                    tarifaSig = new Tarifa(ds.Tables[ds.Tables.Count - 1].Rows[0]);

                    if (tarifaSig.desde.Day == hora.Day) // Si es el mismo dia del mes
                    {
                        if (tarifaSig.desde.TimeOfDay < hora.TimeOfDay) // y la hora desde es menor a la hora actual
                        {
                            tarifaSig.desde = tarifaSig.desde.AddDays(1); // pongo fecha de mañana.
                        }
                    }

                    return tarifaSig;
                }
                else
                    return obtenerTarifaActual(catId, diaAct, diaAnt, tar.hasta);
            }

            try
            {
                dataAdapter.Fill(ds);
                tarifaSig = new Tarifa(ds.Tables[ds.Tables.Count-1].Rows[0]);

                if (tar.desde > tarifaSig.desde) // Si la fecha tarAnterior es mas actual que la siguiente , al asiguiente le sumo 1 dia.
                {
                    tarifaSig.desde = tarifaSig.desde.AddDays(1);
                    if(tarifaSig.hasta!= DateTime.MinValue)
                        tarifaSig.hasta= tarifaSig.hasta.AddDays(1);
                }
            }
            catch (Exception ex)
            {
                if (ds.Tables[0].Rows.Count == 0)
                {
                    log.Info("Tarifa.obtenerTarifaActual - No se encontro tarifa. Datos: SP:obtenerTarifaConId; catId:" + catId + " hora:" + hora.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else
                    log.Error("Tarifa.obtenerTarifaActual = " + ex.Message + ex.StackTrace);

                tarifaSig = null;
            }

            return tarifaSig;
        }
Exemplo n.º 10
0
        public static Tarifa obtenerTarifaInicial(int nroHab,DateTime hora)
        {
            DataSet ds = new DataSet();
            Tarifa tarifa = new Tarifa();
            SqlDataAdapter dataAdapter = new SqlDataAdapter("tarifas_obtenerInicial", fPrincipal2.conn);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@nroHab", nroHab);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            try
            {
                dataAdapter.Fill(ds);
                if (ds.Tables[0].Rows.Count == 1)
                    tarifa = new Tarifa(ds.Tables[0].Rows[0],hora);
            }
            catch (Exception ex)
            {
                LoggerProxy.Error(ex.Message + "-" + ex.StackTrace);
            }

            return tarifa;
        }
Exemplo n.º 11
0
        public static Tarifa obtenerTarifaActual(int catId, int dia, int diaAnt, DateTime hora)
        {
            DataSet ds = new DataSet();
            Tarifa tarifa;
            SqlDataAdapter dataAdapter = new SqlDataAdapter("tarifas_obtenerActual", fPrincipal2.conn);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@catId", catId);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@dia", dia);
            dataAdapter.SelectCommand.Parameters.AddWithValue("@diaAnt", diaAnt);
            if (hora != DateTime.MinValue)
                dataAdapter.SelectCommand.Parameters.AddWithValue("@hora", hora);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            try
            {
                dataAdapter.Fill(ds);
                if (ds.Tables[0].Rows.Count > 0)
                    tarifa = new Tarifa(ds.Tables[0].Rows[0]);
                else
                    tarifa = new Tarifa(ds.Tables[1].Rows[0]);

                if (tarifa.desde.Day == hora.Day) // Si es el mismo dia del mes
                {
                    if (tarifa.desde.TimeOfDay > hora.TimeOfDay) // y la hora desde es mayor a la hora actual
                    {
                        tarifa.desde = tarifa.desde.AddDays(-1); // pongo fecha de ayer.
                    }
                }
            }
            catch (Exception ex)
            {
                if (ds.Tables[0].Rows.Count == 0)
                {
                    LoggerProxy.Error("Tarifa.obtenerTarifaActual - No se encontro tarifa. Datos: SP:obtenerTarifaConId; catId:" + catId + " hora:" + hora.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                else
                    log.Error("Tarifa.obtenerTarifaActual = " + ex.Message + ex.StackTrace);

                tarifa = null;
            }

            return tarifa;
        }
Exemplo n.º 12
0
        public static decimal obtenerPrecioXMinuto(Tarifa tarSig)
        {
            double precioMinutoExtension;

            if (tarSig.extensionPrecio != 0)
            {
                precioMinutoExtension = (double)tarSig.extensionPrecio / tarSig.extension;
            }
            else
            {
                precioMinutoExtension = (double)tarSig.precioMinuto;
            }

            return Convert.ToDecimal(precioMinutoExtension);
        }
Exemplo n.º 13
0
        public static decimal obtenerPrecioDesdeHasta(Tarifa tar, DateTime desde, DateTime hasta)
        {
            decimal precioTotal = 0;
            TimeSpan difMin = hasta - desde;
            double cantidadMinutos = difMin.TotalMinutes;
            if (difMin.TotalMinutes > (tar.duracion + tar.tolerancia))
            {
                precioTotal += tar.precio;
                cantidadMinutos -= (tar.duracion + tar.tolerancia);
                precioTotal += (decimal)cantidadMinutos * obtenerPrecioXMinuto(tar);
            }
            else
            {
                precioTotal = (decimal)cantidadMinutos * tar.precioMinuto;
            }

            return precioTotal;
        }
Exemplo n.º 14
0
        //public decimal obtenerPrecioMinutos(Tarifa tar,DateTime desde,DateTime hasta)
        //{
        //    decimal precioMinutoExtension;
        //    TimeSpan difMin = hasta - desde;
        //    precioMinutoExtension = obtenerPrecioExtensiones(tar);
        //    return precioMinutoExtension * (decimal)difMin.TotalMinutes;
        //}
        //public decimal obtenerPrecioExtensiones(Tarifa tarSig)
        //{
        //    double precioMinutoExtension;
        //    if (tarSig.extensionPrecio != null)
        //    {
        //        precioMinutoExtension = (double)tarSig.extensionPrecio / tarSig.extension;
        //    }
        //    else
        //    {
        //        precioMinutoExtension = (double)tarSig.precioMinuto;
        //    }
        //    return Convert.ToDecimal(precioMinutoExtension);
        //}
        public static decimal calcularPrecioConPernocte(int catId, out Tarifa tarifaNoche)
        {
            DateTime hora = DateTime.Now;
            Tarifa tarSig;
            decimal precioTotal = 0;
            int dia = Calendario.nroDia(hora);
            int diaSig = Calendario.nroDiaSig(hora);
            int diaAnt = Calendario.nroDiaAnt(hora);

            Tarifa tar = obtenerTarifaActual(catId, dia, diaAnt, hora);
            if (tar == null)// no se encontro tarifa
            {
                tarifaNoche = null;
                return 0;
            }
            if (tar.pernocte)
            {
                tarifaNoche = tar;
                return tar.precioTN;
            }

            while (true)
            {
                int contadorOverflow = 0;
                tarSig = Tarifa.obtenerTarifaSiguiente(catId, dia, diaSig, tar, hora);
                if (tarSig.pernocte)
                {
                    decimal precioAux = Tarifa.obtenerPrecioDesdeHasta(tar, hora, tarSig.desde);
                    // 16-7-2013 Un bug, cuando hay hasta y es diferente de desde del sigueinte calcula mal
                    if (tar.hasta != DateTime.MinValue && precioAux > tar.precioTN)
                    {
                        decimal precioAux2 = 0;
                        precioAux = tar.precioTN;

                        if (tar.hasta < tarSig.desde)// si el hasta es menor al desde del turno noche obtengo la tar actual
                        {
                            Tarifa tarAux2 = obtenerTarifaActual(catId, Calendario.nroDia(tar.hasta), Calendario.nroDiaAnt(tar.hasta), tar.hasta);
                            precioAux2 = Tarifa.obtenerPrecioDesdeHasta(tarAux2, tar.hasta, tarSig.desde);
                            precioAux2 = precioAux2 > 0 ? precioAux2 : 0;
                        }

                        precioAux += precioAux2;

                    }

                    precioTotal += precioAux;
                    precioTotal += tarSig.precioTN;
                    tarifaNoche = tarSig;

                    return precioTotal;
                }

                //Calcular precio teniendo en cuenta condiciones
                if (tar.hasta != DateTime.MinValue)
                {
                    decimal precioAux2 = obtenerPrecioDesdeHasta(tar, hora, tar.hasta);
                    if (precioAux2 > tar.precioTN)
                        precioAux2 = tar.precioTN;
                    precioTotal += precioAux2;
                    hora = tar.hasta;
                }
                else
                {
                    precioTotal = obtenerPrecioDesdeHasta(tar, hora, tarSig.desde);
                    hora = tarSig.desde;
                }
                tar = tarSig;
                contadorOverflow++;
                if (contadorOverflow > 50)
                {
                    tarifaNoche = null;
                    return 0;
                }
                ////////////////////////////////////////////////////////////////////
            }
        }
Exemplo n.º 15
0
        private static void bucle1(DetallesHabitacion tur, Tarifa tarAct, DateTime now, Tarifa tar, DataGridViewRow dr)
        {
            decimal precioTotal = tools.redondeo(contPernocte[tur.nroHab] + tarAct.PrecioExtension());

            if (precioTotal >= tarAct.precioTN) // Si supero el precio turno noche
            {
                decimal montoAsumar = tools.redondeo(tarAct.precioTN - contPernocte[tur.nroHab]);
                tur.impHabitacion += montoAsumar;
                tur.hasta = tarAct.hasta;
                updateDetallesTurno(tur.nroHab, montoAsumar, tur.hasta, tarAct.precioTN, dr);
                contPernocte[tur.nroHab] = tarAct.precioTN;
            }
            else // No
            {
                bucle4(true, tur, tur.nroHab, now, tarAct, dr);
            }
        }