Commandes en back-end - Choisir produit

  • Posts: 112
  • Thank you received: 9
  • Hikashop Business
2 years 8 months ago #334243

-- HikaShop version -- : 4.4.3
-- Joomla version -- : 3.9.27
-- PHP version -- : 7.4.20

Bonjour,

Je rencontre un léger souci depuis la dernière mise à jour Hikashop concernant la création/modification de commandes en back-end.

En effet, auparavant, lorsque je souhaitais ajouter un produit à une commande en back-end, je cliquais sur "+Choisir" dans la Liste des produits et je pouvais facilement trouver le produit adéquat en scannant son code-barre car la recherche s'étendait à mon champ personnalisé "EAN". Ce n'est malheureusement plus le cas actuellement. La recherche se porte uniquement sur le nom du produit.

Comment puis-je étendre la recherche à d'autres champs ?

Merci pour votre aide!

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

  • Posts: 81361
  • Thank you received: 13037
  • MODERATOR
2 years 8 months ago #334246

Bonjour,

En effet, c'est un point intéressant que vous nous remontez.
Changez le code:

$query = 'SELECT p.*, c.category_id, c.category_right, c.category_left FROM ' . hikashop_table('product') . ' AS p '.
				' INNER JOIN ' . hikashop_table('product_category') . ' AS pc ON p.product_id = pc.product_id '.
				' INNER JOIN ' . hikashop_table('category') . ' AS c ON c.category_id = pc.category_id '.
				' WHERE (p.product_name LIKE '.$searchStr.' OR p.product_code LIKE '.$searchStr.') AND p.product_type != \'trash\''.
				' ORDER BY p.product_name ASC';
en:
$searchMap = array('p.product_code', 'p.product_name');

			if(hikashop_level(1)) {
				$categories = null;
				$fieldsClass = hikashop_get('class.field');
				$fields = $fieldsClass->getData('all', 'product', false, $categories);
	
				if(!empty($fields)) {
					foreach($fields as $field) {
						if($field->field_type == "customtext")
							continue;
						$searchMap[] = 'p.'.$field->field_namekey;
					}
				}
			}
			$search_filter = '('.implode(" LIKE $searchStr OR ",$searchMap)." LIKE $searchStr".')';

			$query = 'SELECT p.*, c.category_id, c.category_right, c.category_left FROM ' . hikashop_table('product') . ' AS p '.
				' INNER JOIN ' . hikashop_table('product_category') . ' AS pc ON p.product_id = pc.product_id '.
				' INNER JOIN ' . hikashop_table('category') . ' AS c ON c.category_id = pc.category_id '.
				' WHERE '.$search_filter.' AND p.product_type != \'trash\''.
				' ORDER BY p.product_name ASC';
dans le fichier administrator/components/com_hikashop/classes/product.php et cela permettra à la recherche de prendre en compte les champs personnalisés.
Nous allons voir pour rajouter cela dans la prochaine version d'HikaShop.

The following user(s) said Thank You: info@lerenardquitrace.be

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

  • Posts: 112
  • Thank you received: 9
  • Hikashop Business
2 years 8 months ago #334496

Bonjour,
merci pour votre réponse.

La solution fonctionne mais pas dans le cas ou le produit est une variante.

D'autre part pour la vitesse de réalisation, serait-il envisageable que la sélection se fasse une fois que l'utilisateur appuie sur entrée afin de permettre l'usage d'un scanner de code barre pour cibler les produits ?

Merci d'avance.

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

  • Posts: 81361
  • Thank you received: 13037
  • MODERATOR
2 years 8 months ago #334497

Bonjour,

En effet, je n'avais pas pensé à permettre la recherche dans les données des variantes.
Changez le même bout de code qu'avant par:

$columns = array('product_code', 'product_name');

			$joins = array(
				'INNER JOIN ' . hikashop_table('product_category') . ' AS pc ON p.product_id = pc.product_id',
				'INNER JOIN ' . hikashop_table('category') . ' AS c ON c.category_id = pc.category_id',
			);
			if($load_variants) {
				$searchMap[] = 'v.product_code';
				$searchMap[] = 'v.product_name';
				$joins[] = 'LEFT JOIN ' . hikashop_table('product') . ' AS v ON p.product_id = v.product_parent_id';
			}

			if(hikashop_level(1)) {
				$cat = null;
				$fieldsClass = hikashop_get('class.field');
				$fields = $fieldsClass->getData('all', 'product', false, $cat);
	
				if(!empty($fields)) {
					foreach($fields as $field) {
						if($field->field_type == "customtext")
							continue;
						$columns[] = $field->field_namekey;
					}
				}
			}
			$searchMap = array();
			foreach($columns as $column) {
				$searchMap[] = 'p.'.$column;
				if($load_variants) {
					$searchMap[] = 'v.'.$column;
				}
			}
			$search_filter = '('.implode(" LIKE $searchStr OR ",$searchMap)." LIKE $searchStr".')';

			//
			//
			$query = 'SELECT p.*, c.category_id, c.category_right, c.category_left FROM ' . hikashop_table('product') . ' AS p '.
				implode(' ', $joins).
				' WHERE '.$search_filter.' AND p.product_type != \'trash\''.
				' ORDER BY p.product_name ASC';
et cela permettra de faire la recherche parmi les données des variantes également.
Nous allons voir pour rajouter cela dans la prochaine version d'HikaShop.

Par contre, pour votre second point, je pense que le souci est au niveau de votre scanner de code barre.
Un scanner de code barre en usb lit les caractères du code barre et envoi des signaux correspondant, comme si vous aviez appuyé sur votre clavier.
Donc si le code barre scanné n'est qu'une suite de numéro et que vous avez le focus sur le champ de recherche, scanner le code barre va uniquement avoir pour effet de mettre le numéro du code barre dans le champ et de lancer la recherche automatiquement et vous afficher les résultats. Le scanner n'est pas sensé envoyer le signal de la touche "entrée" et valider le formulaire de la popup.
Si c'est le cas de votre coté, alors c'est une question de configuration du scanner de code barre je pense.
En cherchant un peu en ligne, j'ai vu que pas mal de scanner de code barre ont une fonction qui permet de rajouter / enlever des caractères au numéro lu par le scanner.
Par exemple, pour le modèle www.amazon.fr/NetumScan-Scanner-codes-ba...TG9nQ2xpY2s9dHJ1ZQ== le constructeur fourni cette documentation:
download.gzxlscan.com/pdf/Prefix_suffix_...Scanner_V18.7.31.pdf
Et elle permet par exemple de rajouter comme suffix l'appui sur la touche entrée.
Donc je suppose que vous (votre client ?) avez peut être configuré votre scanner pour faire cela et ainsi automatiquement valider le filtrage de l'ancienne interface de la popup où la recherche n'était pas automatique.

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

Time to create page: 0.060 seconds
Powered by Kunena Forum