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(); } }
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(); } }