예제 #1
0
        public void CalcularUltimoPrecio(List <Articulos> listArt)
        {
            try
            {
                List <Articulo_Costo> artCostList = new List <Articulo_Costo>();
                PoliticasInternasAdap pAdap       = new PoliticasInternasAdap();
                double porcentaje_general         = pAdap.GetPorcentaje_Mantenimiento();
                this.OpenConnection();

                //ACUMULADOS
                NpgsqlCommand cmdSel = new NpgsqlCommand(" select SUM(cant_comprada) as cant_acum,SUM(costo_unitario*cant_comprada) as cost_acum,id_articulo " +
                                                         " from articulos_costos group by id_articulo", npgsqlConn);
                NpgsqlDataReader drHerramientas = cmdSel.ExecuteReader();

                while (drHerramientas.Read())
                {
                    Articulo_Costo art = new Articulo_Costo();
                    art.ID = (string)drHerramientas["id_articulo"];
                    art.Cantidad_acumulada  = Convert.ToInt32((long)drHerramientas["cant_acum"]);
                    art.Costo_total_sin_rep = Convert.ToDouble((double)drHerramientas["cost_acum"]);


                    artCostList.Add(art);
                }
                drHerramientas.Close();

                //VALORES ACTUALES para calcular precio sin recuperacion
                NpgsqlCommand cmdSel2 = new NpgsqlCommand(" select MAX(fecha) as fecha,costo_unitario ,cant_comprada,id_articulo " +
                                                          " from articulos_costos group by costo_unitario,cant_comprada, id_articulo", npgsqlConn);

                NpgsqlDataReader drHerramientas2 = cmdSel2.ExecuteReader();

                while (drHerramientas2.Read())
                {
                    foreach (Articulo_Costo ac in artCostList)
                    {
                        if (ac.ID == (string)drHerramientas2["id_articulo"])
                        {
                            try
                            {
                                ac.Fecha          = (DateTime)drHerramientas2["fecha"];
                                ac.Costo_unitario = (double)drHerramientas2["costo_unitario"];
                                ac.Cantidad       = (int)drHerramientas2["cant_comprada"];
                            }
                            catch { }
                        }
                    }
                }
                drHerramientas2.Close();

                //Obtengo el costode recuperacion
                NpgsqlCommand cmdSel3 = new NpgsqlCommand(" select MAX(fecha) as fecha,costo_reposicion,id_articulo " +
                                                          " from articulos_costos where costo_reposicion is not null group by costo_reposicion, id_articulo order by fecha ", npgsqlConn);
                NpgsqlDataReader drHerramientas3 = cmdSel3.ExecuteReader();

                while (drHerramientas3.Read())
                {
                    foreach (Articulo_Costo ac in artCostList)
                    {
                        if (ac.ID == (string)drHerramientas3["id_articulo"])
                        {
                            ac.Fecha            = (DateTime)drHerramientas3["fecha"];
                            ac.Costo_reposicion = (double)drHerramientas3["costo_reposicion"];
                        }
                    }
                }
                drHerramientas3.Close();

                //calculo del precio sin porcentaje de aumento

                List <Articulos> artListPrecio_Sin_porcentaje_de_ganancia = new List <Articulos> ();

                foreach (Articulo_Costo acc in artCostList)
                {
                    Articulos art = new Articulos();
                    art.ID = acc.ID;
                    if (acc.Costo_reposicion == 0)
                    {
                        art.Precio = acc.C_U_P_P;
                    }
                    else
                    {
                        if (acc.C_U_P_P > acc.Costo_reposicion)
                        {
                            art.Precio = acc.C_U_P_P;
                        }
                        else
                        {
                            art.Precio = acc.Costo_reposicion;
                        }
                    }
                    artListPrecio_Sin_porcentaje_de_ganancia.Add(art);
                }

                // calculo del precio final
                foreach (Articulos a in listArt)
                {
                    foreach (Articulos aa in artListPrecio_Sin_porcentaje_de_ganancia)
                    {
                        if (a.ID == aa.ID)
                        {
                            a.Precio = aa.Precio + (aa.Precio * (porcentaje_general / 100));

                            a.Precio = a.Precio * (1 + (a.Porcentaje_ganancia / 100));

                            a.Precio = Math.Round(a.Precio, 2);
                        }
                    }
                }

                ArticuloAdap aAdap = new ArticuloAdap();
                aAdap.UpdatePrecio(listArt);
            }
            finally { CloseConnection(); }
        }
