Hola, necesitamos actualizar el stock de nuestros productos a través de la siguiente URL que nos facilita el proveedor: http://petuky.com/ws/stock.php. ¿Hay alguna forma de hacerlo? Gracias
URL del sitio: Contenido solo visible a usuarios registrados
Hola
Tiene el formato de un archivo CSV separado por comas, podrías probar un script como el siguiente :
http://www.whiletrue.it/update-prestashop-product-quantities-csv-file/
Realiza primero en un sitio de pruebas
Saludos.
Gracias Jhon, antes que nada te voy a decir que nos han dicho que la actualización se hace a las 2:30 am, hace falta programar algo distinto o esto es algo que se hace automáticamente?
Aparte, No tengo un sitio de pruebas y la verdad es que no sé cómo hacerlo, intentarè investigarlo.
Por otro lado te pido si me puedes ayudar diciéndome dónde debo pegar este código y si debo modificarle algo.
Un saludo
Hola
En la url enviada, la parte de Script code , debes copiar y pegar en un nuevo arcihvo .php , por ejemplo
migración.php, este arhivo debes colocarlo en la raiz de tu sitio web, para que se llame en base a tu dominio, por ejemplo :
Contenido solo visible a usuarios registrados
Esto tendrás que ejecutarlo manualmente cada vez que quieras una migración colocas esto en el navegador y ejectuas, lo otro es que se automatice por cpanel a través de un cron pero primero asegurate de que funione manualmente
No olvides de cambiar los parámetros indicados en el link
Saludos.
hola jhon
he creado el archivo .php le he llamado stock.php
al abrir www.tiendawalkingdogs.com/stock.php se abre una ventana que dice error delservidor 500
cargar de nuevo
no se si he cometido algún error en el codigo o es porque el stock se actualiza a las 2:30 ( los provedores nos han dicho que se actualiza a las 2:30 am)
no se que será la url del stock es http://petuky.com/ws/stock.php y el codigo a quedado asi:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// MAIN CYCLE
$row_num = 0;
if (($handle = fopen($remote_csv_file, "r")) !== false) {
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$row_num++;
if ($row_num == 1) {
// SKIP FIRST LINE (HEADER)
continue;
}
if ($data[0] == '' || !is_numeric($data[1])) {
// SKIP EMPTY VALUES
continue;
}
// INPUT SANITIZATION
$reference = trim($data[0]);
$quantity = ($data[1] >= 0) ? $data[1] : 0;
try {
$res4 = $db->prepare("SELECT id_product, id_product_attribute from "._****_."product_attribute WHERE reference = :reference");
$res4->execute(array(':reference'=>$reference));
if ($res4->rowCount() > 0) {
// IT'S A PRODUCT COMBINATION
$row4 = $res4->fetch();
$res = $db->prepare("update "._****_."stock_available set quantity = :q where id_product_attribute = :id_product_attribute");
$res->execute(array(':q'=>$quantity, ':id_product_attribute'=>$row4['id_product_attribute']));
$res = $db->prepare("update "._*****_."product_attribute set quantity = :q where id_product_attribute = :id_product_attribute");
$res->execute(array(':q'=>$quantity, ':id_product_attribute'=>$row4['id_product_attribute']));
$res = $db->prepare("update "._****_."stock_available set quantity = quantity + :q where id_product = :id_product and id_product_attribute = 0");
$res->execute(array(':q'=>$quantity, ':id_product'=>$row4['id_product']));
$res = $db->prepare("update "._*****_."product set quantity = quantity + :q where id_product = :id_product");
$res->execute(array(':q'=>$quantity, ':id_product'=>$row4['id_product']));
} else {
// IT'S A SIMPLE PRODUCT
$res4 = $db->prepare("SELECT id_product from "._*****_."product WHERE reference = :reference");
$res4->execute(array(':reference'=>$reference));
if ($res4->rowCount() > 0) {
$row4 = $res4->fetch();
$res = $db->prepare("update "._*****_."stock_available set quantity = :q where id_product = :id_product and id_product_attribute = 0");
$res->execute(array(':q'=>$quantity, ':id_product'=>$row4['id_product']));
$res = $db->prepare("update "._*****_."product set quantity = :q where id_product = :id_product");
$res->execute(array(':q'=>$quantity, ':id_product'=>$row4['id_product']));
}
}
} catch (PDOException $e) {
echo 'Sql Error: '. $e->getMessage() .'
';
}
}
fclose($handle);
}
el nombre DB , usuario y contraseña les he sacado del Cpanel y el prefijo tambien (estos datos estan en ***)
espero respuesta, un saludo
Hola Alejandro,
Al ser un tema que implica comprobación de configuraciones de tu cuenta de Hosting, tareas cron y posibles bloqueos de scripts externos es mejor que plantees la consulta por medio de Ticket para que el Departamento de Soporte la revise y te den las indicaciones oportunas.
Desde el Foro no podemos hacer mucho al respecto.
Saludos