示例#1
0
        /// <summary>
        /// Verifica la existencia de la instancia en la base de datos.
        /// </summary>
        /// <returns></returns>
        private bool ValidaMoneda()
        {
            string query =
                "SELECT * FROM c_monedas WHERE " +
                "descripcion = @Descripcion AND " +
                "simbolo = @Simbolo";

            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.descripcion);
            con.PasarParametros("Simbolo", this.simbolo);

            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            dr.Read();

            //Si existe una moneda con exactamente los mismos valores,
            //Se retorna verdadero.
            if (dr.HasRows)
            {
                dr.Close();
                return(true);
            }

            dr.Close();
            return(false);
        }
示例#2
0
        /// <summary>
        /// Registra el artículo y sus precios en la base de datos, con el estado de actividad indicado.
        /// </summary>
        /// <param name="articulo">Artículo a registrar.</param>
        /// <param name="activo">Activo o Inactivo.</param>
        /// <returns></returns>
        public bool RegistraDatosArticulo(bool activo)
        {
            //Si el artículo tiene id, es porque ya está registrado.
            if (this.Id != null)
            {
                return(true);
            }

            string query =
                "INSERT INTO c_articulos (descripcion,precioDolar,costoDolar,codBarras,activo) " +
                "VALUES( @Descripcion, @PrecioDolar, @CostoDolar, @CodBarras, @Activo )";
            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.Descripcion);
            con.PasarParametros("PrecioDolar", this.PrecioDolar);
            con.PasarParametros("CostoDolar", this.CostoDolar);
            con.PasarParametros("CodBarras", this.CodBarras);
            con.PasarParametros("Activo", activo);

            //Ejecuta el comando y verifica la cantidad de registros afectados
            if (con.EjecutarComando() > 0)
            {
                return(true);
            }

            //Si no hubo registros por alguna razón, arroja false
            return(false);
        }
        private void TxtBuscar_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
        {
            //Armar query de consulta
            string query =
                "SELECT " +
                "id," +
                "descripcion," +
                "precioDolar," +
                "costoDolar, " +
                "(SELECT precioRedondo FROM c_articulos_precios WHERE idTipoPago = 1 AND idArticulo = id) as precioPunto, " +
                "(SELECT precioRedondo FROM c_articulos_precios WHERE idTipoPago = 2 AND idArticulo = id) as precioEfect, " +
                "codBarras " +
                "FROM c_articulos " +
                "WHERE " +
                "descripcion like @Descripcion " +
                "OR " +
                "codBarras like @CodBarras " +
                "AND " +
                "activo = 1";
            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", "%" + this.txtBuscar.Text + "%");
            con.PasarParametros("CodBarras", "%" + this.txtBuscar.Text + "%");

            //Llenar datagrid con los datos consultados
            con.ConsultaSqlite(this.dataBuscados);
        }
示例#4
0
        /// <summary>
        /// Actualiza los datos de un artículo en los campos asociados al id.
        /// </summary>
        /// <param name="id">ID del artículo.</param>
        /// <param name="articulo">Instancia con datos a refrescar.</param>
        /// <returns></returns>
        public static void ActualizarDatosById(int id, Articulo articulo)
        {
            //Borrar artículo y precios de la BD
            string query =
                "DELETE FROM c_articulos WHERE id = @Id;" +
                "DELETE FROM c_articulos_precios WHERE idArticulo = @Id;";
            BDCon con = new BDCon(query);

            con.PasarParametros("Id", id);
            con.EjecutarComando();

            //Registrar de nuevo artículo de la BD, con el mismo id
            query =
                "INSERT INTO c_articulos (id,descripcion,precioDolar,costoDolar,codBarras,activo) " +
                "VALUES( @Id, @Descripcion, @PrecioDolar, @CostoDolar, @CodBarras, @Activo )";
            con = new BDCon(query);

            con.PasarParametros("Id", id);
            con.PasarParametros("Descripcion", articulo.Descripcion);
            con.PasarParametros("PrecioDolar", articulo.PrecioDolar);
            con.PasarParametros("CostoDolar", articulo.CostoDolar);
            con.PasarParametros("CodBarras", articulo.CodBarras);
            con.PasarParametros("Activo", true);

            //Registrar el artículo
            con.EjecutarComando();

            //Volver a registrar sus precios
            articulo.RegistraPreciosArticulo();
        }
