예제 #1
0
        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);

                }
            }


        }
예제 #2
0
        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;

        }