Bonjour,
Ce que vous décrivez indique que le système n'arrive pas à créer ces entrées suite à la modification car il n'arrive pas à découper correctement le code produit.
En effet, le code plus bas:
foreach($new_variants as $v) {
if((int)$v->product_parent_id != (int)$product_id) {
foreach($variants[(int)$v->product_parent_id] as $k => $variant) {
if($auto_variants == 2 && in_array($k, $characteristic_ids))
continue;
$data[] = (int)$variant . ',' . (int)$v->product_id;
}
}
$codes = explode('_', $v->product_code);
$codes = array_slice($codes, -$count_values);
foreach($codes as $code) {
if(isset($value_characteristic[ (int)$code ]))
$data[] = (int)$code . ',' . (int)$v->product_id;
}
}
génère les entrées à ajouter dans la table hikashop_variant pour les nouvelles variantes créées. Et il se base sur les codes des variantes.
Il va falloir changer le code:
if(isset($value_characteristic[ (int)$code ]))
$data[] = (int)$code . ',' . (int)$v->product_id;
et remplacer $code, qui contient du coup l'alias de la valeur de caractéristique par l'id correspond dans hikashop_characteristic.
Donc il va falloir faire une nouvelle requête en plus pour chaque entrée ou alors précharger cela avant...
Quelque chose comme cela par exemple:
$this->database->setQuery('SELECT characteristic_id FROM #__hikashop_characteristic WHERE characteristic_alias = '.$this->database->Quote($code));
$code = $this->database->loadResult();
if(isset($value_characteristic[ (int)$code ]))
$data[] = (int)$code . ',' . (int)$v->product_id;