这是我的第一篇文章,所以我希望一切都正确发布。我有这个ws.php试图从我的woocommerce连接到主要的库存系统,当我尝试运行它时,它没有给出任何错误,但它只是不更改任何库存项目。我得到的消息是我在ws上说的最后一项,即任何项目已更新。
ws代码如下:
<?php
// Conexión a la bdd, cambiar server, username y pass.
//$conexion = mysqli_connect('127.0.0.1', 'root', ''); // BETA
$conexion = mysqli_connect('localhost', '', ''); // PRODUCCION
// Chequea la conección, si no se conecta, muere y tira error.
if(!$conexion){
die('No se pudo conectar: ' . mysqli_error());
}
// Conexión con la base de datos.
//$bdd = mysqli_select_db($conexion, 'pimenton'); //BETA
$bdd = mysqli_select_db($conexion, ''); //PRODUCCION
// Chequea la conección a la bdd, si no se conecta, muere y tira error.
if (!$bdd) {
die ('No se pudo conectar a la base de datos : ' . mysqli_error());
}
// Trae las funciones de WooCommerce
//require_once '/includes/wc-product-functions.php';
/************ TRAE EL TODOS LOS sku PARA CONSULTAR EL WS ************/
// además trae el post_id para luego actualizar.
// Query para traer el post_id y sku.
$sql = "SELECT `meta_value`, `post_id` FROM `wp_postmeta` WHERE `meta_key` = '_sku'";
//$sql .= " LIMIT 20";
$contador = 0;
$resultado = mysqli_query($conexion, $sql);
if($resultado){
while($row = mysqli_fetch_assoc($resultado)){
$sku = $row['meta_value'];
//$sku = '410270001';
$postID = $row['post_id'];
//$postID = '18170';
if($sku){
echo '<br>'."\n\n".'sku: ' . $sku . ' <br>'."\n";
echo 'post_id: ' . $postID . ' <br>'."\n";
$xml = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<StockArticuloCentral xmlns="http://genesys.com.uy/POSCommWebOL/">
<IdArticulo>' . $sku . '</IdArticulo>
</StockArticuloCentral>
</soap:Body>
</soap:Envelope>';
$url_webservice = 'http://darcyonline.no-ip.org:50000/POSCommWebOL/Service.asmx';
$url_accion = 'http://genesys.com.uy/POSCommWebOL/StockArticuloCentral';
$cliente = new SoapClient(null, array(
'location' => $url_webservice,
'uri' => "",
'trace' => 1,
));
try{
$respuesta = $cliente->__doRequest($xml, $url_webservice, $url_accion, 1);
$respuesta_limpia = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $respuesta);
$parseado = simplexml_load_string($respuesta_limpia);
$stock = $parseado->Body->StockArticuloCentralResponse->StockArticuloCentralResult->Disponible[0];
//$stock = 99; // DEBUGGER
echo 'stock en ws: ' . $stock . ' <br>'."\n";
}
catch (SoapFault $exception){
var_dump(get_class($exception));
var_dump($exception);
}
/************ ACTUALIZA EL STOCK ************/
if($postID){
/** VERSION SQL */
// Query para checkear el stock actual en WP-Woo
$sql_5 = "SELECT `meta_value`, `post_id` FROM `wp_postmeta` WHERE `post_id` = " . $postID . " AND `meta_key` = '_stock';";
$resultado_5 = mysqli_query($conexion, $sql_5);
if($resultado_5){
while($row = mysqli_fetch_assoc($resultado_5)){
$stock_woo = $row['meta_value'];
};
};
echo 'stock web: '.$stock_woo.' <br>'."\n";
if( (int)$stock == (int)$stock_woo){
echo 'no se necesita actualizar stock'. ' <br>'."\n";
}else{
// Query para actualizar el stock
$sql_3 = "UPDATE `wp_postmeta` SET `meta_value` = " . $stock . " WHERE `post_id` = " . $postID . " AND `meta_key` = '_stock';";
$resultado_3 = mysqli_query($conexion, $sql_3);
if($resultado_3){
echo 'se actualizó stock a: '.$stock.' <br>'."\n";
$contador++;
};
/*** SI STOCK MAS DE 10, CAMBIA ESTADO A DISPONIBLE ***/
if( (int)$stock >= 5 && $stock_woo < 5){
$sql_4 = "UPDATE `wp_postmeta` SET `meta_value` = 'instock' WHERE `post_id` = " . $postID . " AND `meta_key` = '_stock_status';";
$resultado_4 = mysqli_query($conexion, $sql_4);
if($resultado_4){
echo 'se actualizó stock status a: instock <br><br>'."\n";
};
}elseif( (int)$stock < 5 && $stock_woo >= 5){
$sql_4 = "UPDATE `wp_postmeta` SET `meta_value` = 'outofstock' WHERE `post_id` = " . $postID . " AND `meta_key` = '_stock_status';";
$resultado_4 = mysqli_query($conexion, $sql_4);
if($resultado_4){
echo 'se actualizó stock status a: outofstock <br><br>'."\n";
};
}elseif( (int)$stock >= 5 && $stock_woo >= 5){
echo 'no se necesita actualizar stock status <br><br>'."\n";
}elseif( (int)$stock < 5 && $stock_woo < 5){
echo 'no se necesita actualizar stock status <br><br>'."\n";
};
/*** FIN SI STOCK MAS DE 10, CAMBIA ESTADO A DISPONIBLE ***/
};
/** FIN VERSION SQL **/
/** VERSION CON FUNCION WC **/
//$result = wc_update_product_stock($postID, $stock);
//echo $result;
/** FIN VERSION CON FUNCION WC **/
};
};
}; // cierra while $row
}; // cierra if $resultado
// Cierra la conexión con la bdd.
mysqli_close($conexion);
echo "\n\n".'cantidad actualizados : '.$contador.'<br><br>'."\n";
?>
有人可以帮助我吗?