Carts

Una de las principales funciones de la plataforma de Control Tower es la de gestionar y almacenar los carritos de la compra que realizan los usuarios en las tiendas de Dahl.

De esta forma son accesibles desde las aplicaciones móviles además de desde el panel de control web.

En general, un carrito representa un carro de la compra al que un usuario va agregando productos que va a comprar, y tiene las siguientes características:

  • Un carrito se crea cuando entra en la tienda.

  • Un carrito está en la tienda mientra no se haya hecho un checkout.

  • Los carritos que están en la tienda pueden estar activos (por defecto) o inactivos.

  • Un carrito pasa a inactivo cuando el tiempo que ha estado sin realizar ningún cambio supera un límite definido por la propia tienda.

  • Sobre un carrito que esté en la tienda, independientemente del estado (activo o inactivo) se puede realizar control.

Un carrito se representa en JSON de la siguiente forma:

{
    "checkout": {
        "id": 1,
        "cart": 1,
        "order_number": "",
        "order_id": "",
        "created": "2020-03-16T15:10:33.159020Z"
    },
    "controls": [
        {
            "cart": 1,
            "created": "2020-03-30T07:48:19.907262Z",
            "verified_at": "2020-03-30T07:48:19.907262Z",
            "id": 1,
            "is_random": false,
            "status": "verified",
            "user": 1
        }
    ],
    "created": "2020-03-16T13:10:33.159020Z",
    "last_activity": "2020-03-16T13:30:33.159020Z",
    "customer_order_number": "aesOQCYAlyWd",
    "id": 1,
    "items": [
        {
            "id": 1,
            "cart": 1,
            "part_number": "9157300",
            "quantity": 2,
            "created": "2020-03-16T12:59:40.943282Z"
        }
    ],
    "items_count": 1,
    "order_mark": "",
    "organization": {
        "code": "EZVlrwMlfwUB",
        "created": "2020-03-16T13:10:33.155209Z",
        "id": 1,
        "name": "SqACjOuCwfnc",
        "organization_id": "szbtFLrZpooe",
        "parent_code": ""
    },
    "reference": null,
    "store": {
        "created": "2020-03-16T13:10:33.148104Z",
        "gln": "cVAARBfoMcNM",
        "id": 1
    },
    "total_quantity": 2,
    "user": {
        "email": "",
        "first_name": "Teresa",
        "id": 2,
        "last_name": "Mccarty",
        "username": "jessica19"
    },
    "checkout_availability_error": false,
    "checkout_availability_error_at": null
}
  • Si el campo checkout no es null, indicaría que el carrito sigue en la tienda.

  • El campo last_activity indica la fecha en la que el carrito ha realizado la última actualización.

  • El campo active indica si el carrito se considera activo o no según el criterio de la tienda.

  • El campo created indica cuando se ha creado el carro, es decir, cuando ha entrado a la tienda.

  • El campo checkout_availability_error indica si al hacer checkoout de este carrito ha dado un error de dinsponibilidad el ERP de Dahl.

  • El campo checkout_availability_error_at indica si es true el valor de checkout_availability_error cuando se ha producido el error de disponibilidad.

Controles

Cuando se crea un control en la plataforma, este se crea a partir un usuario y una tienda y se realiza sobre todos los carritos activos que tenga en ese momento para la tienda indicada, pudiendo realizar tantos controles sobre un usuario como se requiera.

Existen dos posibles tipos de controles:

  • Manuales, aquellos que el usuario administrador decide hacer de forma explícita sobre un usuario.

  • Aleatorios, aquel control que la plataforma crea de forma aelatoria sobre un usuario.

Los controles se crean en la plataforma, y cuando se obtiene el detalle de un carrito, los controles que tiene asociados están en el campo controls.

{
    "carts": [1],
    "created": "2020-03-30T07:48:19.907262Z",
    "verified_at": "2020-03-30T07:48:19.907262Z",
    "id": 1,
    "is_random": false,
    "status": "verified",
    "user": 2,
    "controller": 1,
    "store": 1
}

Los controles tienen un campo status que indica el estado en el que se encuentran:

  • pending, indicando que el control ha sido creado (manual o automáticamente) pero aún no se ha hecho una revisión.

  • verified, indicando que el control ha sido verificado por un usuario administrador.

Además, cada control tiene un campo is_random que indica si ha sido un control generado de forma aleatoria o no.

El campo verified_at del control indica cuando se ha verificado, y el campo controller indica el usuario administrador que ha verificado el control.