Supprimer le vendeur principal de la liste déroulante du choix du vendeur

  • Posts: 41
  • Thank you received: 1
6 years 3 months ago #286129

-- url of the page with the problem -- : www.biocentrelab.fr/produits.html
-- HikaShop version -- : 3.2.2
-- HikaMarket version -- : 2.0.1
-- Joomla version -- : 3.7.3

Bonjour,
Lors de la commande, les clients peuvent choisir le vendeur dans une liste déroulante.
Pour cela, j'ai créé un champs personnalisé type "sélection vendeur".



Concernant le paramétrage des vendeurs:
-J'ai le vendeur principal, qui doit pouvoir fonctionner comme un administrateur, et donc pouvoir voir l'ensemble des commandes des autres "sous-vendeurs". Le vendeur principal de doit pas apparaitre et ne doit pas pouvoir être sélectionné par les clients dans le menu déroulant lors de la commande!
-Puis il y à 7 "sous vendeurs", qui ne peuvent voir que leurs commandes avec des droits limités.

Mon problème est que lors d'une commande, au chargement de la page, dans ma liste déroulant "choix vendeur", le vendeur qui est sélectionné par défaut est le vendeur principal!

Comment faire pour:
- supprimer de cette liste le vendeur principale
-qu'au chargement de la page, aucun "sous-vendeur" ne soit sélectionné par défaut! Il faudrait le champs vide, ou idéalement avec un message du type "sélectionnez le vendeur".
-Que la sélection d'un sous vendeur soit obligatoire

J'ai trouvé un post ancien sur le forum, mais j'ai essayé le code, et cela ne fonctionne pas! (peut etre que le code à changé entre les version de hikashop et hikamarket)
www.hikashop.com/support/forum/19-hikama...-dropdown-field.html

Attachments:

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

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
6 years 3 months ago #286187

Bonjour,

Je pense que dans un premier temps le mode "namebox" devrait vous permettre d'éviter d'avoir une valeur par défaut.
Il vous faudra par contre bien sauvegarder le champs sans la valeur par défaut.

Pour ce qui est du mode "liste déroulante", j'ai ajouté une "feature request" dans HikaMarket afin de gérer l'option "please select" qui est disponible dans certains champs personnalisés d'HikaShop.
Le but étant d'ajouter une entrée avec une valeur nulle, empêchant la validation du champs requis tant que l'utilisateur n'a pas sélectionné lui même de valeur.

Une solution permettant de ne plus faire apparaître du tout votre vendeur serait de modifier le "vendor_published" afin de dé-publier le vendeur principal.
Il ne devrait pas y avoir d'effet de bord problématique à faire cela si vous n'utilisez réellement pas le vendeur principal.
L'autre solution étant d'aller modifier la fonction "getList" de la class "vendor" d'HikaMarket afin d'exclure le vendor_id 1 des résultats.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 41
  • Thank you received: 1
6 years 3 months ago #286190

Bonjour.
Merci pour votre reponse.

Afin de tester les deux solutions proposées pour voir ce qui fonctionne le mieux, pouvez vous me donner plus de defail:

-à quel endroit doit on modifier le "vendor-published", et qu'elle modification dois je apporter?

-concernant la fonction getlist de la class vendor, qu'elle fichier dois je modifier, et qu'elle code dois je modifier?

Merci par avance pour votre réponse.

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

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
6 years 2 months ago #286224

Bonjour,

Le patch pour le support du "please select" a été fait ; il sera inclus dans la prochaine release.

Pour la modification du "vendor_published" du vendeur principal ; il faut aller directement dans la base de données.
La table #__hikamarket_vendor contient les données des vendeurs et le vendeur avec un ID 1 est le vendeur principal.
Il s'agit d'un vendeur spécial créé durant l'installation et qui corresponds au vendeur de votre boutique.
C'est le vendeur que vous éditez dans la configuration générale d'HikaMarket ; et puisqu'il s'agit d'un vendeur spécial certains éléments ne sont pas proposés, tel que le bouton pour publier ou dépublier le vendeur.

Pour la fonction "getList" ; il s'agit du fichier "administrator/components/com_hikamarket/classes/vendor.php".
Vous trouverez le code

		unset($vendor);

		return $vendorList[$key];
Et il vous faudra ajouter un petit ligne pour enlever le vendeur 1 :
		unset($vendor);
		unset($vendorList[$key][1]);

		return $vendorList[$key];

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 41
  • Thank you received: 1
6 years 2 months ago #286231

Bonjour,
Personnellement, je ne veux pas toucher à la base de donnée.
J'ai donc fait la deuxième methode, et cela fonctionne parfaitement, merci pour votre aide.

Je vais cependant attendre la prochaine release, car cela sera parfait d'avoir le "please select".
Avez vous une idée de sa disponibilité?
Est il possible d'être alerté par un mail?
Comment faudra t elle l'installé?

Merci par avance pour ces dernière précisions, ét désolé de vous avoir autant sollicité des derniers jours.

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

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
6 years 2 months ago #286236

