override public Boolean exists(Reserva reserva) { int idReserva = 0; int idEstadia = 0; String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.Parameters.AddWithValue("@idReserva", reserva.getIdReserva()); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT idReserva FROM LOS_BORBOTONES.Reserva WHERE idReserva = @idReserva"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { idReserva = reader.GetInt32(reader.GetOrdinal("idReserva")); } sqlConnection.Close(); Estadia estadia = null; estadia = reserva.getEstadia(); //valido por el idEstadia que tiene en la base sqlCommand.Parameters.AddWithValue("@idEstadia", estadia.getIdEstadia()); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT idEstadia FROM LOS_BORBOTONES.Reserva WHERE idEstadia = @idEstadia"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { idEstadia = reader.GetInt32(reader.GetOrdinal("idEstadia")); } sqlConnection.Close(); //Devuelve verdadero si el ID coincide o si el IdEstadia coincide return(idReserva != 0 || estadia.getIdEstadia().Equals(idEstadia)); }
private void button2_Click(object sender, EventArgs e) { //traigo la estadia con sus items de factura si la estadia ya tiene checkout hecho. int idEstadia = 0; RepositorioEstadia repositorioEstadia = new RepositorioEstadia(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); Estadia estadia = null; EstadoReserva estadoReserva = null; if (textIdEstadia.Text != "") { idEstadia = int.Parse(textIdEstadia.Text); estadia = repositorioEstadia.getById(idEstadia); RepositorioReserva repoReserva = new RepositorioReserva(); Reserva reserva = repoReserva.getIdByIdEstadia(idEstadia); //buscar por estado reserva que este con check out ya realizado estadoReserva = repoEstadoReserva.getByIdEstadia(idEstadia); if (estadoReserva == null) { MessageBox.Show("La estadia ingresada no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if ((!estadoReserva.getTipoEstado().Equals("RCE") && !estadoReserva.getTipoEstado().Equals("RCCR")) | estadia.getFacturada() == true | reserva.getHotel().getIdHotel() != this.sesion.getHotel().getIdHotel()) { if (estadoReserva.getTipoEstado().Equals("RCI")) { MessageBox.Show("Todavia no se realizo el checkout de la estadia ingresada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (estadoReserva.getTipoEstado().Equals("RF")) { MessageBox.Show("La estadia ya fue facturada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (estadia.getFacturada() == true) { MessageBox.Show("La estadia ingresada ya fue facturada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (reserva.getHotel().getIdHotel() != this.sesion.getHotel().getIdHotel()) { MessageBox.Show("La estadia ingresada no corresponde al hotel al cual el usuario esta logueado.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("La estadia ingresada no esta en estado para facturarse", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { //lleno los datos de la estadia aca se puede ver la cantidad de noches que de verdad se alojo. //List<Estadia> estadias = new List<Estadia>(); estadias.Add(estadia); dataGridView1.DataSource = estadias; dataGridView1.AutoResizeColumns(); dataGridView1.ClearSelection(); //lleno los consumibles por estadia en el datagrid2 //List<Consumible> consumiblesXEstadia = new List<Consumible>(); //repositorioEstadia.getConsumiblesXIdEstadia(estadia.getIdEstadia()).ForEach(i => consumiblesXEstadia.Add(new ConsumibleParaMostrar(i, ); consumiblesXEstadia = repoConsumibles.getByQuery(estadia.getIdEstadia()); dataGridView2.DataSource = consumiblesXEstadia; dataGridView2.AutoResizeColumns(); dataGridView2.ClearSelection(); } } else { MessageBox.Show("Por favor ingresar ID de estadia.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public int facturar(List <Estadia> estadias, List <ConsumibleParaMostrar> consumiblesXEstadia, String tipoPago, String nombreTarjeta, decimal nroTarjeta, int codSegTarjeta, int vencTarjeta) { int idFactura = 0; int resultado = 0; int numeroFactura = 0; RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioReserva repoReserva = new RepositorioReserva(); RepositorioItemFactura repoItemFactura = new RepositorioItemFactura(); Estadia estadia = null; Reserva reserva = null; //suponemos que hay solo 1 estadia por estrategia enunciado, pero lo dejo aca como para hacer mas si necesito. estadia = estadias.First(); //traigo la reserva y comparo los dias que sean los mismos los de la reserva que los que tuve efectivamente la estadia reserva = repoReserva.getIdByIdEstadia(estadia.getIdEstadia()); List <ItemFactura> itemsFactura = new List <ItemFactura>(); float total = 0; int puntos = 0; //float cant = 1;//pongo cant siempre en 1 ya que no marco mas que 1 solo consumible y lo mismo con la habitacion float monto = 0;//va a ser siempre el precio del cons ya que no marco mas que 1 solo consumible DateTime fecha = Utils.getSystemDatetimeNow(); int idItemFactura = 0; //int idConsumible = 0; //traigo el numero de factura asi le sumo 1 que sera el nuevo. numeroFactura = getLastNumeroFactura() + 1; //traigo regimen para sumarlo o ver si es all inclusive RepositorioRegimen repoRegimen = new RepositorioRegimen(); Regimen regimen = reserva.getRegimen(); Boolean allInclusive = false; if (regimen.getCodigoRegimen().Equals("RGAI")) { allInclusive = true; } //traigo el total //hago for each de los consumibles y sumo total y puntos ItemFactura itemFactura = null; float montoTotal = 0; foreach (ConsumibleParaMostrar cm in consumiblesXEstadia) { int cantidad = cm.getCantidad(); //SI ES ALL INCLUSIVE NO SUMAN PARA EL TOTAL DE LA FACTURA if (!allInclusive) { monto = cm.getConsumible().getPrecio(); } else { monto = 0; } itemFactura = new ItemFactura(idItemFactura, cm.getConsumible().getIdConsumible(), cm.getCantidad(), monto, fecha, idFactura); itemsFactura.Add(itemFactura); montoTotal = monto * cm.getCantidad() + montoTotal; } if (allInclusive) { //es all inclusive, hago un solo itemFactura all inclusive y no se cobra nada int idConsumible = 6;//poner el idConsumible del all inclusive monto = 0; //necesito un nuevo campo que sea descripcion por regimen de estadia itemFactura = new ItemFactura(idItemFactura, idConsumible, 1, monto, fecha, idFactura); itemsFactura.Add(itemFactura); } //sumo la habitacion x los dias alojados float montoHabitacion = 0; float totalHabitacion = 0; //conseguir el montoHabitacion de la reserva montoHabitacion = (float)repoReserva.getMonto(reserva); if (reserva.getDiasAlojados() == estadia.getCantidadNoches()) { float diasAlojados = (float)reserva.getDiasAlojados(); //se quedo toda la estadia hago solo un item factura con los dias x el monto totalHabitacion = montoHabitacion * diasAlojados; int idConsumible = 5; //con 5 marco que es la habitacion itemFactura = new ItemFactura(idItemFactura, idConsumible, diasAlojados, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); } else { //no se quedo toda la estadia hago un item factura con los diasAlojados x el monto y aparte un item por cada dia que quedo. float diasAlojados = (float)estadia.getCantidadNoches(); float diasAlojadosTotal = (float)reserva.getDiasAlojados(); totalHabitacion = montoHabitacion * diasAlojadosTotal; int idConsumible = 5; //con 5 marco que es la habitacion itemFactura = new ItemFactura(idItemFactura, idConsumible, diasAlojados, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); float gap = (float)(reserva.getDiasAlojados() - estadia.getCantidadNoches()); itemFactura = new ItemFactura(idItemFactura, idConsumible, gap, montoHabitacion, fecha, idFactura); itemsFactura.Add(itemFactura); } //sumo los puntos float dias = (float)reserva.getDiasAlojados(); puntos = (int)(montoHabitacion * dias) / 20; //puntos de habitacion puntos = puntos + (int)(montoTotal / 10); //puntos de consumibles total = totalHabitacion + montoTotal; Factura factura = new Factura(idFactura, estadia, reserva, numeroFactura, fecha, total, puntos, tipoPago, itemsFactura, nombreTarjeta, nroTarjeta, codSegTarjeta, vencTarjeta); idFactura = this.create(factura); if (idFactura != 0) { foreach (ItemFactura item in itemsFactura) { //hago el set de idFactura para el create item.setIdFactura(idFactura); } repoItemFactura.createTodos(itemsFactura); //hacer update de la estadia avisando que ya facture repoEstadia.facturado(estadia.getIdEstadia()); repoEstadia.updateEstadoFacturado(reserva.getIdReserva()); resultado = 1; } else { resultado = 2; //falla creando factura } return(resultado); }