Jump to content

Recommended Posts

Hola chic@s!

Estoy montando una tienda en PS 1.7.7.1 a una empresa que me lo ha solicitado, pero necesitan integrar algunos campos de PS (stock, referencia, pedidos, mensaje del cliente en un pedido) en su ERP. Resulta que su ERP no es de los conocidos y no tenía ninguna API ni modo de conectarse, por lo que contrataron un servicio que les abrió esa conexión para sincronizar los campos de otra tienda con una app móvil.

Después de leer en muchos foros mi deducción es que tendré que usar (en el caso de querer recuperar campos relacionados con el pedido) el hook que se dispara en el momento de que un pedido pasa al estado "pago recibido" (actionPaymentConfirmation) situado dentro de OrderHistory.php en el trozo de código:

// executes hook
        if (in_array($new_os->id, [Configuration::get('PS_OS_PAYMENT'), Configuration::get('PS_OS_WS_PAYMENT')])) {
            Hook::exec('actionPaymentConfirmation', ['id_order' => (int) $order->id], null, false, true, false, $order->id_shop);
        }

para meter un código que haga la conexión con el servicio y poder así acceder a los datos, ¿voy por buen camino?

 

¿Podría alguien decirme cómo es el código que debo usar para hacer esa conexión y si es el sitio correcto?

 

De nuevo gracias comunidad por vuestros aportes, ¡me habéis ayudado mucho en todo este tiempo con vuestros topics!

Link to comment
Share on other sites

Lo mejor sera que hagas un modulo y que este modulo pueda enviar los datos del pedido cuando se haya cambiado de estado o cuando se confirme o valide el pedido.

Una vez cambia el estado o se confirma, debes leer los datos del pedido, cliente y productos incluidos en el pedido 

Cuando ya tienes esos datos se lo envías por esa api al sistema ERP

hooks :

actionOrderStatusUpdate

displayOrderConfirmation

actionValidateOrder

public function hookActionOrderStatusPostUpdate($params)		{

$id_order = $params['id_order'];
		$nuevo_estado = $params['newOrderStatus']->id;
		$enviado = Configuration::get('SINCRONIZARCONMASTER_STATUS');
		
				
		if($nuevo_estado == $enviado){

		......
		$add = self::sendorder($id_order);
		}

}
 

los puntos suspensivos son el código que deberías añadir para almacenar los datos de productos, cliente , dirección del cliente,

public function sendorder($id_order){
$order = new Order($id_order);
		$id_original = $id_order;
		$products = $order->getProducts($products = false, $selectedProducts = false, $selectedQty = false);
		.......
		$cliente = new Customer($order->id_customer);
		.......
		$addressDelivery = new Address((int)$order->id_address_delivery);
		......
		
		....
		// a partir de aqui enviar a la api del ERP
}

 

  • Thanks 1
Link to comment
Share on other sites

En primer lugar, muchísimas gracias por tu rápida respuesta y, sobre todo, ¡haberte tomado el tiempo de desarrollarla tanto!

Entiendo que hookActionOrderStatusPostUpdate() es una función que no existe, sino que le has puesto ese nombre, ¿ocurre lo mismo con sendorder()? Y esas funciones, ¿se tienen que incluir en los 3 hooks que mencionas?

 

¿Hay algún ejemplo en el código de cómo se recogen los datos cuando se dispara un hook?

 

Sé que estoy bastante verde en este tema, pero me ha servido mucho tu planteamiento, ¡mil gracias!

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