Comment modifier le variant par défaut ave une importation Excel?

  • Posts: 243
  • Thank you received: 41
  • Hikashop Business
1 year 6 days ago #357748

Bonjour,

Tous mes produits sont importés à l'aide de fichier Excel .csv dans ma boutique en ligne. Tout fonctionne parfaitement.

Voici mon besoin : pour chaque produit je souhaiterai ajouter de nouveaux variants dont l'un d'eux deviendrait le variant par défaut.
Dans mon site de test, j'ai injecté un fichier Excel pour un produit. Quand je regarde le produit, j'ai le message d'erreur 9 - No default variant selected.

D'où ma question : est-il possible de changer la valeur du variant par défaut sur un produit existant?

J'espère que vous comprendrez ma demande.

Sincèrement,
A. Guillen

Please Log in or Create an account to join the conversation.

  • Posts: 83025
  • Thank you received: 13405
  • MODERATOR
1 year 6 days ago #357755

Bonjour,

oui, c'est tout à fait possible. Vu ce que vous décrivez, il semble que vous avez oublié de remplir les cellules de la ligne produit principal dans votre CSV pour les colonnes des caractéristiques. C'est cela qui permet au système d'import de définir la variante par défaut.

Please Log in or Create an account to join the conversation.

  • Posts: 243
  • Thank you received: 41
  • Hikashop Business
1 year 6 days ago #357763

Bonjour Nicolas,

je vous remercie pour votre réponse rapide.

La bonne nouvelle est qu'il est possible de modifier le variant par défaut.

Je vous ai attaché 2 fichiers csv à titre d'exemple :
- le fichier 01.csv contient un article original avec les variants définis de base.
- le fichier 02.csv contient de nouveaux variants pour ce même article. Je voudrai conserver les variants précédents mais ajouter ces nouveaux. Les caratéristiques existent. Je les ai créés manuellement.
Vous constaterez que j'ai modifié le variant par défaut.

Ma question : ai-je bien entré les informations dans le fichier 02? J'ai l'impression que ce n'est pas la bonne méthode.

Merci par avance pour votre aide

Sincèrement,
A. Guillen

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 83025
  • Thank you received: 13405
  • MODERATOR
1 year 5 days ago #357768

Bonjour,

Donc si je comprends bien vos CSVs, les colonnes "finition" et "taille" correspondent à des caractéristiques.
Avez-vous bien renseigné les nouvelles valeurs dans les caractéristiques ?
Aussi, dans votre CSV 02, les 3 variantes que vous essayez de rajoutées ont toutes la même finition ET la même taille:
i.imgur.com/6nROqaA.png
Je pense que le souci est à ce niveau. Le système n'arrive à rajouter qu'une seule variante sur les 3 du CSV, mais il ne sélectionne pas la bonne en tant que variante par défaut et du coup il y a une divergence.

Please Log in or Create an account to join the conversation.

  • Posts: 243
  • Thank you received: 41
  • Hikashop Business
1 year 5 days ago #357772

Bonjour Nicolas,

je vous remercie pour votre réponse.

Vous avez raison. Je me suis trompé dans les caractéristiques du produit dans le fichier Excel. J'ai ajouté la même caractéristique dans la Taille. J'ai copié/collé. j'ai oublié de corriger.

Je viens de corriger sur un autre produit. Mais le problème subsiste.

Je vous ai attaché :
- des copies d'écran des caractéristiques dans Hikashop.
- une copie d'écran de l'erreur que j'ai après l'importation.
- le fichier .csv données que j'ai importées. Il s'agit du fichier 04.csv.

Je dois certainement passer à côte de quelque chose de simple mais je ne vois pas quoi.

Je suis en train d'effectuer les tests sur un site de test. Si vous voulez je peux vous envoyer les crédits comme je l'avais fait pour le problème de css que j'avais avec la pagination.

Sincèrement,
A. Guillen

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 83025
  • Thank you received: 13405
  • MODERATOR
1 year 5 days ago #357786

Bonjour,

