1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| <?
/*
####################################################################################################
//Constantes à adapter selon votre compte Hiboutik et votre base de données Prestashop
####################################################################################################
*/
require __DIR__ . '/vendor/autoload.php';
use \Curl\Curl;
//API REST Hiboutik
$url = "https://demo.hiboutik.com/apirest";
$user = "contact@hiboutik.com";
$key = "";
//Base de données de votre Prestashop (cf. /prestashop/config/settings.inc.php)
$mysql_host = "localhost";
$mysql_user = "";
$mysql_pass = "";
$mysql_db = "";
$mysql_db_prefix = "ps_";
$en_verbose = 0;
$ma_date = date("Y-m-d H:i:s");
/*
####################################################################################################
//Connexion MySQL et ajustement des noms des tables
####################################################################################################
*/
$mysqli = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db);
if (mysqli_connect_errno($mysqli)) {
echo "Echec lors de la connexion à MySQL : " . mysqli_connect_error();
}
$mysqli->set_charset("utf8");
$table_product_attribute = $mysql_db_prefix . "product_attribute";
$table_product = $mysql_db_prefix . "product";
$table_stock_available = $mysql_db_prefix . "stock_available";
/*
####################################################################################################
//Connexion à l'API Hiboutik et récupération du stock disponible sur la warehouse 1
####################################################################################################
*/
$curl = new Curl();
$curl->setBasicAuthentication($user, $key);
$curl->get("$url/stock_available/warehouse_id/1");
if ($curl->error)
{
echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage;
}
else
{
//récupération du stock disponible
$stock_available = $curl->response;
foreach ($stock_available as $key => $value) {
$id_prod_sa = $value -> product_id;
$id_prod_taille_sa = $value -> product_size;
$stock_dispo[$id_prod_sa][$id_prod_taille_sa] = $value -> stock_available;
}
/*
####################################################################################################
//Traitement des produits avec déclinaisons
####################################################################################################
*/
$sql_produits_prestashop = "SELECT * FROM $table_product_attribute WHERE reference <> '';";
$result_produits_prestashop = mysqli_query ($mysqli, "$sql_produits_prestashop");
$nombreligne_produits_prestashop = $result_produits_prestashop->num_rows;
if ($en_verbose == "1") print("<br />$sql_produits_prestashop --> $nombreligne_produits_prestashop");
while ($row = $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
{
$reference = $row["reference"];
$id_product = $row["id_product"];
$id_product_attribute = $row["id_product_attribute"];
if (preg_match('/|/', $reference))
{
$reference_presta = explode("|", $reference);
$id_prod_hibou = $reference_presta[0];
$id_taille_hibou = $reference_presta[1];
$qtity = $stock_dispo[$id_prod_hibou][$id_taille_hibou];
if (is_numeric($qtity))
{
$ma_requete_modif_produit = "UPDATE $table_stock_available SET quantity = '$qtity' WHERE id_product_attribute = '$id_product_attribute' AND id_product = '$id_product';";
$mysql_query_modif_account = mysqli_query ($mysqli, "$ma_requete_modif_produit");
if ($en_verbose == "1") print("<br />$ma_requete_modif_produit");
}
}
}
$result_produits_prestashop->free();
/*
####################################################################################################
//Traitement des produits sans déclinaisons
####################################################################################################
*/
$sql_produits_prestashop = "SELECT * FROM $table_product WHERE reference <> '';";
$result_produits_prestashop = mysqli_query ($mysqli, "$sql_produits_prestashop");
$nombreligne_produits_prestashop = $result_produits_prestashop->num_rows;
if ($en_verbose == "1") print("<br />$sql_produits_prestashop --> $nombreligne_produits_prestashop");
while ($row = $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
{
$reference = $row["reference"];
$id_product = $row["id_product"];
$qtity = $stock_dispo[$reference]["0"];
if (is_numeric($qtity))
{
$ma_requete_modif_produit = "UPDATE $table_stock_available SET quantity = '$qtity' WHERE id_product = '$id_product';";
$mysql_query_modif_account = mysqli_query ($mysqli, "$ma_requete_modif_produit");
if ($en_verbose == "1") print("<br />$ma_requete_modif_produit");
}
}
$result_produits_prestashop->free();
}
?> |
Partager