Web服务未正确连接到库存系统

时间:2019-02-05 13:23:00

标签: javascript php wordpress web-services woocommerce

这是我的第一篇文章,所以我希望一切都正确发布。我有这个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";

?>

有人可以帮助我吗?

0 个答案:

没有答案