Cela m'a l'air bien maintenant.
Je pense que c'est un problème dans le code du système d'import avec votre cas d'utilisation.
Le système est prévu à la base pour importer des nouveaux produits avec toutes les variantes définies dans le CSV est rien dans la base de données. Dans ce cas, l'import met en place la variante par défaut.
Nous avons ensuite rajouté la mise à jour, qui va d'abord supprimer toutes les variantes présentes pour le produit avant d'importer les variantes dans le CSV. Et dans ce cas aussi, l'import met en place la variante par défaut.
Enfin, nous avons rajouté l'option "Keep other variants" qui permet de faire l'ajout / mise à jour de variantes sans supprimer les variantes déjà existantes. Et je pense que dans ce cas là, le fait de ne pas supprimer le lien entre le produit principal et les valeurs de caractéristiques fait qu'il se retrouve avec les anciens liens et les nouveaux et du coup le système n'arrive plus à trouver la variante par défaut et suppose qu'il n'y en a pas.
Dans le fichier administrator/components/com_hikashop/helpers/import.php, essayez de changer le code:

	function _insertVariants(&$products){
		$values = array();
		$totalValid = 0;
		$insert = 'INSERT IGNORE INTO '.hikashop_table('variant').' (`variant_characteristic_id`,`variant_product_id`) VALUES (';
		$ids = array();

		foreach($products as $product) {
			// Skip not valid products
			if(empty($product->product_id))
				continue;

			if(empty($product->variant_links) && !empty($this->template->variant_links) && empty($product->hikashop_update)) {
				$product->variant_links = $this->template->variant_links;
			}
			if(!empty($product->variant_links)){
				$ids[] = (int)$product->product_id;
				foreach($product->variant_links as $link){
					$value = array((int)$link,(int)$product->product_id);
					$values[] = implode(',',$value);
					$totalValid++;
					if( $totalValid%$this->perBatch == 0){
						if(!empty($ids)){
							if(!$this->keep_other_variants) {
								$this->db->setQuery('DELETE FROM '.hikashop_table('variant').' WHERE variant_product_id IN ('.implode(',',$ids).')');
								$this->db->execute();
							}
							$ids=array();
						}
						$this->db->setQuery($insert.implode('),(',$values).')');
						$this->db->execute();
						$totalValid=0;
						$values=array();
					}
				}
			}
		}
		if(!empty($values)){
			if(!empty($ids) && !$this->keep_other_variants){
				$this->db->setQuery('DELETE FROM '.hikashop_table('variant').' WHERE variant_product_id IN ('.implode(',',$ids).')');
				$this->db->execute();
			}
			$this->db->setQuery($insert.implode('),(',$values).')');
			$this->db->execute();
		}
	}
en:
	function _insertVariants(&$products){
		$values = array();
		$totalValid = 0;
		$insert = 'INSERT IGNORE INTO '.hikashop_table('variant').' (`variant_characteristic_id`,`variant_product_id`) VALUES (';
		$ids = array();

		foreach($products as $product) {
			// Skip not valid products
			if(empty($product->product_id))
				continue;

			if(empty($product->variant_links) && !empty($this->template->variant_links) && empty($product->hikashop_update)) {
				$product->variant_links = $this->template->variant_links;
			}
			if(!empty($product->variant_links)){
				if(!$this->keep_other_variants || $product->product_type == 'main') {
					$ids[] = (int)$product->product_id;
				}
				foreach($product->variant_links as $link){
					$value = array((int)$link,(int)$product->product_id);
					$values[] = implode(',',$value);
					$totalValid++;
					if( $totalValid%$this->perBatch == 0){
						if(!empty($ids)){
							$this->db->setQuery('DELETE FROM '.hikashop_table('variant').' WHERE variant_product_id IN ('.implode(',',$ids).')');
							$this->db->execute();
							$ids=array();
						}
						$this->db->setQuery($insert.implode('),(',$values).')');
						$this->db->execute();
						$totalValid=0;
						$values=array();
					}
				}
			}
		}
		if(!empty($values)){
			if(!empty($ids)){
				$this->db->setQuery('DELETE FROM '.hikashop_table('variant').' WHERE variant_product_id IN ('.implode(',',$ids).')');
				$this->db->execute();
			}
			$this->db->setQuery($insert.implode('),(',$values).')');
			$this->db->execute();
		}
	}
Cela devrait aider. Si vous avez toujours le souci, après avec le fichier 04.csv alors il va falloir étudier l'import directement sur le site et faire du débug pour mieux comprendre ce qui ne va pas.

Please Log in or Create an account to join the conversation.

  • Posts: 243
  • Thank you received: 41
  • Hikashop Business
1 year 5 days ago #357787

Bonjour Nicolas,

merci pour votre correction. Elle fonctionne parfaitement. Le variant par défaut est correctement géré et bien affiché.

Comment dois-je faire? Attendre une correction dans la prochaine release ou intégrer la correction sur mon site de production?

Merci mille fois pour votre aide. C'est vraiment génial.

Sincèrement,
A. Guillen

The following user(s) said Thank You: nicolas

Please Log in or Create an account to join the conversation.

  • Posts: 83025
  • Thank you received: 13405
  • MODERATOR
1 year 5 days ago #357789

Bonsoir,

Intégrez directement la correction sur votre site. Comme cela, vous pourrez utiliser l'import pour faire ce que vous voulez sans attendre.
Nous allons également rajouter le patch pour la prochaine version qui sortira en Janvier donc même après la mise à jour, vous n'aurez rien à faire.

Please Log in or Create an account to join the conversation.

  • Posts: 243
  • Thank you received: 41
  • Hikashop Business
1 year 4 days ago #357802

Je vous remercie Nicolas.

Je viens d'intégrer le fichier modifié dans le site de production.

Je souhaite un joyeux Noël et de belles fêtes de fin d'année.

A. Guillen

The following user(s) said Thank You: nicolas

Please Log in or Create an account to join the conversation.

  • Posts: 83025
  • Thank you received: 13405
  • MODERATOR
1 year 2 days ago #357816

Joyeux Noël également !

Please Log in or Create an account to join the conversation.

Time to create page: 0.076 seconds
Powered by Kunena Forum