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

Rejilla de productos: Añadir un campo de una tabla externa a las tablas de productos (editable)


Objetivo

Queremos añadir el campo "Acción específica" que se almacena en la tabla ps_specific_action (esta tabla no existe por defecto en PrestaShop).

Esto nos permitirá :

  • utilizar los filtros de las cuadrículas para afinar la selección de productos
  • editar en masa este campo por el sistema de copiar y pegar de SC
  • exportar rápidamente la parrilla de productos 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:

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

Nombre del campo: Acción específica
Tabla: Otra tabla
Tipo : Opción múltiple
Actualizar las combinaciones : No

En este ejemplo, imaginamos que la tabla ps_specific_action contiene los campos :
id_specific_action, id_product, specific_action


Taking this example of table ps_specific_action includes the following fields:

id_specific_action, id_product, specific_action

 

En el panel de propiedades avanzadas de la derecha:

- seleccione el menú lista de opciones y rellene:

return array(0=>_l('Aucune'), 1=>_l('Colis fragile, emballer avec carton A1'), 2=>_l('Colis long, emballer avec carton B3'));

 

- seleccione el menú SQL Select y rellene:

return ' ,sact.specific_action';

 

- seleccione el menú SQL Leftjoin y rellene:

return " LEFT JOIN "._DB_PREFIX_."specific_action sact ON (sact.id_product= p.id_product)";

 

- seleccione el menú PHP enAfterUpdateSQL y rellene:

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

 

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 de productos.




Artículos relacionados