示例#5
0
        /// <summary>
        /// Registrar instancia de moneda en la base de datos.
        /// </summary>
        /// <returns></returns>
        public bool RegistraMoneda()
        {
            //Si ya existe, no la creo y retorno true.
            if (ValidaMoneda())
            {
                return(true);
            }

            string query =
                "INSERT INTO c_monedas (descripcion,simbolo) " +
                "VALUES( @Descripcion, @Simbolo )";
            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.descripcion);
            con.PasarParametros("Simbolo", this.simbolo);

            //Ejecuta el comando y verifica la cantidad de registros afectados
            if (con.EjecutarComando() > 0)
            {
                return(true);
            }

            //Si no hubo registros por alguna razón, arroja false
            return(false);
        }
示例#6
0
        /// <summary>
        /// Actualiza los precios de los artículos según la tasa actual.
        /// </summary>
        public static void ActualizarPreciosBBDD()
        {
            //Armando consulta a BBDD.
            string           query = "SELECT * FROM c_articulos";
            BDCon            con   = new BDCon(query);
            SQLiteDataReader dr    = con.ComandoSqlite().ExecuteReader();

            #region Variables Auxiliares
            Articulo articulo;
            int      id;
            string   descripcion, codBarras;
            decimal  costoDolar, precioDolar;
            #endregion

            //Mientras hayan artículos leídos
            while (dr.Read())
            {
                //Obtengo valores para Artículo
                id          = Convert.ToInt32(dr["id"]);
                descripcion = (string)dr["descripcion"];
                codBarras   = (string)dr["codBarras"];
                precioDolar = Convert.ToDecimal(dr["precioDolar"]);
                costoDolar  = Convert.ToDecimal(dr["costoDolar"]);

                //Instanciar artículo y guardo sus datos en base de datos
                articulo = new Articulo(descripcion, costoDolar, precioDolar, codBarras);

                //Actualizar del artículo para refrescar su precio
                Articulo.ActualizarDatosById(id, articulo);
            }

            //Cierro para prevenir errores
            dr.Close();
        }
示例#7
0
        /// <summary>
        /// Verifica la existencia de la instancia en la base de datos. Retorna el id del artículo
        /// </summary>
        /// <returns></returns>
        private int?ValidaIdArticulo()
        {
            string query =
                "SELECT id FROM c_articulos WHERE " +
                "descripcion = @Descripcion AND " +
                "precioDolar = @PrecioDolar AND " +
                "costoDolar  = @CostoDolar  AND " +
                "codBarras   = @CodBarras";

            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.descripcion);
            con.PasarParametros("PrecioDolar", this.precioDolar);
            con.PasarParametros("CostoDolar", this.costoDolar);
            con.PasarParametros("CodBarras", this.codBarras);

            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            //Si existe un artículo con exactamente los mismos valores,
            //Se retorna el id.
            if (dr.Read())
            {
                int id = Convert.ToInt32(dr["id"]);
                dr.Close();
                return(id);
            }

            dr.Close();

            //Si no existe, retorno null para indicar inexistencia
            return(null);
        }
示例#8
0
        /// <summary>
        /// Devuelve una lista con los tipos de pago disponibles en la BBDD.
        /// </summary>
        /// <returns></returns>
        public static List <TipoPago> TiposDisponibles()
        {
            List <TipoPago> disponibles = new List <TipoPago>();
            TipoPago        pago;
            Moneda          moneda;

            string           query = "SELECT * FROM c_tipopagos";
            BDCon            con   = new BDCon(query);
            SQLiteDataReader dr    = con.ComandoSqlite().ExecuteReader();

            //Mientras haya registros disp. en la consulta.
            while (dr.Read())
            {
                //Obtengo instancia de la moneda asociada
                moneda = Moneda.MonedaById(Convert.ToInt32(dr["idMoneda"]));

                //Determino si aplica para descuento o no
                bool aplicaDescuento = false;
                if (Convert.ToInt32(dr["aplicaDescuento"]) == 1)
                {
                    aplicaDescuento = true;
                }

                //Obtengo instancia con la descripción y moneda asociada
                pago = new TipoPago((string)dr["descripcion"], moneda, aplicaDescuento);

                //Añado el pago a los disponibles
                disponibles.Add(pago);
            }

            //Cierro para prevenir errores.
            dr.Close();

            return(disponibles);
        }
示例#9
0
        /// <summary>
        /// Agregar unidades del artículo en el inventario. Si no existe en la BBDD, retorna false.
        /// </summary>
        /// <param name="cantidad">Cantidad a añadir.</param>
        /// <returns></returns>
        public bool AgregarInventario(int cantidad)
        {
            int?id = this.Id;

            //Si el artículo no tiene id, no se le pueden agregar unidades.
            if (id == null)
            {
                return(false);
            }

            string query =
                "INSERT INTO c_articulos (fechaHora, idArticulo, cantidad) " +
                "VALUES( @FechaHora, @IdArticulo, @Cantidad )";

            BDCon con = new BDCon(query);

            con.PasarParametros("FechaHora", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
            con.PasarParametros("IdArticulo", id);
            con.PasarParametros("IdArticulo", cantidad);

            //Ejecuta el comando y verifica la cantidad de registros afectados
            if (con.EjecutarComando() > 0)
            {
                return(true);
            }

            //Si no hubo registros por alguna razón, arroja false
            return(false);
        }
示例#10
0
        /// <summary>
        /// Registrar instancia de moneda en la base de datos.
        /// </summary>
        /// <returns></returns>
        public bool RegistraTipoPago()
        {
            //Si ya existe, no la creo y retorno true.
            if (ValidaTipoPago())
            {
                return(true);
            }

            string query =
                "INSERT INTO c_tipopagos (descripcion,idMoneda,aplicaDescuento) " +
                "VALUES( @Descripcion, @IdMoneda, @AplicaDescuento )";
            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.descripcion);
            con.PasarParametros("IdMoneda", this.moneda.Id);

            int aplicaDescuento = 0;

            if (this.aplicaDescuento == true)
            {
                aplicaDescuento = 1;
            }
            con.PasarParametros("AplicaDescuento", aplicaDescuento);

            //Ejecuta el comando y verifica la cantidad de registros afectados
            if (con.EjecutarComando() > 0)
            {
                return(true);
            }

            //Si no hubo registros por alguna razón, arroja false
            return(false);
        }
示例#11
0
        /// <summary>
        /// Verifica la existencia de la instancia en la base de datos.
        /// </summary>
        /// <returns></returns>
        private bool ValidaTipoPago()
        {
            string query =
                "SELECT * FROM c_tipopagos WHERE " +
                "descripcion = @Descripcion AND " +
                "idMoneda = @IdMoneda";

            BDCon con = new BDCon(query);

            con.PasarParametros("Descripcion", this.descripcion);
            con.PasarParametros("IdMoneda", this.moneda.Id);

            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            dr.Read();

            //Si existe un tipo de pago con exactamente los mismos valores,
            //Se retorna verdadero.
            if (dr.HasRows)
            {
                dr.Close();
                return(true);
            }

            dr.Close();
            return(false);
        }
示例#12
0
        /// <summary>
        /// Verifica la existencia de la tasa en la base de datos.
        /// </summary>
        /// <returns></returns>
        private bool ValidarTasa()
        {
            string query =
                "SELECT * FROM c_tasa WHERE " +
                "tasaDolar = @TasaDolar AND " +
                "porcentajeEfectivo = @PorcentajeEfectivo AND " +
                "fecha = @Fecha AND " +
                "hora = @Hora";

            BDCon con = new BDCon(query);

            con.PasarParametros("TasaDolar", tasaDolar);
            con.PasarParametros("PorcentajeEfectivo", porcentajeEfect);
            con.PasarParametros("Fecha", fecha);
            con.PasarParametros("Hora", hora);

            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            dr.Read();

            //Si existe una tasa con exactamente los mismos valores,
            //Se retorna verdadero.
            if (dr.HasRows)
            {
                dr.Close();
                return(true);
            }

            dr.Close();
            return(false);
        }
        public void CodigoTest()
        {
            BDCon con = new BDCon("SELECT @Efectivo as tipopago, @Monto as monto FROM c_tasa");

            con.PasarParametros("Efectivo", "Aaacaa");
            con.PasarParametros("Monto", "Bbbbbcb");

            con.ConsultaSqlite(dgVentas);
            con.ConsultaSqlite(listIngresosMonedas);
        }
示例#14
0
        /// <summary>
        /// Consultar la última tasa registrada.
        /// </summary>
        /// <returns>Última tasa registrada.</returns>
        public static Tasa ConsultarTasa()
        {
            string query =
                "SELECT * FROM c_tasa ORDER BY id DESC LIMIT 1";

            BDCon            con = new BDCon(query);
            SQLiteDataReader dr  = con.ComandoSqlite().ExecuteReader();

            dr.Read();

            Tasa tasa =
                new Tasa(
                    Convert.ToDecimal(dr["tasaDolar"]),
                    Convert.ToDecimal(dr["porcentajeEfectivo"]),
                    Convert.ToString(dr["fecha"]),
                    Convert.ToString(dr["hora"]));

            dr.Close();

            return(tasa);
        }
