Para crear un ticket de soporte, comience con una búsqueda

Precios especificos (ventana): añadir un campo de una tabla externa a las tablas de precios especificos


Prerrequisitos

El campo debe estar ya presente en la base de datos

Objetivo


Queremos añadir el campo "Mi campo" que se almacena en la tabla ps_mi_tabla (esta tabla no existe por defecto en PrestaShop).

Esto nos permitirá :

  • utilizar los filtros de las cuadrículas para afinar nuestras selecciones de precios especiales
  • editar este campo en masa utilizando el sistema de copiar y pegar de SC
  • exportar rápidamente la tabla de precios especiales con este campo
Configuración

Para añadir el campo a la lista de campos disponibles para sus rejillas de productos, haga clic en el botón desde la interfaz "Añadir campo", e introduzca la siguiente información:

 

¿Cuál es el ID del campo? mi_campo (debe coincidir exactamente con el nombre del campo en la tabla de la base de datos)

SC crea el campo, ahora debe rellenar la cuadrícula:


Nombre del campo: Mi campo
Tabla: Otra tabla
Tipo: Selección múltiple (debe corresponder a su tipo de campo, aquí un campo con valores predefinidos)

 

En este ejemplo, imaginamos que la tabla ps_ma contiene los campos :

table_id, product_id, mi_campo

 

En el panel de propiedades avanzadas de la derecha :

- seleccione el menú lista de opciones (sólo si el tipo de campo es "opción múltiple", de lo contrario déjelo en blanco) y rellene :

return array(0=>_l('Aucune'), 1=>_l('Valeur 1'), 2=>_l('Valeur 2'));

 

- seleccione el menú SQL Select y rellene:

return ' ,mt.mon_champ';

 

- seleccione el menú SQL Left Join y rellene:

return " LEFT JOIN "._DB_PREFIX_."ma_table  mt  ON (mt.id_product= p.id_product)";

 

- seleccione el menú PHP enAfterUpdateSQL y rellene:

if (isset($_POST["mon_champ"])) {
    $sql = "SELECT * FROM " . _DB_PREFIX_ . "ma_table WHERE id_product=" . (int)$id_product;
    $res = Db::getInstance()->ExecuteS($sql);
    $mon_champ = (int)Tools::getValue('mon_champ', 0);
    if (count($res)) {
        if ($mon_champ) {
            $sql = "UPDATE " . _DB_PREFIX_ . "ma_table  SET mon_champ=" . (int)$mon_champ . "  WHERE id_product=" . (int)$id_product;
            Db::getInstance()->Execute($sql);
        } else {
            $sql = "DELETE FROM " . _DB_PREFIX_ . "ma_table  WHERE id_product=" . (int)$id_product;
            Db::getInstance()->Execute($sql);
        }
    } else {
        $sql = "INSERT INTO " . _DB_PREFIX_ . "ma_table  (id_product,mon_champ) VALUES (" . (int)$id_product . "," . pSQL($mon_champ) . ")";
        Db::getInstance()->Execute($sql);
    }
}

 

Este código debe adaptarse a sus necesidades.

Cierre la ventana de edición de los campos personalizados.

El nuevo campo está ahora en la lista de campos disponibles, y puede añadirlo a sus rejillas.

 




Artículos relacionados