private static bool existeMejorPromocion(List <valoresMenores> productos, Decimal valorDescuento, List <PromocionFactura> promociones) { foreach (PromocionFactura promocion in promociones) { if ((promocion.tipo == "P" && promocion.agrupacion == 1) || (promocion.tipo == "C")) { if (promocion.aplicar) { if (PromocionFactura.existeRepetido(productos, promocion.menores)) { if (valorDescuento > promocion.valorDescuento) { promocion.aplicar = false; } else { return(true); } } } } else { foreach (PromocionGrupo grupo in promocion.grupo) { if (grupo.aplicar) { if (PromocionFactura.existeRepetido(productos, grupo.menores)) { if (valorDescuento > grupo.valorDescuento) { promocion.aplicar = false; } else { return(true); } } } } } } return(false); }
public static void setValoresPromociones(List <PromocionFactura> promociones, System.Windows.Forms.DataGridView grw_productos, decimal subtotalFactura) { foreach (PromocionFactura promocion in promociones) { if (promocion.tipo != "C") { if (promocion.agrupacion == 1) { int cAplican = promocion.contarProductos() / promocion.cantidad; if (cAplican > 0) { promocion.valorDescuento = promocion.getValorDescuento(cAplican, grw_productos, promocion.menores); if (!PromocionFactura.existeMejorPromocion(promocion.menores, promocion.valorDescuento, promociones)) { promocion.aplicar = true; } } } else { foreach (PromocionGrupo grupo in promocion.grupo) { int cAplican = promocion.contarProductos(grupo.menores) / promocion.cantidad; if (cAplican > 0) { promocion.valorDescuento = promocion.getValorDescuento(cAplican, grw_productos, grupo.menores); if (!PromocionFactura.existeMejorPromocion(grupo.menores, grupo.valorDescuento, promociones)) { promocion.aplicar = true; } } } } } else { if (promocion.seleccion == "F") { if (promocion.menores.Count >= promocion.cantidad) { promocion.valorDescuento = (subtotalFactura * promocion.descuento / 100); if (!PromocionFactura.existeMejorPromocion(promocion.menores, promocion.valorDescuento, promociones)) { promocion.aplicar = true; } } } else { if (promocion.aplicaComboProductos()) { promocion.unificarProductosCombo(); promocion.valorDescuento = promocion.getValorDescuentoCombo(grw_productos); if (!PromocionFactura.existeMejorPromocion(promocion.menores, promocion.valorDescuento, promociones)) { promocion.aplicar = true; } } } } } }