Jump to content

Sacar datos de tabla orders en history.tpl


Recommended Posts

Buenos días:

Estoy intentando hacer algo en prestashop 1.7 que ya tengo resuelto en prstashop 1.6, pero ha cambiado tanto que no consigo encontrar el cómo.

He añadido una columna más a la tabla ps_orders llamada fecha_entrega. He estendido la clase Order.php con el siguiente código:
 

<?php


class Order extends OrderCore
{	
	public $fecha_entrega;
	public function __construct($id = null, $id_lang = null)
	{	
		self::$definition['fields']['fecha_entrega'] = array('type' => self::TYPE_DATE);
		parent::__construct($id,$id_lang);
	}
	
	public function getfechaentrega()
    {
        return Db::getInstance()->getValue('
			SELECT `fecha_entrega`
			FROM `'._DB_PREFIX_.'orders`
			WHERE `id_order` =  '.(int)$this->id
        );
    }
	
}

Lo que quiero es sacar ese dato en la página de historico de pedido (history.tpl), cosa que en prestashop 1.6 era fácil de hacer con el siguiente código:

<td data-value="{$order.fecha_entrega|regex_replace:"/[\-\:\ ]/":""}" class="history_date bold">
{dateFormat date=$order.fecha_entrega full=0}
</td>

pero ésto en prestashop 1.7 ha cambiado, no consigo saber como llamar a los datos que necesito mediante la clase $order,  veo que en history.tpl ahora se llaman a los datos de esta manera:

{$order.details.reference}

algo se me escapa que no tengo manera de referenciar al dato que quiero de fecha_entrega.

Alguien me puede ayudar a guiarme cómo se hace ésto ahora en prestashop 1.7?

GRacias por la atención, un saludo.

Link to comment
Share on other sites

Hola buenas,

en /src/Adapter/Order/OrderPresenter.php la funcion present($order) debe ser como esta.

public function present($order)
    {
        if (!is_a($order, 'Order')) {
            throw new \Exception('OrderPresenter can only present instance of Order');
        }

        return array(
            'products' => $this->getProducts($order),
            'products_count' => count($this->getProducts($order)),
            'totals' => $this->getAmounts($order)['totals'],
            'subtotals' => $this->getAmounts($order)['subtotals'],
            'details' => $this->getDetails($order),
            'history' => $this->getHistory($order),
            'messages' => $this->getMessages($order),
            'carrier' => $this->getCarrier($order),
            'addresses' => $this->getAddresses($order),
            'follow_up' => $this->getFollowUp($order),
            'shipping' => $this->getShipping($order),
            'id_address_delivery' => $order->id_address_delivery,
            'id_address_invoice' => $order->id_address_invoice,
            'labels' => $this->getLabels(),
            'fecha_entrega' => $order->fecha_entrega,
        );
    }

he puesto =>  'fecha_entrega' => $order->fecha_entrega,

para sacar ese dato en el template lo mismo que en la version 1.6.

<TD data-value="{$order.fecha_entrega|regex_replace:"/[\-\:\ ]/":""}" class="history_date bold">
{dateFormat date=$order.fecha_entrega full=0}
</TD>

 

Link to comment
Share on other sites

hace 20 horas, jamal dijo:

Hola buenas,

en /src/Adapter/Order/OrderPresenter.php la funcion present($order) debe ser como esta.


public function present($order)
    {
        if (!is_a($order, 'Order')) {
            throw new \Exception('OrderPresenter can only present instance of Order');
        }

        return array(
            'products' => $this->getProducts($order),
            'products_count' => count($this->getProducts($order)),
            'totals' => $this->getAmounts($order)['totals'],
            'subtotals' => $this->getAmounts($order)['subtotals'],
            'details' => $this->getDetails($order),
            'history' => $this->getHistory($order),
            'messages' => $this->getMessages($order),
            'carrier' => $this->getCarrier($order),
            'addresses' => $this->getAddresses($order),
            'follow_up' => $this->getFollowUp($order),
            'shipping' => $this->getShipping($order),
            'id_address_delivery' => $order->id_address_delivery,
            'id_address_invoice' => $order->id_address_invoice,
            'labels' => $this->getLabels(),
            'fecha_entrega' => $order->fecha_entrega,
        );
    }

he puesto =>  'fecha_entrega' => $order->fecha_entrega,

para sacar ese dato en el template lo mismo que en la version 1.6.


<TD data-value="{$order.fecha_entrega|regex_replace:"/[\-\:\ ]/":""}" class="history_date bold">
{dateFormat date=$order.fecha_entrega full=0}
</TD>

 

GRiacas por la respuesta, poco después de consultar y pelearme un poco lo averigué, pero muchas gracias. Doy el tema por solucionado.

Un saludo.

Link to comment
Share on other sites

  • 1 year later...

Estoy usando la version 1.7.5.1

en /src/Adapter/Order/OrderPresenter.php 

agregue esta funcion para añadire un campo que se llama referencia_secundaria

public function present($order)
    {
        if (!is_a($order, 'Order')) {
            throw new \Exception('OrderPresenter can only present instance of Order');
        }

        return array(
            'referencia_secundaria' => $order->referencia_secundaria,
        );
    }

 

y en history.tpl la mando llamar así

 

<th scope="row">{$order.referencia_secundaria}</th>

 

Este campo fue agregado en el registro y en la bd, en el admin la puedo recuperar facilmente pero en el front no he dado el como obtenerla en el history.tpl hay algúna otra modificación en el front para poderla obtener?

 

Saludos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...