Bonjour,

Il y a encore quelques développements en cours pour HikaMarket que je souhaite terminer avant la release.
Au niveau du patch, vu qu'il concerne plusieurs fichiers ; il ne va pas être simple de vous fournir les instructions comme cela.
Mais vous pouvez toujours modifier le fichier "administrator/components/com_hikamarket/types/vendor_selection.php" et remplacer

	return JHTML::_('select.genericlist', $vendors, $map, $options, 'value', 'text', $value, $id);
Par
	$vendors = array_merge( array(0 => JText::_('PLEASE_SELECT')), $vendors);
	return JHTML::_('select.genericlist', $vendors, $map, $options, 'value', 'text', $value, $id);
Afin de forcer l'utilisation du "please select".
Sachant que la fonction n'est utilisée que par ce plugin vous n'aurez pas d'effet de bord.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 41
  • Thank you received: 1
6 years 2 months ago #286259

bonjour

cela fonctionne, j'ai bien le "please select" au chargement de la page.


Par contre le client peut valider la commander même si il ne sectionne pas le vendue et laisse le champs avec "please select".
Une idée pour interdire cela?

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

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
6 years 2 months ago #286279

Bonjour,

Sachant que d'après votre capture d'écran le champs est requis, il doit logiquement fonctionner comme les autres champs HikaShop.
La fonction "check" dans le plugin est identique aux function des autres champs, il doit donc refuser la valeur "0".
Vous pouvez à la limite voir pour modifier la ligne précédente

$vendors = array_merge( array(0 => JText::_('PLEASE_SELECT')), $vendors);
Par
$vendors = array_merge( array('' => JText::_('PLEASE_SELECT')), $vendors);
Mais je ne suis pas certain que cela change grand chose.

Après il faudrait avoir plus de détails sur le reste de votre configuration ; comment vous affichez le champs personnalisé.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 41
  • Thank you received: 1
6 years 2 months ago #286919

Bonjour,

Je reviens vers vous concernant ce ticket, car je viens de m'apercevoir d'un problème!

Afin d'avoir dans mon champs de sélection du vendeur, le "please select", vous m'aviez indiqué de modifier le fichier: "administrator/components/com_hikamarket/types/vendor_selection.php" en rajoutant le code: $vendors = array_merge( array(0 => JText::_('PLEASE_SELECT')), $vendors);

Cela avait fonctionné; le "please select" apparaissait bien, cependant le client pouvait valider la commande sans modifier la valeur du champs!

Vous m'aviez conseillé de modifier par: $vendors = array_merge( array('' => JText::_('PLEASE_SELECT')), $vendors);
Cela avait également fonctionnait; on ne pouvait pas valider la commande sans choisir le vendeur.


Cependant, depuis les modifications, je m’aperçoit que les commandes ne sont pas attribuées au bon vendeur.
En me connectant avec le vendeur principal (vendeur admin), je constat que ce n'est pas la valeur du champs sélectionné par le client qui est envoyé.

Comment puis résoudre le problème pour que les commandes soient bien attribué au bon vendeur?

J'ai fait quelques tests:

avec le code: return JHTML::_('select.genericlist', $vendors, $map, $options, 'value', 'text', $value, $id);
Test 1 => Le client à choisi "site de saint lo"
Test 2 => le client à choisi "site de coutances"
Dans ce cas les commandes sont biens envoyés aux bons vendeurs

avce le code $vendors = array_merge( array(0 => JText::_('PLEASE_SELECT')), $vendors);
return JHTML::_('select.genericlist', $vendors, $map, $options, 'value', 'text', $value, $id);

Test 3 => le client n'a pas choisi de vendeur est a laissé le champs avec "please select"
Test 4 =>le client à choisi "site de saint lo"
Test 5 => le client a choisi "site de coutances"

Avec le code: $vendors = array_merge( array('' => JText::_('PLEASE_SELECT')), $vendors);
return JHTML::_('select.genericlist', $vendors, $map, $options, 'value', 'text', $value, $id);

Test 6 => le client a chois "site de saint lo"
Test 7 => le client a choisi "site de coutances"

Résultats:



ci dessous le paramétrage des vendeurs:

Attachments:

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

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
6 years 2 months ago #286921

Bonjour,

En effet, j'avais zappé le fait que "array_merge" fasse perdre l'indexation du table.
Il faut alors utiliser l'operateur d'union.

$vendors = array('' => JText::_('PLEASE_SELECT')) + $vendors;

Ayant toujours cette modification dans la "todo" d'HikaMarket 2.0.2 ; je n'ai pas encore fait les tests nécessaire et c'est malheureusement du code non testé que je vous fournis.
Mais l'opérateur union semble bien plus adapté :
php.net/manual/en/function.array-merge.php

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

  • Posts: 41
  • Thank you received: 1
6 years 2 months ago #286966

Bonjour,

Merci, maintenant tout fonctionne correctement

The following user(s) said Thank You: Jerome

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

Moderators: Obsidev
Time to create page: 0.097 seconds
Powered by Kunena Forum