private void btnPagar_Click(object sender, EventArgs e) { //creo una lista de turno y otra de sobre para separar a los seleccionados por el usuario // y asignarle sus ids al recibo. List<clsTurno> turnoReporte = new List<clsTurno>(); List<clsSobreturno> sobreTurnosReporte = new List<clsSobreturno>(); clsTurno turn = new clsTurno(); clsSobreturno sobreTarna = new clsSobreturno(); if (dgvTurnosAPagar.Rows.Count > 0) { if (string.IsNullOrWhiteSpace(cbTipoFactura.Text) == false && string.IsNullOrWhiteSpace(tbCliente.Text) == false && string.IsNullOrWhiteSpace(tbCuit.Text) == false && string.IsNullOrWhiteSpace(tbDireccion.Text) == false && tbCuit.Text.Length == 11) { if (float.Parse(tbCantidadTarjeta.Text.ToString()) == 0 || float.Parse(tbCantidadTarjeta.Text.ToString()) > 100) { if ((float.Parse(tbCantidadTarjeta.Text.ToString()) + float.Parse(tbCantidadEfectivo.Text.ToString())) < total) { if (cbTipoFactura.Text == "A") { //LISTA DE RECIBOS A DAR DE ALTA. List<clsRecibo> listaRecibosAInsertar = new List<clsRecibo>(); //LISTA DE ID'S DE TURNOS A SER ACTUALIZADOS. List<int> idsDeTurnosAActualizar = new List<int>(); //LISTA DE ID'S DE SOBRETURNOS A SER ACTUALIZADOS. List<int> idsDeSobreTurnosAActualizar = new List<int>(); if (string.IsNullOrWhiteSpace(tbCantidadEfectivo.Text)) { tbCantidadEfectivo.Text = "0"; } foreach (DataGridViewRow row in dgvTurnosAPagar.Rows) { turn.Id = int.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[0].Value.ToString()); sobreTarna.Id = int.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[0].Value.ToString()); turn.Fecha = DateTime.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[1].Value.ToString()); sobreTarna.Fecha = DateTime.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[1].Value.ToString()); turn.Costo = float.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[2].Value.ToString()); sobreTarna.Costo = float.Parse(dgvTurnosAPagar.Rows[row.Index].Cells[2].Value.ToString()); if (dgvTurnosAPagar.Rows[row.Index].Cells[3].Value.ToString() == "Turno") { turnoReporte.Add(turn); //Cargo una lista con los turnos a pagar. } else { if (dgvTurnosAPagar.Rows[row.Index].Cells[3].Value.ToString() == "SobreTurno") { sobreTurnosReporte.Add(sobreTarna); } } } List<clsRecibo> listaRecibos = new List<clsRecibo>(); clsRecibo recibo = new clsRecibo(); clsObraSocial obrita = new clsObraSocial(); clsEspecialidad especiali = new clsEspecialidad(); clsMedico med = new clsMedico(); //Creo la lista de recibos para turnos foreach (clsTurno turnito in turnoReporte) { recibo.IdFactura = reposFac.ultimoId().Id + 1; //METODO QUE ME TRAE EL ULTIMO ID DE FACTURA recibo.IdTurno = turnito.Id; recibo.IdSobreTurno = null; //SI TIENE TURNO, SOBRE TURNO ES NULL. recibo.Fecha = turnito.Fecha; List<clsObraXMedico> obrasDelMed = new List<clsObraXMedico>(); obrasDelMed = reposObraPorMed.TodasObras(turnito.IdMedico); //TRAIGO TODAS LAS OBRAS DEL MEDICO. foreach (clsObraXMedico obritaDelMedico in obrasDelMed) { if (PacienteActual.ObraSocial != null) //PREGUNTO SI EL PACIENTE TIENE OBRA SOCIAL. { if (reposObra.buscarPorId(obritaDelMedico.IdObra).Nombre == PacienteActual.ObraSocial) { obrita = reposObra.BuscarPorNombre(PacienteActual.ObraSocial); //METODO QUE ME RETORNA LA OBRA POR EL NOMBRE. recibo.Cobertura += obrita.Monto; totalDescuento += obrita.Monto; } } else { recibo.Cobertura = null; //SI NO TIENE OBRA SOCIAL, NO TIENE COBERTURA. } } //CARGO EL MONTO DE LA CONSULTA. clsTurno t = new clsTurno(); //Variable auxiliar de turno, es el turno en el que estoy ahora. t = reposTurno.buscarPorId(turnito.Id); //Le asigno todos sus valores propios. string es = reposMedico.buscarPorId(t.IdMedico).Especialidad; //le asigno a "es" la especialidad del medico de este turno especiali = reposEspe.BuscarPorNombre(es); //busco todos los datos de esa especialidad por su nombre recibo.Importe = especiali.Canon; //Cargo el importe con el valor de la especialidad. recibo.Detalle = es; listaRecibosAInsertar.Add(recibo); //Lista de recibos para ser dados de alta idsDeTurnosAActualizar.Add(turnito.Id); //Lista de turnos para ser actualizadps. } //Creo la lista de recibos para sobreturnos foreach (clsSobreturno sobrTurnito in sobreTurnosReporte) { recibo.IdFactura = reposFac.ultimoId().Id + 1; //METODO QUE ME TRAE EL ULTIMO ID DE FACTURA recibo.IdTurno = null; //SI TIENE SOBRETURNO, TURNO ES NULL. recibo.IdSobreTurno = sobrTurnito.Id; recibo.Fecha = sobrTurnito.Fecha; List<clsObraXMedico> obrasDelMed = new List<clsObraXMedico>(); obrasDelMed = reposObraPorMed.TodasObras(sobrTurnito.IdMedico); //TRAIGO TODAS LAS OBRAS DEL MEDICO. foreach (clsObraXMedico obritaDelMedico in obrasDelMed) { if (PacienteActual.ObraSocial != null) //PREGUNTO SI EL PACIENTE TIENE OBRA SOCIAL. { if (reposObra.buscarPorId(obritaDelMedico.IdObra).Nombre == PacienteActual.ObraSocial) { obrita = reposObra.BuscarPorNombre(PacienteActual.ObraSocial); //METODO QUE ME RETORNA LA OBRA POR EL NOMBRE. recibo.Cobertura += obrita.Monto; totalDescuento += obrita.Monto; } } else { recibo.Cobertura = null; //SI NO TIENE OBRA SOCIAL, NO TIENE COBERTURA. } } //CARGO EL MONTO DE LA CONSULTA. clsSobreturno t = new clsSobreturno(); //Variable auxiliar de turno, es el turno en el que estoy ahora. t = reposSobreTurno.buscarPorId(sobrTurnito.IdMedico); //Le asigno todos sus valores propios. string es = reposMedico.buscarPorId(t.Id).Especialidad; //le asigno a "es" la especialidad del medico de este turno especiali = reposEspe.BuscarPorNombre(es); //busco todos los datos de esa especialidad por su nombre recibo.Importe = especiali.Canon; //Cargo el importe con el valor de la especialidad. recibo.Detalle = es; listaRecibosAInsertar.Add(recibo); //Lista de recibos para ser dados de alta reposSobreTurno.ActualizarAsistencia(sobrTurnito.Id); //Lista de id de sobre turnos a ser actualizado. } clsClinica clini = new clsClinica(); Factura.Cuitcliente = tbCuit.Text; Factura.NumeroFactura = reposFac.ultimoId().Id + 1; Factura.TipoFactura = "A"; //Traigo los datos de mi clinica para signarle los datos. clini = reposClinica.Todo(1); Factura.RazonSocial = clini.RazonSocial; Factura.Terminal = usuario.Id; Factura.Total = total; Factura.Fecha = DateTime.Now; Factura.IdUsuario = usuario.Id; Factura.Cliente = tbCliente.Text; Factura.PagoEfectivo = float.Parse(tbCantidadEfectivo.Text); Factura.PagoTarjeta = float.Parse(tbCantidadTarjeta.Text); reposFac.Alta(Factura); //INSERTO TODOS LOS RECIBOS foreach (clsRecibo re in listaRecibosAInsertar) { reposRecibo.Alta(re); } //ACTUALIZO TODOS LOS TURNOS A TRUE foreach (int idT in idsDeTurnosAActualizar) { reposTurno.ActualizarAsistencia(idT); } //ACTUALIZO TODOS LOS SOBRETURNOS A TRUE foreach (int idST in idsDeSobreTurnosAActualizar) { reposSobreTurno.ActualizarAsistencia(idST); } MessageBox.Show("La Factura fue creada con éxito junto con los Recibos"); if (dgvTurnosAPagar.Rows.Count > 0) dgvTurnosAPagar.Rows.Clear(); tbCuit.Clear(); tbCliente.Clear(); tbDireccion.Clear(); tbCantidadTarjeta.Text = "0"; tbCantidadEfectivo.Text = "0"; total = 0; totalDescuento = 0; lblTotal.Text = "0"; lblDescuento.Text = "0"; /* crPagos pago = new crPagos(); pago.SetDataSource(dataSetDatos.Tables[0]); pago.SetParameterValue("Fecha", DateTime.Now); pago.SetParameterValue("Cliente", tbCliente.Text); pago.SetParameterValue("Domicilio", tbDireccion.Text); pago.SetParameterValue("CUIT", tbCuit.Text); frmView frmV = new frmView(pago); frmV.ShowDialog(); */ } else if (cbTipoFactura.Text == "B") { //ACA VA TODO PARA LA FACTURA B } else { MessageBox.Show("Debe seleccionar un tipo de factura.", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("El monto ingresado excede el total a pagar.", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("El monto a pagar en tarjeta debe ser €0 o mayor a €100", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Complete los campos para continuar.", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
public clsClinica Todo(int pag) { DataTable tabla= new DataTable(); clsClinica cl = new clsClinica(); try { tabla = manejaclinica.Todo(pag); foreach (DataRow aux in tabla.Rows) { cl.FechaInicioActividades = Convert.ToDateTime(aux["fia"]); cl.Cuit=aux["cuit"].ToString(); cl.IngresosBrutos = Convert.ToDouble(aux["iibb"]); cl.NombreFantasia = aux["nombrefantasia"].ToString(); cl.RazonSocial = aux["razonsocial"].ToString(); cl.DomicilioComercial=aux["domiciliocom"].ToString(); cl.DomicilioFiscal = aux["domiciliofisc"].ToString(); } } catch (SqlException ex) { throw ex; } catch (Exception ex) { throw ex; } return cl; }