Drupal Commerce: Añadir datos de facturación al formulario de registro y que se rellenen al crear un pedido

Drupal commerce

Hoy se nos plantea la cuestión de añadir los datos de facturación al formulario de registro del usuario, en una instalación de Drupal Commerce. Como sabréis, los datos de facturación son proporcionados por el módulo commerce customer, que forma parte del módulo commerce. Pues bien, para llebar a cabo nuestro propósito, necesitamos hacer 2 cosas:

  1. Añadir un campo de tipo Customer profile reference a la cuenta de usuario, y configurarlo para que se muestre durante el registro.
  2. Crear una rule para que al crear un pedido, si el usuario tiene una cuenta, se rellenen todos los campos de los datos de facturación en el pedido

1) Para el primer paso, nos dirigimos a la gestión de campos de usuarios, en example.com/admin/config/people/accounts/fields y añadimos un campo de tipo Commerce profile reference, en nuestro ejemplo, hemos llamado al campo field_perfil_de_ciente. Como widget (tipo de control), escogemos Customer profile Manager. Pinchamos en guardar.

En la sigueinte pantalla marcamos las casillas Campo necesario y Mostrar en el formulario de registro. En el apartado Customer profile type that can be referenced seleccionamos Información de Facturación (ó Billing information). Pinchamos en guardar.

Ya tenemos nuestro campo creado y debería mostrarse en el formulario de registro de nuevos usuarios. Ahora vamos a por nuestra rule

2) Para crear nuestra rule (tenemos que tener instalado el módulo rules ) vamos a Settings > Workflow > Rules (example.com/admin/config/workflow/rules) y pinchamos en importar. En el campo de texto que aparecerá a continuación, pegamos el siguiente código:

{ "rules_add_profile_to_order" : {
    "LABEL" : "add profile to order",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "rules", "entity" ],
    "ON" : [ "commerce_order_update" ],
    "IF" : [
      { "entity_has_field" : { "entity" : [ "commerce-order" ], "field" : "commerce_customer_billing" } },
      { "data_is_empty" : { "data" : [ "commerce-order:commerce-customer-billing" ] } },
      { "entity_has_field" : {
          "entity" : [ "commerce-order:owner" ],
          "field" : "field_perfil_de_ciente"
        }
      }
    ],
    "DO" : [
      { "data_set" : {
          "data" : [ "commerce-order:commerce-customer-billing" ],
          "value" : [ "commerce-order:owner:field-perfil-de-ciente" ]
        }
      }
    ]
  }
}

Pinchamos en el botón Importar. Si todo va bien, y el nombre del campo que añadimos en el usuario se llamaba field_perfil_de_cliente, la rule se creará correctamente, y cuando intentemos crear un pedido con un usuario registrado, se nos deberían de rellenar los datos de facturación, con los datos que puso durante el registro. En el listado de rules, podremos encontrar nuestra rule con el nombre "add profile to order". Si pinchamos en editar sobre ella, veremos algo así:

Lo que hacemos es, reaccionando al evendo "tras actualizar una pedido existente" (que se ejecuta por ejemplo, cuando iniciamos el proceso de checkout a partir de un carrito de compra), comprobar si el pedido contiene el campo commerce_customer_billing y está vacío, y si el usuario que está comprando tiene el campo field_perfil_de_cliente. Si esto es así, establecemos que el campo commerce_customer_billing del pedido tiene el mismo valor que el campo field_perfil_de_cliente del usuario, y por lo tanto, todos los campos de los datos de facturación aparecerán rellenados

Espero que os haya servido de ayuda.

Añadir nuevo comentario

Plain text

  • No se permiten etiquetas HTML.
CAPTCHA
Esta pregunta es para evitar el envío automático de spam