Prestadaemon Posted March 13, 2018 Share Posted March 13, 2018 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 More sharing options...
jamal Posted March 15, 2018 Share Posted March 15, 2018 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 More sharing options...
Prestadaemon Posted March 16, 2018 Author Share Posted March 16, 2018 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 More sharing options...
xoxonizer Posted August 29, 2019 Share Posted August 29, 2019 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now