Bonjour tout le monde,

c'est mon premier poste ici

Voilà, nous avons une caisse en ligne (hiboutik.com) qui est utilisé pour notre boutique physique pres de BREST.
nous avons aussi une boutique prestashop qui sert de drive.

Quand un client passe en caisse, les stock hiboutik sont modifiées, et nous avons un script fourni par hiboutik qui permet via un cron toute les 5 minutes d'envoyer les nouveaux stocks sur notre boutique prestashop (directement sur la base.
Nous avons une connection a l'API hiboutik qui nous permet de recuperer les stocks et de les importer sur prestashop.

Ma question est celle ci, j'aimerais avoir un script qui fait le chemin inverse apres une vente sur prestashop, que les stock prestashop soit envoyé vers hiboutik...
car ca va seulement dans un sens.
Ex : j'ai 10 pommes sur hiboutik, donc sur prestashop aussi. Un client passe en caisse avec une pomme, les stocks hiboutik diminue, et donc les stock prestashop aussi. Le hic, c'est que lorsqu'un client passe sur prestashop, il en prend 1... donc ca fait 9 pommes restantes, mais rien ne l'indique a hiboutik, qui reste a 10... 5 minutes plus tard, le cron se lance... et hop les stock de pommes sur prestashop reviennent à 10.

l'idee serait qau'a chaque vente prestashop, un autre script envoi les stocks restant sur prestashop...

le script hiboutik qui fonctionne pour actualisé les stock sur prestashop est celui ci :
Que doit je modifier pour que ca aille dans l'autre sens, vers HIBOUTIK ??

merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
 
 
}
?>