public List <Articulos> obtieneArticulos(long almacenId)
        {
            List <Modelos.Articulos> result = new List <Modelos.Articulos>();

            Modelos.Articulos ent;

            string sql =
                "SELECT ca.CLAVE_ARTICULO, a.articulo_id, a.NOMBRE, a.ESTATUS, a.COSTO_ULTIMA_COMPRA, " +
                "cc.almacen_id, cc.EXISTENCIA, cc.VALOR_TOTAL " +

                "from articulos a " +

                "left join CAPAS_COSTOS cc on (a.ARTICULO_ID = cc.ARTICULO_ID) " +

                "left join claves_articulos ca on (a.articulo_id = ca.ARTICULO_ID) " +

                "WHERE A.ESTATUS = 'A' AND CA.ROL_CLAVE_ART_ID = 17 and cc.almacen_Id = @almacenId " +

                "ORDER BY A.NOMBRE";

            // define conexion con la cadena de conexion
            using (var conn = this._conexionFB.getConexionFB())
            {
                // abre la conexion
                conn.Open();

                using (var cmd = new FbCommand())
                {
                    cmd.Connection = conn;

                    cmd.Parameters.AddWithValue("@almacenId", almacenId);

                    ManejoSql_FB res = Utilerias.EjecutaSQL(sql, cmd);

                    if (res.ok)
                    {
                        if (res.reader.HasRows)
                        {
                            while (res.reader.Read())
                            {
                                ent = new Modelos.Articulos();

                                ent.articuloId  = Convert.ToInt64(res.reader["ARTICULO_ID"]);
                                ent.cvearticulo = Convert.ToString(res.reader["CLAVE_ARTICULO"]);
                                ent.articulo    = Convert.ToString(res.reader["NOMBRE"]);
                                ent.estatus     = Convert.ToString(res.reader["ESTATUS"]);

                                // lista
                                if (res.reader["EXISTENCIA"] is DBNull)
                                {
                                    ent.costo = 0;
                                }
                                else
                                {
                                    if (res.reader["VALOR_TOTAL"] is DBNull)
                                    {
                                        ent.costo = 0;
                                    }
                                    else
                                    {
                                        decimal costo = 0;
                                        decimal exis  = Convert.ToDecimal(res.reader["EXISTENCIA"]);
                                        decimal valT  = Convert.ToDecimal(res.reader["VALOR_TOTAL"]);

                                        if (valT == 0)
                                        {
                                            ent.costo = costo;
                                        }
                                        else
                                        {
                                            costo = valT / exis;

                                            ent.costo = Math.Round(costo, 2);
                                        }
                                    }
                                }

                                result.Add(ent);
                            }
                        }
                    }
                    else
                    {
                        throw new Exception(res.numErr + ": " + res.descErr);
                    }

                    // cerrar el reader
                    res.reader.Close();
                }
            }

            return(result);
        }
        // guarda bitacora de cambios de precios
        public void guardaBitacora(List <Articulos> anteriores, List <Articulos> seleccionados, long resultado)
        {
            int rows = 0;
            MySqlTransaction trans;

            using (var conn = this._conexionMySQL.getConexionMySQL())
            {
                conn.Open();

                using (var cmd = new MySqlCommand())
                {
                    trans = conn.BeginTransaction();

                    try
                    {
                        cmd.Connection  = conn;
                        cmd.Transaction = trans;

                        // inserta los articulos
                        string sqlDet =
                            "INSERT INTO bitacora_det (id_bitacora, clave, prec_lista, prec_minimo, prec_mayoreo, prec_filial, prec_imss, medio_mayoreo) " +
                            "VALUES (@idBit, @clave, @precLista, @precMinimo, @precMayo, @precFilial, @precImss, @medioMayo)";

                        Modelos.Articulos ant;

                        foreach (Modelos.Articulos art in seleccionados)
                        {
                            ant = new Modelos.Articulos();
                            ant = anteriores.Where(w => w.clave.Equals(art.clave)).FirstOrDefault();

                            // define parametros
                            cmd.Parameters.AddWithValue("@idBit", resultado);
                            cmd.Parameters.AddWithValue("@clave", art.clave);

                            cmd.Parameters.AddWithValue("@precLista", ant.precLista != art.precLista ? ("A:" + ant.precLista + " => N:" + art.precLista) : "-");
                            cmd.Parameters.AddWithValue("@precMinimo", ant.precMinimo != art.precMinimo ? ("A:" + ant.precMinimo + " => N:" + art.precMinimo) : "-");
                            cmd.Parameters.AddWithValue("@precMayo", ant.precMayoreo != art.precMayoreo ? ("A:" + ant.precMayoreo + " => N:" + art.precMayoreo) : "-");
                            cmd.Parameters.AddWithValue("@precFilial", ant.precFilial != art.precFilial ? ("A:" + ant.precFilial + " => N:" + art.precFilial) : "-");
                            cmd.Parameters.AddWithValue("@precImss", ant.precIMSS != art.precIMSS ? ("A:" + ant.precIMSS + " => N:" + art.precIMSS) : "-");
                            cmd.Parameters.AddWithValue("@medioMayo", ant.medioMayoreo != art.medioMayoreo ? ("A:" + ant.medioMayoreo + " => N:" + art.medioMayoreo) : "-");

                            ManejoSql_My res = Utilerias.EjecutaSQL(sqlDet, ref rows, cmd);

                            if (!res.ok)
                            {
                                throw new Exception(res.numErr + ": " + res.descErr);
                            }

                            cmd.Parameters.Clear();
                        }

                        trans.Commit();
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        throw new Exception(e.Message);
                    }
                }
            }
        }
