public static Precio CalcularDescuento(Precio p) { bool sobreResto = GetSobreResto(); if (sobreResto) { p.Importe = p.Pvp - ((p.Pvp * p.Dto1) / 100M); p.Importe = p.Importe - ((p.Importe * p.Dto2) / 100M); } else { p.Importe = p.Pvp - ((p.Pvp * (p.Dto1 + p.Dto2)) / 100M); } return p; }
public static Precio GetPrecioTarifas(Articulo a, Cliente c) { Precio precio = new Precio(); bool dtoPermi = false; precio.Origen = "TARIFAS"; using (MySqlConnection conn = GetConnection()) { conn.Open(); MySqlCommand cmd = conn.CreateCommand(); string sql = @"SELECT dtopermi AS DTOPERMI, precioac AS PRECIOAC FROM slista WHERE codlista = {0} AND codartic = '{1}'; "; sql = String.Format(sql, c.CodTarif, a.CodArtic); cmd.CommandText = sql; MySqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); precio.Pvp = rdr.GetDecimal("PRECIOAC"); dtoPermi = rdr.GetBoolean("DTOPERMI"); } conn.Close(); } using (MySqlConnection conn = GetConnection()) { conn.Open(); MySqlCommand cmd = conn.CreateCommand(); string sql = @"SELECT dtopermi AS DTOPERMI, precionu AS PRECIONU FROM slista WHERE codlista = {0} AND codartic = '{1}' AND (fechanue <= '{2:yyyy-MM-dd}'); "; sql = String.Format(sql, c.CodTarif, a.CodArtic, DateTime.Now); cmd.CommandText = sql; MySqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); precio.Pvp = rdr.GetDecimal("PRECIONU"); dtoPermi = rdr.GetBoolean("DTOPERMI"); } conn.Close(); } if (precio.Pvp != 0 && dtoPermi) { // calcular los descuentos precio = GetDescuento(a, c, precio); } precio = CalcularDescuento(precio); return precio; }
public static Precio GetPrecioEspeciales(Articulo a, Cliente c) { Precio precio = new Precio(); bool dtoPermi = false; precio.Origen = "ESPECIAL"; using (MySqlConnection conn = GetConnection()) { conn.Open(); MySqlCommand cmd = conn.CreateCommand(); string sql = @"SELECT dtopermi AS DTOPERMI, precioac AS PRECIOAC, dtoespec AS DTOESPEC FROM sprees WHERE codclien = {0} AND codartic = '{1}'; "; sql = String.Format(sql, c.CodClien, a.CodArtic); cmd.CommandText = sql; MySqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); precio.Pvp = rdr.GetDecimal("PRECIOAC"); dtoPermi = rdr.GetBoolean("DTOPERMI"); if (!rdr.IsDBNull(rdr.GetOrdinal("DTOESPEC"))) precio.Dto1 = rdr.GetDecimal("DTOESPEC"); } conn.Close(); } using (MySqlConnection conn = GetConnection()) { conn.Open(); MySqlCommand cmd = conn.CreateCommand(); string sql = @"SELECT dtopermi AS DTOPERMI, precionu AS PRECIONU, dtoespe1 AS DTOESPE1 FROM sprees WHERE codclien = {0} AND codartic = '{1}' AND (fechanue <= '{2:yyyy-MM-dd}'); "; sql = String.Format(sql, c.CodClien, a.CodArtic, DateTime.Now); cmd.CommandText = sql; MySqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); precio.Pvp = rdr.GetDecimal("PRECIONU"); dtoPermi = rdr.GetBoolean("DTOPERMI"); if (!rdr.IsDBNull(rdr.GetOrdinal("DTOESPE1"))) precio.Dto1 = rdr.GetDecimal("DTOESPE1"); } conn.Close(); } if (precio.Pvp != 0 && dtoPermi && precio.Dto1 == 0) { // calcular los descuentos precio = GetDescuento(a, c, precio); } precio = CalcularDescuento(precio); return precio; }
public static Precio GetPrecioArticulo(Articulo a, Cliente c) { Precio precio = new Precio(); precio.Origen = "ARTICULO"; precio.Pvp = a.Preciove; //precio = GetDescuento(a, c, precio); precio = CalcularDescuento(precio); return precio; }
public static Precio GetPrecio(Articulo a, Cliente c) { Precio precio = new Precio(); bool precioMinimo = GetPrecioMinimo(); if (!precioMinimo) { precio = GetPrecioPromocion(a, c); if (precio.Pvp != 0) return precio; precio = GetPrecioEspeciales(a, c); if (precio.Pvp != 0) return precio; precio = GetPrecioTarifas(a, c); if (precio.Pvp != 0) return precio; precio = GetPrecioArticulo(a, c); } else { Precio pAux = new Precio(); pAux.Importe = 9999999; pAux.Origen = "ERROR"; precio = GetPrecioPromocion(a, c); if (precio.Importe != 0 && precio.Importe < pAux.Importe) pAux = precio; precio = GetPrecioEspeciales(a, c); if (precio.Importe != 0 && precio.Importe < pAux.Importe) pAux = precio; precio = GetPrecioTarifas(a, c); if (precio.Importe != 0 && precio.Importe < pAux.Importe) pAux = precio; precio = GetPrecioArticulo(a, c); if (precio.Importe != 0 && precio.Importe < pAux.Importe) pAux = precio; precio = pAux; } return precio; }
public static Precio GetDescuentoCM(Articulo a, Cliente c, Precio p) { using (MySqlConnection conn = GetConnection()) { conn.Open(); MySqlCommand cmd = conn.CreateCommand(); string sql = @" SELECT dtoline1 AS DTOLINE1, dtoline2 AS DTOLINE2 FROM sdtofm WHERE codclien = {0} AND codmarca = {1} AND fechadto <= '{2:yyyy-MM-dd}'; "; sql = String.Format(sql, c.CodClien, a.CodMarca, DateTime.Now); cmd.CommandText = sql; MySqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); p.Dto1 = rdr.GetDecimal("DTOLINE1"); p.Dto2 = rdr.GetDecimal("DTOLINE2"); } conn.Close(); } return p; }
public static Precio GetDescuento(Articulo a, Cliente c, Precio p) { // segun cliente p = GetDescuentoCFM(a, c, p); if (p.Dto1 > 0) return p; p = GetDescuentoCF(a, c, p); if (p.Dto1 > 0) return p; p = GetDescuentoCM(a, c, p); if (p.Dto1 > 0) return p; // segun actividad p = GetDescuentoAFM(a, c, p); if (p.Dto1 > 0) return p; p = GetDescuentoAF(a, c, p); if (p.Dto1 > 0) return p; p = GetDescuentoAM(a, c, p); if (p.Dto1 > 0) return p; return p; }