示例#15
0
        /// <summary>
        /// Registra la instancia en la base de datos.
        /// </summary>
        /// <returns>Verdadero si logra hacer el registro</returns>
        public bool RegistrarTasa()
        {
            string query =
                "INSERT INTO c_tasa (tasaDolar,porcentajeEfectivo,fecha,hora) " +
                "VALUES( @TasaDolar, @PorcentajeEfectivo, @Fecha, @Hora )";
            BDCon con = new BDCon(query);

            con.PasarParametros("TasaDolar", tasaDolar);
            con.PasarParametros("PorcentajeEfectivo", porcentajeEfect);
            con.PasarParametros("Fecha", fecha);
            con.PasarParametros("Hora", hora);

            //Ejecuta el comando y verifica la cantidad de registros afectados
            if (con.EjecutarComando() > 0)
            {
                return(true);
            }

            //Si no hubo registros por alguna razón, arroja false
            return(false);
        }
示例#16
0
        /// <summary>
        /// Registra los precios asociados al artículo en la base de datos.
        /// </summary>
        /// <param name="articulo">Artículo con precios inicializados.</param>
        /// <returns></returns>
        public void RegistraPreciosArticulo()
        {
            //Si el artículo no tiene id, entonces no ha sido registrado.
            int?id = this.Id;

            if (id == null)
            {
                //Retorno, indicando que no se pueden registrar sus precios.
                return;
            }

            decimal[]  preciosRedondos   = this.PreciosRedondos.ToArray();
            decimal[]  preciosCalculados = this.PreciosCalculados.ToArray();
            TipoPago[] tiposPago         = this.TiposDePago.ToArray();

            #region Variables auxiliares
            string query;
            BDCon  con;
            #endregion

            for (int i = 0; i < preciosRedondos.Length; i++)
            {
                //Construyo el query
                query =
                    "INSERT INTO c_articulos_precios (idArticulo,idTipoPago,precioCalculado,precioRedondo) " +
                    "VALUES( @IdArticulo, @IdTipoPago, @PrecioCalculado, @PrecioRedondo )";
                con = new BDCon(query);

                //Id del artículo
                con.PasarParametros("IdArticulo", id);
                //Id del tipo de pago de turno en el ciclo
                con.PasarParametros("IdTipoPago", tiposPago[i].Id);
                //Precios correspondientes que se asociaron al tipo de pago en cuestión
                con.PasarParametros("PrecioCalculado", preciosCalculados[i]);
                con.PasarParametros("PrecioRedondo", preciosRedondos[i]);

                //Ejecuto el comando
                con.EjecutarComando();
            }
        }
示例#17
0
        /// <summary>
        /// Devuelve instancia de moneda dado un id de la BBDD. Si no existe, retorna null.
        /// </summary>
        /// <param name="id">Id de la moneda</param>
        /// <returns></returns>
        public static Moneda MonedaById(int id)
        {
            Moneda moneda = null;

            //Construyo la consulta
            string query = "SELECT * FROM c_monedas WHERE id = @Id";
            BDCon  con   = new BDCon(query);

            con.PasarParametros("Id", id);
            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            //Si existe el objeto consultado, lo instancio
            if (dr.Read())
            {
                moneda = new Moneda((string)dr["descripcion"], (string)dr["simbolo"]);
            }

            //Cierro para prevenir errores
            dr.Close();

            return(moneda);
        }
示例#18
0
        /// <summary>
        /// Consulta si un artículo está activo o inactivo.
        /// </summary>
        /// <param name="id">Id del artículo a consultar</param>
        /// <returns></returns>
        public static bool ActivoById(int id)
        {
            //Construyendo consulta
            string query =
                "SELECT * FROM c_articulos WHERE id = @Id AND activo = 1";
            BDCon con = new BDCon(query);

            con.PasarParametros("Id", id);
            SQLiteDataReader dr = con.ComandoSqlite().ExecuteReader();

            dr.Read();

            //Si existe un artículo activo con dicha Id,
            //Se retorna verdadero.
            if (dr.HasRows)
            {
                dr.Close();
                return(true);
            }

            dr.Close();
            return(false);
        }