Пример #3
0
        // obtiene todos los articulos de microsip (FIREBIRD)
        public List <Articulos> obtieneArticulos(Dictionary <string, long> precEmpr)
        {
            List <Modelos.Articulos> result = new List <Modelos.Articulos>();

            Modelos.Articulos ent;

            string sql =
                "SELECT CA.CLAVE_ARTICULO, A.ARTICULO_ID, A.NOMBRE,  " +
                "LISTA.PRECIO AS LISTA, " +
                "MINIMO.PRECIO AS MINIMO, " +
                "MAYOREO.PRECIO AS MAYOREO, " +
                "FILIAL.PRECIO AS FILIAL, " +
                "IMSS.PRECIO AS IMSS, " +
                "MEDIO_MAYO.PRECIO AS MEDIO_MAYO " +

                "FROM CLAVES_ARTICULOS CA " +

                "LEFT JOIN ARTICULOS A ON (CA.ARTICULO_ID = A.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idLista) LISTA " +
                "ON (CA.ARTICULO_ID = LISTA.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idMinimo) MINIMO " +
                "ON (CA.ARTICULO_ID = MINIMO.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idMayoreo) MAYOREO " +
                "ON (CA.ARTICULO_ID = MAYOREO.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idFilial) FILIAL " +
                "ON (CA.ARTICULO_ID = FILIAL.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idImss) IMSS " +
                "ON (CA.ARTICULO_ID = IMSS.ARTICULO_ID) " +

                "LEFT JOIN " +
                "(SELECT ARTICULO_ID, PRECIO FROM PRECIOS_ARTICULOS WHERE PRECIO_EMPRESA_ID = @idMedioMayoreo) MEDIO_MAYO " +
                "ON (CA.ARTICULO_ID = MEDIO_MAYO.ARTICULO_ID) " +

                "WHERE A.ESTATUS = 'A' AND CA.ROL_CLAVE_ART_ID = 17 " +

                "ORDER BY A.NOMBRE";

            // define conexion con la cadena de conexion
            using (var conn = this._conexionFB.getConexionFB())
            {
                // abre la conexion
                conn.Open();

                using (var cmd = new FbCommand())
                {
                    cmd.Connection = conn;

                    // parametros
                    cmd.Parameters.AddWithValue("@idLista", precEmpr["precio de lista"]);
                    cmd.Parameters.AddWithValue("@idMinimo", precEmpr["precio mínimo"]);
                    cmd.Parameters.AddWithValue("@idMayoreo", precEmpr["prec.mayoreo"]);
                    cmd.Parameters.AddWithValue("@idFilial", precEmpr["prec.filial"]);
                    cmd.Parameters.AddWithValue("@idImss", precEmpr["prec.i.m.s.s."]);
                    cmd.Parameters.AddWithValue("@idMedioMayoreo", precEmpr["medio mayoreo"]);

                    ManejoSql_FB res = Utilerias.EjecutaSQL(sql, cmd);

                    if (res.ok)
                    {
                        if (res.reader.HasRows)
                        {
                            while (res.reader.Read())
                            {
                                ent = new Modelos.Articulos();

                                ent.idArticulo = Convert.ToInt64(res.reader["ARTICULO_ID"]);
                                ent.clave      = Convert.ToString(res.reader["CLAVE_ARTICULO"]);
                                ent.articulo   = Convert.ToString(res.reader["NOMBRE"]);

                                // lista
                                if (res.reader["LISTA"] is DBNull)
                                {
                                    ent.precLista = null;
                                }
                                else
                                {
                                    ent.precLista = Convert.ToDecimal(res.reader["LISTA"]);
                                }

                                // minimo
                                if (res.reader["MINIMO"] is DBNull)
                                {
                                    ent.precMinimo = null;
                                }
                                else
                                {
                                    ent.precMinimo = Convert.ToDecimal(res.reader["MINIMO"]);
                                }

                                // mayoreo
                                if (res.reader["MAYOREO"] is DBNull)
                                {
                                    ent.precMayoreo = null;
                                }
                                else
                                {
                                    ent.precMayoreo = Convert.ToDecimal(res.reader["MAYOREO"]);
                                }

                                // filial
                                if (res.reader["FILIAL"] is DBNull)
                                {
                                    ent.precFilial = null;
                                }
                                else
                                {
                                    ent.precFilial = Convert.ToDecimal(res.reader["FILIAL"]);
                                }

                                // imss
                                if (res.reader["IMSS"] is DBNull)
                                {
                                    ent.precIMSS = null;
                                }
                                else
                                {
                                    ent.precIMSS = Convert.ToDecimal(res.reader["IMSS"]);
                                }

                                // medio mayoreo
                                if (res.reader["MEDIO_MAYO"] is DBNull)
                                {
                                    ent.medioMayoreo = null;
                                }
                                else
                                {
                                    ent.medioMayoreo = Convert.ToDecimal(res.reader["MEDIO_MAYO"]);
                                }

                                result.Add(ent);
                            }
                        }
                    }
                    else
                    {
                        throw new Exception(res.numErr + ": " + res.descErr);
                    }

                    // cerrar el reader
                    res.reader.Close();
                }
            }

            return(result);
        }
        // regresa la lista de los articulos
        public List <Articulos> obtieneArticulos()
        {
            List <Articulos> result = new List <Articulos>();
            Articulos        ent;

            // string sql = "select idusuario, usuario from activos_usuarios where usuario = @usuario and clave = @clave";

            string sql =
                "select id_articulo, clave, nombre, " +
                "prec_lista, prec_minimo, prec_mayoreo, " +
                "prec_filial, prec_imss, medio_mayoreo " +
                "from articulos";

            // define conexion con la cadena de conexion
            using (var conn = this._conexionMySQL.getConexionMySQL())
            {
                // abre la conexion
                conn.Open();

                using (var cmd = new MySqlCommand())
                {
                    cmd.Connection = conn;

                    ManejoSql_My res = Utilerias.EjecutaSQL(sql, cmd);

                    if (res.ok)
                    {
                        while (res.reader.Read())
                        {
                            ent = new Modelos.Articulos();

                            ent.idArticulo = Convert.ToInt64(res.reader["id_articulo"]);
                            ent.articulo   = Convert.ToString(res.reader["nombre"]);
                            ent.clave      = Convert.ToString(res.reader["clave"]);

                            // lista
                            if (res.reader["prec_lista"] is DBNull)
                            {
                                ent.precLista = null;
                            }
                            else
                            {
                                ent.precLista = Convert.ToDecimal(Convert.ToString(res.reader["prec_lista"]).TrimEnd(new Char[] { '0' }));
                                //ent.precLista = Convert.ToDecimal(res.reader["prec_lista"]);
                            }

                            // minimo
                            if (res.reader["prec_minimo"] is DBNull)
                            {
                                ent.precMinimo = null;
                            }
                            else
                            {
                                ent.precMinimo = Convert.ToDecimal(Convert.ToString(res.reader["prec_minimo"]).TrimEnd(new Char[] { '0' }));
                                //ent.precMinimo = Convert.ToDecimal(res.reader["prec_minimo"]);
                            }

                            // mayoreo
                            if (res.reader["prec_mayoreo"] is DBNull)
                            {
                                ent.precMayoreo = null;
                            }
                            else
                            {
                                ent.precMayoreo = Convert.ToDecimal(Convert.ToString(res.reader["prec_mayoreo"]).TrimEnd(new Char[] { '0' }));
                                //ent.precMayoreo = Convert.ToDecimal(res.reader["prec_mayoreo"]);
                            }

                            // filial
                            if (res.reader["prec_filial"] is DBNull)
                            {
                                ent.precFilial = null;
                            }
                            else
                            {
                                ent.precFilial = Convert.ToDecimal(Convert.ToString(res.reader["prec_filial"]).TrimEnd(new Char[] { '0' }));
                                //ent.precFilial = Convert.ToDecimal(res.reader["prec_filial"]);
                            }

                            // imss
                            if (res.reader["prec_imss"] is DBNull)
                            {
                                ent.precIMSS = null;
                            }
                            else
                            {
                                ent.precIMSS = Convert.ToDecimal(Convert.ToString(res.reader["prec_imss"]).TrimEnd(new Char[] { '0' }));
                                //ent.precIMSS = Convert.ToDecimal(res.reader["prec_imss"]);
                            }

                            // medio mayoreo
                            if (res.reader["medio_mayoreo"] is DBNull)
                            {
                                ent.medioMayoreo = null;
                            }
                            else
                            {
                                ent.medioMayoreo = Convert.ToDecimal(Convert.ToString(res.reader["medio_mayoreo"]).TrimEnd(new Char[] { '0' }));
                                //ent.medioMayoreo = Convert.ToDecimal(res.reader["medio_mayoreo"]);
                            }

                            result.Add(ent);
                        }
                    }
                    else
                    {
                        throw new Exception(res.numErr + ": " + res.descErr);
                    }

                    // cerrar el reader
                    res.reader.Close();
                }
            }

            return(result);
        }