karpoj23 Posted May 13, 2020 Share Posted May 13, 2020 Buenas, estoy intentando en Prestashop 1.7 que cuando cree un pedido que escriba un fichero de exportacion y he estado buscando por el codigo y lo unico que encontre modificar el fichero classes/order/Order.php en la funcion add($autodate = true, $null_values = true) pero parece ser que esta no es la llama cuando se inserta un pedido, sabeis donde esta esa funcionalidad? Gracias! Link to comment Share on other sites More sharing options...
ventura Posted May 13, 2020 Share Posted May 13, 2020 Quizás sea mejor opción hacerlo mediante un módulo anclado en un hook especifico 1 Link to comment Share on other sites More sharing options...
karpoj23 Posted May 14, 2020 Author Share Posted May 14, 2020 Gracias, voy a ponerme a investigarlo como funciona. Link to comment Share on other sites More sharing options...
karpoj23 Posted May 14, 2020 Author Share Posted May 14, 2020 (edited) Al final he creado un modulo: <?php Class TestHook extends Module { public function __construct() { $this->name = 'test'; $this->version = '1.00.0'; $this->author = 'user'; $this->displayName = $this->l('TestHook '); $this->description = $this->l('TestHook Descripción'); $this->controllers = array('default'); $this->bootstrap = 1; parent::__construct(); } public function install() { if( !parent::install() || !$this->registerHook('actionValidateOrder')) return false; return true; } public function uninstall() { if( !parent::uninstall() || !$this->unregisterHook('actionValidateOrder')) return false; return true; } public function hookActionValidateOrder($params) { $details = $params['order']; echo "<pre>"; print_r($details); echo "<pre>"; } } pero claro como hago para que se lance ese codigo? pq he instalado el modulo y he creado un nuevo pedido desde el admin para probar, pero no ha aparecido la accion que le tengo en pantalla para que muestre, se que tiene que ser una tonteria que se me ha pasado EDIT: habia puesto el registerHook mal y tiene que apuntar al suyo EDIT 2: sigue sin mostrarme los datos cuando añado un pedido EDIT 3: SOLUCIONADO. muchas gracias Edited May 14, 2020 by karpoj23 (see edit history) Link to comment Share on other sites More sharing options...
karpoj23 Posted May 14, 2020 Author Share Posted May 14, 2020 Una cosa que no veo por ejemplo, he cogido el parametro cart, pero no veo el numero de unidades que ha comprado, como podria acceder a order_details y order_state? pq veo que se pueden hacer select, add y update de los params que estan en ese, pero no en otra tabla por ejemplo de customer, cart, order... Link to comment Share on other sites More sharing options...
gusman126 Posted May 15, 2020 Share Posted May 15, 2020 (edited) Los hook Action, no muestran nada en la pantalla, deben ser los hook display En los action SI puedes guardar ficheros, llamadas CURL, y otras opciones Utliza la variable ($params) dentro de los hook de pedidos, de esa manera leeras los datos del pedido Ej: public function hookActionOrderStatusPostUpdate($params) { /* Place your code here. */ $id_orden = $params['id_order']; } Para leer los productos $order = new Order($id_orden); $products = $order->getProducts(); foreach ($products AS $producto){ $cantidad_pro_order = $producto['product_quantity']; $idattr = $producto["product_attribute_id"] } Edited May 15, 2020 by gusman126 (see edit history) Link to comment Share on other sites More sharing options...
karpoj23 Posted May 15, 2020 Author Share Posted May 15, 2020 acabo de hacerlo tb de otra manera, aunque creo que tu manera es mejor: $orderDetailList = mysqli_query($db, "SELECT * FROM ps_order_detail a join ps_product b on a.product_id=b.id_product where a.id_order=". $order->id); Link to comment Share on other sites More sharing options...
gusman126 Posted May 15, 2020 Share Posted May 15, 2020 hace 9 minutos, karpoj23 dijo: acabo de hacerlo tb de otra manera, aunque creo que tu manera es mejor: $orderDetailList = mysqli_query($db, "SELECT * FROM ps_order_detail a join ps_product b on a.product_id=b.id_product where a.id_order=". $order->id); No me gusta hacer llamadas a SQL en los modulos, prefiero usar las Classes incluidas https://gmartos.es/indice-de-classes-y-metodos-de-prestashop/ Link to comment Share on other sites More sharing options...
karpoj23 Posted May 15, 2020 Author Share Posted May 15, 2020 tienes razon, es mas limpio usar la funcionalidad propia de prestashop 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