> ## Documentation Index
> Fetch the complete documentation index at: https://docs.checkoutrules.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ramificación (if else)

> Aprende cómo crear y usar una estructura de regla if, else if, else para manejar múltiples condiciones en tus reglas.

<iframe className="w-full aspect-video rounded-xl" src="https://www.youtube.com/embed/E_ufsYrU5ko?si=dSTtPQSFtjcxzl3y" title="BeSure Ramificaciones" style={{ border: 0 }} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## Visión general

Usualmente cuando una regla tiene más de un bloque, entonces cada bloque se ejecuta en secuencia de arriba hacia abajo, y si las condiciones para cualquier bloque se cumplen, entonces las acciones para ese bloque se ejecutan. Así, cada regla puede tener múltiples acciones. Pero algunas veces no queremos este comportamiento, solo queremos que un bloque se ejecute y luego la regla debe detenerse. Aquí es donde entra la ramificación.

La ramificación te permite construir reglas usando múltiples bloques de condiciones que siguen la lógica **if → else if → else**. Cada bloque se verifica en **secuencia**, y tan pronto como un bloque coincide, sus acciones se ejecutan, y la regla se detiene. Esto asegura que **solo un bloque se ejecute**, previniendo acciones superpuestas o conflictivas. Esta es una característica muy poderosa y puede usarse para crear reglas complejas con múltiples condiciones.

> Aquí hay un ejemplo de una regla ramificada con tres bloques. Aquí, queremos aplicar diferentes descuentos basados en la etiqueta del producto y tenemos un descuento predeterminado del 5% en todo el envío en caso de que el cliente no sea elegible para ninguno de los otros descuentos. Solo un bloque se ejecutará basado en las condiciones y luego la regla se detendrá.