예제 #2
0
        public List <Articulo_Costo> GetUltimosPrecios(List <Articulos> listArt)
        {
            try
            {
                List <Articulo_Costo> artCostList = new List <Articulo_Costo>();
                PoliticasInternasAdap polAdap     = new PoliticasInternasAdap();
                double porcentaje_general         = polAdap.GetPorcentaje_Mantenimiento();
                this.OpenConnection();
                //ACUMULADOS
                NpgsqlCommand cmdSel = new NpgsqlCommand(" select SUM(cant_comprada) as cant_acum,SUM(costo_unitario*cant_comprada) as cost_acum,id_articulo " +
                                                         " from articulos_costos where numero_compra <> 'CR' group by id_articulo ", npgsqlConn);
                NpgsqlDataReader drHerramientas = cmdSel.ExecuteReader();
                while (drHerramientas.Read())
                {
                    Articulo_Costo art = new Articulo_Costo();
                    art.ID = (string)drHerramientas["id_articulo"];

                    art.Cantidad_acumulada = Convert.ToInt32((long)drHerramientas["cant_acum"]);
                    //if (art.Cantidad_acumulada == 0 && art.Orden_compra == "IA") art.Cantidad_acumulada = 1;
                    art.Costo_total_sin_rep = (double)drHerramientas["cost_acum"];
                    foreach (Articulos a in listArt)
                    {
                        if (a.ID == art.ID)
                        {
                            artCostList.Add(art);
                        }
                    }
                }
                drHerramientas.Close();

                //VALORES ACTUALES para calcular precio sin recuperacion///////////////////////////////////

                NpgsqlCommand cmdSel2 = new NpgsqlCommand(" select MAX(fecha) as fecha,costo_unitario ,cant_comprada,id_articulo " +
                                                          " from articulos_costos group by costo_unitario,cant_comprada, id_articulo ", npgsqlConn);
                NpgsqlDataReader drHerramientas2 = cmdSel2.ExecuteReader();

                while (drHerramientas2.Read())
                {
                    foreach (Articulo_Costo ac in artCostList)
                    {
                        if (ac.ID == (string)drHerramientas2["id_articulo"])
                        {
                            ac.Fecha          = (DateTime)drHerramientas2["fecha"];
                            ac.Costo_unitario = (double)drHerramientas2["costo_unitario"];
                            ac.Cantidad       = (int)drHerramientas2["cant_comprada"];
                            //          if (ac.Cantidad == 0 && ac.Orden_compra == "IA") ac.Cantidad = 1;
                        }
                    }
                }
                drHerramientas2.Close();

                // COSTO DE RECUPERACION
                NpgsqlCommand cmdSel3 = new NpgsqlCommand(" select MAX(fecha) as fecha,costo_reposicion,id_articulo " +
                                                          " from articulos_costos where costo_reposicion is not null group by costo_reposicion, id_articulo order by fecha ", npgsqlConn);
                NpgsqlDataReader drHerramientas3 = cmdSel3.ExecuteReader();

                while (drHerramientas3.Read())
                {
                    foreach (Articulo_Costo ac in artCostList)
                    {
                        if (ac.ID == (string)drHerramientas3["id_articulo"])
                        {
                            ac.Fecha            = (DateTime)drHerramientas3["fecha"];
                            ac.Costo_reposicion = (double)drHerramientas3["costo_reposicion"];
                        }
                    }
                }
                drHerramientas3.Close();

                //calculo del precio sin porcentaje de aumento



                foreach (Articulo_Costo acc in artCostList)
                {
                    if (acc.Costo_reposicion == 0)
                    {
                        //if (acc.C_U_P_P == 0) acc.Cantidad_acumulada = 1;
                        acc.Precio = acc.C_U_P_P;
                    }
                    else
                    {
                        if (acc.C_U_P_P > acc.Costo_reposicion)
                        {
                            acc.Precio = acc.C_U_P_P;
                        }
                        else
                        {
                            acc.Precio = acc.Costo_reposicion;
                        }
                    }
                }

                // calculo del precio final
                foreach (Articulos a in listArt)
                {
                    foreach (Articulo_Costo ac in artCostList)
                    {
                        if (a.ID == ac.ID)
                        {
                            ac.Precio = a.Precio + (a.Precio * (porcentaje_general / 100));
                            ac.Precio = ac.Precio + ((ac.Precio * (1 + a.Porcentaje_ganancia / 100)));
                            ac.Precio = Math.Round(ac.Precio, 2);
                            ac.Nombre = a.Nombre;
                            ac.Porcentaje_ganancia = a.Porcentaje_ganancia;
                        }
                    }
                }



                return(artCostList);
            }
            finally { CloseConnection(); }
        }