> ## 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.

# Concurrencia

> Aprende cómo múltiples reglas del mismo tipo trabajan juntas y cómo impactan el proceso de checkout.

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

## Visión general

Podemos crear múltiples reglas del mismo tipo. La concurrencia describe qué sucede cuando múltiples reglas activas del mismo tipo existen y luego se activan en la página de checkout al mismo tiempo.
Este artículo te ayudará a entender qué sucede cuando estas reglas se aplican juntas, y cómo su efecto combinado puede influenciar el proceso de checkout.

## Explicación

Cuando añades más de una regla del mismo tipo, todas se ejecutan **independientemente pero casi al mismo tiempo**. El resultado del checkout es el efecto combinado de todas las reglas que se activan y generan acciones. El orden de ejecución para estas reglas es **no determinístico** según Shopify, pueden ejecutarse en cualquier orden.

<Note>
  Cada regla solo puede generar acciones que pueden combinarse con otras acciones generadas por el mismo tipo de regla.
  Por ejemplo, puedes tener una regla para ocultar un método de envío, pero no puedes tener una regla para mostrar un método de envío.
  Todas las reglas de ocultar métodos de envío se combinarán juntas para determinar todos los métodos de envío que deben ocultarse.
</Note>

Así es como funciona paso a paso:

<Steps>
  <Step title="Cada regla comienza a ejecutarse">
    Cada regla comienza a ejecutarse casi al mismo tiempo, verificando sus propias condiciones para determinar si debe generar alguna acción.
  </Step>

  <Step title="Las acciones de regla se generan">
    Si la condición de una regla se satisface, su acción se genera.

    > Por ejemplo, puedes tener una regla para <strong>ocultar cualquier método de envío que contenga "Worldwide"</strong> en su nombre. Luego otra regla para <strong>ocultar cualquier método de envío que contenga "International Shipping"</strong> en su nombre. Ambas reglas generarán acciones, una ocultará "Worldwide" y la otra ocultará "International Shipping".
  </Step>

  <Step title="Las acciones se combinan">
    Si múltiples reglas generan acciones, sus acciones se combinan y se envían al Checkout de Shopify.

    > Por ejemplo, Regla 1 oculta un método que contiene <strong>"Worldwide"</strong>, Regla 2 oculta un método que contiene <strong>"International Shipping"</strong> → Se generará una acción combinada de ocultar tanto Worldwide como International Shipping y se enviará al Checkout de Shopify.
  </Step>
</Steps>

## Caso de uso de ejemplo

Digamos que quieres **ocultar ciertos métodos de envío** basándose en el código postal del cliente.\
Para esto, supongamos que creamos las siguientes reglas:

**Regla 1** → Ocultar método de envío `DHL Express Worldwide` cuando el código postal es **2005** o comienza con **100**.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-1-example.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=4ad186c2533deed712df3ed00d0f3ac0" alt="Rule 1 Example" width="1087" height="682" data-path="images/advanced/concurrency/rule-1-example.webp" />
</Frame>

**Regla 2** → Ocultar método `International Shipping` cuando el código postal es **2005** o comienza con **500**.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-2-example.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=be32a38994b782dcce94fcca2901a5b7" alt="Rule 2 Example" width="1092" height="677" data-path="images/advanced/concurrency/rule-2-example.webp" />
</Frame>

### Caso 1: Solo una regla aplica

* Si el cliente ingresa un código postal como **10045**, **Regla 1** aplica, porque las condiciones para Regla 2 no se cumplen, así que no genera ninguna acción.

  → En el checkout, el método `DHL Express Worldwide` se oculta, pero `International Shipping` y otros métodos permanecen disponibles como se muestra en la captura de pantalla a continuación.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-1-example-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=3ffa70f647895db2ab9a2e3ff3ba1210" alt="Rule 1 Example Checkout" width="654" height="386" data-path="images/advanced/concurrency/rule-1-example-checkout.webp" />
</Frame>

* Si el cliente ingresa un código postal como **50010**, **Regla 2** aplica.\
  → En el checkout, el método `International Shipping` se oculta, pero `DHL Express Worldwide` y otros métodos permanecen disponibles.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-2-example-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=8255d9f2c7f5e14ac8f4a8a807ad595b" alt="Rule 2 Example Checkout" width="652" height="389" data-path="images/advanced/concurrency/rule-2-example-checkout.webp" />
