Documento donde vamos añadir un campo nuevo en los transportistas en Prestashop 1.7.
Este documento ha sido probado en Prestashop 1.7.2.4. Lo digo porque existe la posibilidad de que en futuras variantes de Prestashop 1.7.X no sea válido y se haga de forma totalmente diferente.
Añadir campo en la base de datos
En nuestro caso vamos añadir un campo de tipo VARCHAR de 64 caracteres de longitud denominado “campo_prueba“.
El campo lo vamos añadir en la tabla: ps_carrier (recordar que yo digo “ps_” debido a que es el prefijo de las tablas de mi instalación de Prestashop, en vuestro caso este dato puede variar, es solo un aviso para navegantes).
El campo lo podemos añadir fácilmente desde phpMyAdmin bien gráficamente o generando la consulta.

Consulta SQL para avanzados:

Crear override de la clase Carrier
En el override de la clase Carrier vamos definir el nuevo campo que hemos creado en la tabla ps_carrier.
Recordar que el override de la clase Carrier se guarda en el directorio /override/classes/
Creamos el fichero Carrier.php con este contenido:

Dentro del contenido del override de la clase Carrier vamos a pegar de la clase original (/classes/Carrier.php) el código de “public static $definition” (que es el correspondiente a la definición de los campos de la tabla ps_carrier).

Ahora mismo el override tiene el siguiente contenido:

En este override nos quedan “2” puntos.
Añadir un atributo publico al override de la clase Carrier.

Añadir la definición del campo que hemos creado en la base de datos dentro de “public static $definition = array( ‘fields’ => array(”

El override de la clase Carrier quedara del siguiente modo:

Podéis descargar el override aquí (esta comprimido en zip): Descargar (recordar que debéis guardarlo en el directorio /override/classes/)
Crear override del controlador: AdminCarrierWizardController
El override del controlador AdminCarrierWizardController se guarda en el directorio /override/controllers/admin/
Creamos el fichero AdminCarrierWizardController.php con este contenido:

Copiamos del controlador original /controllers/admin/AdminCarrierWizardController.php las funciones: renderStepOne y getStepOneFieldsValues
En las funciones que hemos pegado en el override tenemos que hacer los siguientes cambios:
Dentro de la función: renderStepOne añadimos el campo que se mostrara para rellenar en el primer paso de configuración del transportista. Lo hacemos dentro de $this->fields_form = array( ‘form’ => array( .. ‘input’ => array(
Hemos añadido:

text -> Campo de tipo texto
label -> etiqueta del campo (traducible para los idiomas que tengas en la tienda activados desde el panel de la misma tienda)

name => nombre interno del campo para luego recoger/mostrar el valor.
hint => cuando pasas el ratón sobre el campo te muestra el texto (traducible para los idiomas que tengas en la tienda activados desde el panel de la misma tienda)

No pego la función entera, pero al final del documento tenéis el override para descargarlo.
Por último en la función: getStepOneFieldsValues añadimos dentro del return array:

Para obtener el valor del campo de prueba
Quedando la función del siguiente modo:

Podéis ver y descargar el override aquí: Descargar
Si todo es correcto, a la hora de crear o modificar un transportista veremos en su primer paso de configuración un nuevo campo.

Antiguamente para que os detectara Prestashop los override introducidos manualmente teníamos que eliminar el fichero /cache/class_index.php, en la actualidad el fichero a eliminar es el fichero /app/cache/prod(y dev))/class_index.php (no preocuparse, el fichero se regenera automáticamente). En la actualidad también si limpiáis la cache en la pestaña Parámetros Avanzados -> Rendimiento se regenera el fichero en cuestión sin necesidad de eliminarlo manualmente.
Descargar overrides construidos en este aporte: Descargar
Recordar:
Override de la clase Cart se guarda en el directorio: /override/classes/
Override del controlador AdminCarrierWizardController.php se guarda en el directorio: /override/controllers/admin/
Actualización del artículo (24/09/2018):
El directorio => /app/cache/ ahora se encuentra en /var/app/cache/