<Note>
  La condición clave aquí es [Todas las condiciones anteriores no válidas](/guides/es/essentials/condition-sets/condition-set-1#todas-las-condiciones-anteriores-no-válidas)
  en el segundo y tercer bloques, que asegura que solo un bloque se ejecute basado en
  las condiciones y luego la regla se detenga. Usando esta condición puedes usar
  ramificación en cualquier regla.
</Note>

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/all-blocks.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=72a534141bcd8bc66efb87259c3e3f70" alt="All Blocks" width="1091" height="2116" data-path="images/advanced/branching/all-blocks.webp" />

Así es como esta regla se ejecutará:

<Steps>
  <Step title="Si la etiqueta del producto es deportes y la cantidad subtotal del pedido es mayor o igual a 33">
    Entonces se aplicará 20% de descuento en envío y la regla se detendrá.
  </Step>

  <Step title="Else if la etiqueta del cliente es VIP">
    Entonces se aplicará 50% de descuento en envío y la regla se detendrá.
  </Step>

  <Step title="Else (catch all predeterminado)">
    Entonces se aplicará 5% de descuento en envío.
  </Step>
</Steps>

## Explicación

### Primer bloque de condición (if)

* El sistema comienza con el primer bloque de condición.
* Este bloque puede incluir múltiples **sub-condiciones** combinadas con **AND** u **OR**.
* Si la condición general del bloque se cumple, su acción **"Then"** se ejecuta (ej., aplicar 20% de descuento).
* Una vez que se ejecuta, el sistema no verifica los siguientes bloques.

> **Ejemplo:** La etiqueta del producto tiene valor de **deportes** *AND* Cantidad subtotal del pedido ≥ **33** *OR* La etiqueta del producto tiene valor de **zapatos** → Aplicar 20% OFF en todo el envío

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/if-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=a88329457c2bbd8a148e3231c1bc6119" alt="If Condition" width="1079" height="783" data-path="images/advanced/branching/if-condition.webp" />

### Bloque(s) de condición Else if

* Si el primer bloque no coincide, el sistema verifica el(los) siguiente(s) bloque(s).
* Un bloque **Else If** puede contener múltiples **sub-condiciones** usando **AND** u **OR**, y debe incluir la condición **"Previous all conditions invalid"** como subcondición.
* Puede haber uno o más bloques en secuencia. Sin embargo, si la condición **"Previous all conditions invalid"** no está presente, el bloque no funcionará como **Else If** y se comportará como un bloque **If** regular.
* Si la condición general del bloque para cualquier bloque se cumple, su acción **"Then"** se ejecuta (ej., aplicar 50% de descuento), y la evaluación se detiene.

> **Ejemplo:** Previous all conditions invalid AND La etiqueta del cliente tiene valor de **VIP** → Aplicar 50% de descuento en todo el envío

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/else-if-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=7b086b9b2b65b76d5b3dd7b20f2e9b8a" alt="Else If Condition" width="1092" height="657" data-path="images/advanced/branching/else-if-condition.webp" />

### Bloque de respaldo (else)

* Si ninguno de los bloques anteriores coincide, puedes añadir un bloque de respaldo con una condición de [Todas las condiciones anteriores no válidas](/guides/es/essentials/condition-sets/condition-set-1#todas-las-condiciones-anteriores-no-válidas).
* Esto actúa como el **Else (catch all predeterminado)** y asegura que siempre haya una acción **"Then"** predeterminada (ej., aplicar 5% de descuento), cuando no se ejecutaron bloques anteriores.

> **Ejemplo:** Previous all conditions invalid → Aplicar 5% OFF en todo el envío

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/else-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=5c89f6422b905a1ac9ed0d065e653021" alt="Else Condition" width="1086" height="553" data-path="images/advanced/branching/else-condition.webp" />

<Tip>
  Debes organizar los bloques en el orden de mayor prioridad a menor
  prioridad. El primer bloque es la mayor prioridad y el último bloque es la
  menor prioridad.
</Tip>

## Caso de uso de ejemplo

Digamos que quieres aplicar diferentes descuentos de envío basados en **etiquetas de producto**.

### Configuración de regla

**Bloque 1 (if)** → *La etiqueta del producto tiene valor de `deportes`* → Aplicar **20%** de descuento en todo el envío (mayor prioridad).

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/20-percent-when-sport.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=a97886dd9ec1c5e7c6d97c950a1f9480" alt="20 Percent When Sport" width="699" height="361" data-path="images/advanced/branching/20-percent-when-sport.webp" />

**Añadiendo el siguiente bloque**\
Para añadir un nuevo bloque después del primero, puedes:\
Hacer clic en el botón **"Add new block"** en el constructor de reglas.

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/add-new-block.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=13c7c37ac24c8dffe68ab08f12479732" alt="Add New Block" width="1099" height="102" data-path="images/advanced/branching/add-new-block.webp" />

O, [copiar el bloque anterior](/guides/es/advanced/block-replication) y **pegarlo abajo** usando el **ícono de pegar**, luego modificar sus condiciones y acciones.

**Bloque 2 (else if)** → *La etiqueta del producto tiene valor de `invierno`* AND *Previous all conditions invalid* → Aplicar **50% de descuento en todo el envío**

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/50-percent-when-winter.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=03c579fdd7a5e7531160b2d15a63a169" alt="50 Percent When Winter" width="750" height="452" data-path="images/advanced/branching/50-percent-when-winter.webp" />

**Bloque 3 (else)** → *Previous all conditions invalid* → Aplicar **5% de descuento en todo el envío** (descuento predeterminado).

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/5-percent-when-previous-all-conditions-invalid.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=502562c7d54188ebf813af1423c5e116" alt="5 Percent When Previous All Conditions Invalid" width="697" height="362" data-path="images/advanced/branching/5-percent-when-previous-all-conditions-invalid.webp" />

Así es como se verá toda la configuración de la regla.

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/example-all-blocks.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=1bc0d8e0817caf7bfa9033b795cf00ef" alt="Example All Blocks" width="1093" height="2022" data-path="images/advanced/branching/example-all-blocks.webp" />

### Flujo de ejecución

El sistema comienza con **Bloque 1**. Si coincide (etiqueta del producto = `deportes`), se aplica **20% de descuento en envío**, y la regla termina.

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/20-percent-when-sport-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=b7ae092b666adb6cba4c9b32f43a648d" alt="20 Percent When Sport Checkout" width="1295" height="599" data-path="images/advanced/branching/20-percent-when-sport-checkout.webp" />

Si el Bloque 1 no coincide, verifica **Bloque 2**. Si etiqueta del producto = `invierno`, entonces se aplica **50% de descuento en envío**, y la regla termina.

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/50-percent-when-winter-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=9e2938f5332e5b1eeabd2d9d7d13444f" alt="50 Percent When Winter Checkout" width="1248" height="608" data-path="images/advanced/branching/50-percent-when-winter-checkout.webp" />

Si ni el Bloque 1 ni el Bloque 2 coinciden, **Bloque 3** se ejecuta. Como usa **Previous all conditions invalid**, actúa como un **catch all predeterminado**, aplicando **5% de descuento en envío**.

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/5-percent-when-previous-all-conditions-invalid-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=1ed8d476ad828b88457e0da540203a1a" alt="5 Percent When Previous All Conditions Invalid Checkout" width="1214" height="604" data-path="images/advanced/branching/5-percent-when-previous-all-conditions-invalid-checkout.webp" />
