/// <summary> /// Obtener los cartuchos de una carga de un ATM. /// </summary> /// <param name="a">Parámetro que indica si se mostrarán los cartuchos anulados</param> /// <param name="c">Objeto CargaATM con los datos de la carga</param> public void obtenerCartuchosCargaATM(ref CargaATM c, bool a) { SqlCommand comando = _manejador.obtenerProcedimiento("SelectCartuchosCargaATM"); SqlDataReader datareader = null; _manejador.agregarParametro(comando, "@anulado", a, SqlDbType.Bit); _manejador.agregarParametro(comando, "@carga", c, SqlDbType.Int); try { datareader = _manejador.ejecutarConsultaDatos(comando); while (datareader.Read()) { int id_cartucho_carga = (int)datareader["ID_Cartucho_Carga"]; short cantidad_asignada = (short)datareader["Cantidad_Asignada"]; short cantidad_carga = (short)datareader["Cantidad_Carga"]; short cantidad_descarga = (short)datareader["Cantidad_Descarga"]; string marchamo = datareader["Marchamo"] as string; bool anulado = (bool)datareader["Anulado"]; byte id_denominacion = (byte)datareader["ID_Denominacion"]; decimal valor = (decimal)datareader["Valor"]; Monedas moneda = (Monedas)datareader["Moneda"]; string codigo = (string)datareader["Codigo"]; string configuracion_diebold = (string)datareader["Configuracion_Diebold"]; string configuracion_opteva = (string)datareader["Configuracion_Opteva"]; byte? id_imagen = datareader["ID_Imagen"] as byte?; Denominacion denominacion = new Denominacion(id: id_denominacion, valor: valor, moneda: moneda, codigo: codigo, id_imagen: id_imagen, configuracion_diebold: configuracion_diebold, configuracion_opteva: configuracion_opteva); Cartucho cartucho = null; if (datareader["ID_Cartucho"] != DBNull.Value) { int id_cartucho = (int)datareader["ID_Cartucho"]; string numero = (string)datareader["Numero"]; TiposCartucho tipo = (TiposCartucho)datareader["Tipo"]; cartucho = new Cartucho(numero, id: id_cartucho, denominacion: denominacion, tipo: tipo); } CartuchoCargaATM cartucho_carga = new CartuchoCargaATM(denominacion, id: id_cartucho_carga, marchamo: marchamo, movimiento: c, cantidad_descarga: cantidad_descarga, cantidad_carga: cantidad_carga, cantidad_asignada: cantidad_asignada, cartucho: cartucho, anulado: anulado); c.agregarCartucho(cartucho_carga); } comando.Connection.Close(); } catch (Exception) { comando.Connection.Close(); throw new Excepcion("ErrorDatosConexion"); } }
/// <summary> /// Asignar los cartuchos de una carga y determinar si el monto erra correcto. /// </summary> private void asignarCartuchos(Celda celda_monto, ref CargaATM carga) { decimal monto = 0; if ((decimal.TryParse(celda_monto.Valor, out monto) && monto > 0)) { Denominacion denominacion = _denominaciones[celda_monto.Columna]; short cantidad_total = (short)Math.Ceiling(monto / denominacion.Valor); double numero_cartuchos = (double)cantidad_total / (double)denominacion.Formulas_maximas; int cantidad_cartuchos = (int)Math.Ceiling(numero_cartuchos); short cantidad_cartucho = (short)(cantidad_total / cantidad_cartuchos); cantidad_cartucho = (short)(100 * (int)Math.Ceiling((decimal)(cantidad_cartucho / 100))); for (int contador = 0; contador < cantidad_cartuchos; contador++) { CartuchoCargaATM cartucho = new CartuchoCargaATM(movimiento: carga, cantidad_asignada: cantidad_cartucho, denominacion: denominacion); carga.agregarCartucho(cartucho); } switch (denominacion.Moneda) { case Monedas.Colones: carga.Monto_pedido_colones += monto; break; case Monedas.Dolares: carga.Monto_pedido_dolares += monto; break; } } }
/// <summary> /// Leer el monto solicitado para un cartucho. /// </summary> private void leerMonto(Celda celda_monto, ref CargaATM carga) { decimal total = 0; if ((decimal.TryParse(celda_monto.Valor, out total) && total > 0)) { Denominacion denominacion = _denominaciones[celda_monto.Columna]; short cantidad = (short)(total / denominacion.Valor); CartuchoCargaATM cartucho = new CartuchoCargaATM(movimiento: carga, cantidad_asignada: cantidad, denominacion: denominacion); carga.agregarCartucho(cartucho); } }