Post Top Ad

Your Ad Spot

miércoles, 26 de agosto de 2020

Filtrar pedidos por empleado en el Back Office de PrestaShop

¡Este tutorial también se puede aplicar a ThirtyBees !
Para filtrar la lista de pedidos de PrestaShop, simplemente tenemos que agregar condiciones a la cláusula "where" del AdminOrdersController.php , ubicado en controllers / admin .
Lo que queremos hacer es agregar las condiciones adicionales al método de construcción, alrededor de la línea 68:
1
2
3
4
5
6
if($this->context->employee->id_profile == 1)
        {
            $this->_where .= ' AND os.id_order_state = 2';
            $this->_where .= ' AND country.id_country = 21';
            $this->_where .= ' AND a.module = "bankwire"';
        }
La primera condición filtrará los pedidos por estado actual, en este caso "Pago aceptado"; El segundo solo mostrará los pedidos que se envían a los Estados Unidos; el tercero limitará los resultados a los pagados por transferencia bancaria.
Estamos utilizando la identificación del perfil del empleado para activar las condiciones, de modo que solo el departamento seleccionado se verá afectado.
Estos fragmentos serán suficientes en la mayoría de los casos, pero si desea tener mucho cuidado, es mejor evitar también el acceso directo a la vista de un solo pedido, editando el método renderView :
1
2
3
4
5
6
7
8
9
10
// At the beginning of the renderView method, after the $order variable has been validated, we can use this to prevent access if the order is not set to payment accepted. We can do the same with the bankwire method as we saw above, by simply changing the property name from current_state to module
if($this->context->employee->id_profile == 1)
        {
 
            if($order->current_state != 2)
            {
                $this->errors[] = Tools::displayError('You are not authorized to see this page.');
                return;
            }
        }
También podemos hacer lo mismo para la condición del país, alrededor de la línea 1650, después de que se haya declarado $ addressDelivery:
1
2
3
4
5
6
7
8
if($this->context->employee->id_profile == 1)
{
    if($addressDelivery->id_country != 21)
    {
        $this->errors[] = Tools::displayError('You are not authorized to see this page.');
        return;
    }
}

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas