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