Avisos
Vaciar todo

[Resuelto] Sincronización del stock de productos de la web a través de un csv que actualiza el proovedor cada día

6 Respuestas
3 Usuarios
1 Reactions
20 Visitas
Respuestas: 203
Reputable Member
Topic starter
 

Hola, necesitamos que todos los días sobre las 05:00 AM el woocommerce vaya a un csv y verifique el stock de cada producto de los que tenemos en venta en la web para que salga si está disponible o no desde un csv que actualiza el proveedor cada día por la noche. Cómo podemos hacerlo? 

Nos podeis recomendar plugin para hacerlo? Nos han hablado de https://www.wpallimport.com/woocommerce-product-import/ pero es bastante caro y pago anual.

Luego tenemos que crear un cron en el hosting, nos podeis ayudar con toda esta tarea? 

Muchas gracias,

Roberto.

Contenido solo visible a usuarios registrados


 
Respondido : 21/07/2025 10:23 am
Pepe
 Pepe
Respuestas: 41323
Illustrious Member Admin
 

Hola Roberto.

El CSV lo descargáis vosotros o los datos los recoge de una URL que os proporciona vuestro proveedor ? la UIRL del archivo es del servidor de vuestro proveedor o esta por ejemplo en Google google sheets ?

No es fácil lo que buscas pero si nos das un poco mas de información podríamos ver si se puede hacer algo.

 

Un Saludo


 
Respondido : 21/07/2025 11:09 am
Respuestas: 203
Reputable Member
Topic starter
 

Hola @pepesoler, el csv está en un ftp del proveedor,

A continuación envío información para acceder a la FTP para la descarga de ficheros CSV con la información de los productos.

Servidor: http://www.albainox.com&source=gmail&ust=1753183040160000&usg=AOvVaw2zGfYJ-X_ch-CuASGoot0 t">www.albainox.com

con un usuario y contraseña entramos en una carpeta donde hay varios archivos y uno de ellos es el csv con la información de los productos, mando un ejemplo en captura: 

el csv tiene estos campos pero nosotros solo queremos ver por cada producto que tenemos en la web, que no son todos, si hay o no stock:

Un saludo y cualquier pregunta me dices!

Muchas gracias,

Roberto.


Esta publicación ha sido modificada el hace 4 meses por Pepe
 
Respondido : 21/07/2025 11:24 am
Pepe
 Pepe
Respuestas: 41323
Illustrious Member Admin
 

Hola Roberto.

Por FTP no podrás hacerlo de manera fácil ya que se tiene que conectar al servidor del distribuidor.

Si que hay plugins que lo permiten pero en su version Pro ( De pago ) por ejemplo:

-> https://es.wordpress.org/plugins/product-import-export-for-woo/

Se podría crear una función para que se actualice pero eso ya seria algo a medida, te puedo poner un ejemplo:

add_action('init', 'programar_actualizacion_stock');
function programar_actualizacion_stock() {
if (!wp_next_scheduled('actualizar_stock_csv_ftp')) {
wp_schedule_event(time(), 'hourly', 'actualizar_stock_csv_ftp');
}
}

add_action('actualizar_stock_csv_ftp', 'descargar_y_actualizar_stock');
function descargar_y_actualizar_stock() {
$ftp_host = 'ftp.distribuidor.com';
$ftp_user = 'usuario';
$ftp_pass = 'contraseña';
$remote_file = '/ruta/archivo.csv';
$local_file = WP_CONTENT_DIR . '/uploads/archivo-stock.csv';

$conn = ftp_connect($ftp_host);
if ($conn && ftp_login($conn, $ftp_user, $ftp_pass)) {
ftp_get($conn, $local_file, $remote_file, FTP_BINARY);
ftp_close($conn);

if (file_exists($local_file)) {
$csv = array_map('str_getcsv', file($local_file));
foreach ($csv as $i => $row) {
if ($i === 0) continue; // saltar cabecera
$sku = trim($row[0]);
$stock = (int) $row[1];

if ($sku) {
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id) {
$product = wc_get_product($product_id);
$product->set_stock_quantity($stock);
$product->set_manage_stock(true);
$product->save();
}
}
}
}
}
}

 

Un Saludo


 
Respondido : 21/07/2025 12:04 pm
Roberto reaccionó
Respuestas: 203
Reputable Member
Topic starter
 

ok, Muchas gracias!!


 
Respondido : 21/07/2025 4:49 pm
Bruno
Respuestas: 6558
Illustrious Member Moderator
 

Hola Roberto,

Segun entiendo hemos podido aclarar el motivo de tu consulta por lo que la marcaremos como completada

Si tienes alguna otra duda estaremos atentos

Saludos!


 
Respondido : 21/07/2025 5:04 pm