public double abonar(double abono, int idCredito) { try { if (conexion.State != ConnectionState.Open) { conexion.Open(); } double montoCredito = obtenerMonto(idCredito); double saldo = montoCredito - abono; DAO_Factura daoFactura = new DAO_Factura(); List <DO_Factura> listaFacturas = new List <DO_Factura>(); listaFacturas = daoFactura.obtenerFacturasCredito(idCredito); for (int i = 0; i < listaFacturas.Count; i++) { double result = listaFacturas[i].saldo - abono; if (result <= 0) { abono = abono - listaFacturas[i].saldo; daoFactura.actualizarSaldoFactura(listaFacturas[i], listaFacturas[i].saldo); // Cuando sobra del abono para que quede un saldo de 0 } else { daoFactura.actualizarSaldoFactura(listaFacturas[i], abono); registrarAbono(idCredito, abono); i = listaFacturas.Count; saldo = 0; } } actualizarMontoCredito(idCredito); return(saldo); } catch (SqlException) { return(0); } finally { if (conexion.State != ConnectionState.Closed) { conexion.Close(); } } }
public DO_Credito ObtenerCredito(int idCliente, DateTime desde, DateTime hasta) { SqlCommand consultaCredito = new SqlCommand("select * from CREDITO where CRE_IDENTIFICADOR = @idCliente", conexion); consultaCredito.Parameters.AddWithValue("@idCliente", idCliente); DO_Credito credito = new DO_Credito(); credito.listaFactura = new List <DO_Factura>(); try { if (conexion.State != ConnectionState.Open) { conexion.Open(); } SqlDataReader lector = consultaCredito.ExecuteReader(); if (lector.HasRows) { while (lector.Read()) { credito.identificador = Convert.ToInt32(lector["CRE_IDENTIFICADOR"]); credito.limiteCredito = Convert.ToInt32(lector["CRED_LIMITE_CREDITO"]); credito.monto = Convert.ToInt32(lector["CRED_MONTO"]); } DAO_Factura daoFactura = new DAO_Factura(); credito.listaFactura = daoFactura.obtenerFacturasCredito(idCliente, desde, hasta); return(credito); } } catch (SqlException) { return(null); } finally { if (conexion.State != ConnectionState.Closed) { conexion.Close(); } } return(null); }