</Frame>

### Caso 2: Ambas reglas aplican juntas

* Si el cliente ingresa el **código postal 2005**, entonces las condiciones se cumplen para ambas reglas, así que **tanto Regla 1 como Regla 2** aplican juntas.
* Esto significa que **tanto `DHL Express Worldwide` como `International Shipping`** se ocultarán del checkout, dejando solo los otros métodos disponibles.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/both-rule-same-zipcode-example-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=afed914cbc356e2c85a02956e5a3dbea" alt="Both Rule Same Zipcode Example Checkout" width="656" height="332" data-path="images/advanced/concurrency/both-rule-same-zipcode-example-checkout.webp" />
</Frame>

## Conflictos de reglas

Si múltiples reglas no son seguras para concurrencia, pueden entrar en conflicto entre sí y causar problemas en la página de checkout.
Necesitamos asegurar que las reglas no estén en conflicto entre sí para evitar problemas.

<Warning>
  Se necesita precaución al usar múltiples reglas del mismo tipo. Siempre asegúrate de que las reglas no estén en conflicto entre sí para evitar problemas.
</Warning>

### Ejemplo: Solo mostrar estos métodos de envío

Cuando una regla está configurada para **Solo mostrar estos métodos de envío**, intentará ocultar todos los métodos de envío que no estén en la lista que queremos "solo mostrar".

Si múltiples reglas están configuradas para **Solo mostrar estos métodos de envío**, pueden entrar en conflicto entre sí y causar que todas las opciones de envío se oculten.

> **Ejemplo:** Regla 1 → Solo mostrar método de envío `DHL Express Worldwide` cuando el código postal es 2005 o comienza con 100.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-1-zipcode.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=b12e73e2ac804a1e5c6645cedc3d47ee" alt="Rule 1 Zipcode" width="1090" height="686" data-path="images/advanced/concurrency/rule-1-zipcode.webp" />
</Frame>

> Regla 2 → Solo mostrar método de envío `International Shipping` cuando el código postal es 2005 o comienza con 500.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-2-zipcode.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=f41cacba2a5bb0fb30ec1ecbdc67361c" alt="Rule 2 Zipcode" width="1087" height="679" data-path="images/advanced/concurrency/rule-2-zipcode.webp" />
</Frame>

Cuando ambas reglas se ejecutan para el mismo código postal **2005**, Regla 1 intentará ocultar todos los métodos de envío que no sean `DHL Express Worldwide` y Regla 2 intentará ocultar todos los métodos de envío que no sean `International Shipping`. Esto resultará en error **No hay envío disponible** porque ambas reglas no son compatibles entre sí.

<Frame>
  <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/shipping-not-available-error.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=e0bbe08d61ecee1b2a2339db52ccbcc8" alt="Shipping Not Available Error" width="648" height="357" data-path="images/advanced/concurrency/shipping-not-available-error.webp" />
</Frame>

<Check>
  Para resolver este problema, necesitamos crear una 3ra regla aquí, que manejará los códigos postales comunes por separado.
</Check>

De esta manera, podemos asegurar que Regla 1 y Regla 2 sean independientes entre sí. Regla 3 manejará los códigos postales comunes por separado y podemos estar seguros de qué métodos de envío estarán disponibles para el cliente en cada caso.

<Tip>
  Como consejo general, siempre debemos tratar de emparejar **Solo mostrar estos métodos de envío** con la condición **Método de Envío Disponible** como subcondición, y usar el(los) mismo(s) valor(es) en ambos.

  > **Ejemplo:** Regla → Solo mostrar método de envío `DHL Express Worldwide` cuando el código postal es 2005 o comienza con 100 *AND* subcondición **Método de Envío Disponible** tiene cualquiera de estos valores: *DHL Express Worldwide* Esto asegurará que *DHL Express Worldwide* esté realmente disponible para ese checkout antes de que intentemos ocultar todos los otros métodos de envío.

  <Frame>
    <img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/concurrency/rule-1-solution.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=73933ef8bd64ca5c69cbdcc25e01da8f" alt="Rule 1 Solution" width="967" height="792" data-path="images/advanced/concurrency/rule-1-solution.webp" />
  </Frame>

  De esta manera, podemos asegurar que los métodos de envío estén realmente disponibles en la página de checkout en primer lugar, que queremos "Solo mostrar" al cliente.
</Tip>
