ptibogxiv / adherentsplus

New adherent module for Dolibarr, comptible with my module Doliconnect for Wordpress/Dolibarr sync
https://www.ptibogxiv.net
GNU General Public License v3.0
13 stars 8 forks source link

Adhésion : workflow contre intuitif et problématique #13

Open Kwagga-Quagga opened 5 years ago

Kwagga-Quagga commented 5 years ago

bonjour :)

un élément du workflow pour l'adhésion en ligne est contre intutif et problématique :


Cas simple d'un nouveau compte utilisateur-wp tiers-dolibarr

L'utilisateur souhaite adhérer, il suis les étapes suivantes (classique du workflow)

ok

parfait


mais...

l'utilisateur ne s'occupe pas du paiement tout de suite, ce qui est fréquent... il ne revient que plus tard, pour finaliser son adhésion, donc trouver l'adresse d'envoi du chèque (la payer)

quel reflexe a-t-il ? aller sur adhésion/abonnement ou commande ?

LE PROBLEME : c'est une deuxième commande

OR ilvoulais simplement payer son adhésion, ne souhaitais pas souscrire à une deuxième adhésion, et dans l'absolu ne devrait pouvoir faire qu'une comande d'adhésion par an (ou cycle d'adhésion)

du coup un utilisateur

In fine : dans ce cas de figure hyper fréquent en association [doliaccount] > adhésion/abonnement > payer > devrait rediriger l'utilisateur vers sa comande en cours et non en créer une autre.

D'autant plus que dans dolibarr il n'y à qu'un seul adhérent (logique), pas dashésion (logique aussi puise qu'on à pas validé le paiementà), mais bien plusieurs commandes (logique, mais merdique)

j'espère que je suis compréhensible ???

ptibogxiv commented 5 years ago

à refléchir mais ça demande modifications lourdes dans dolibarr donc ça ne sera fait de suite...

Kwagga-Quagga commented 5 years ago

oui j'entends bien qu'on est étroitement lié au workflow dolibarr dans ce cas précis.

mais...

depuis l'api est il possible de voir

si oui, surtout pour le second, il devrait être possble de tester si un utilisateur à une comande d'adhésion en cours. et si oui, quand il va dans adhésion, au lieux que le bouton payer déclanche une nouvelle comande, il le redirige vers le suivi de sa commande d'adhésion

le bouton contient "payer mon adhésion" lorsque la commande n'est pas encore passée, et "suivre mon adhésion" si une première commande d'adhésion est passé.

Je sais que ça ecarte un peu le module du workflow dolibarr, mais on peut peut être la jouer fine, et faire en sorte que ce soit une option du module. Dans les paramère du module il y aurait une case à cocher "une seule comande d'adhésion à la fois" si elle n'est pas coché, tout ce passe comme d'habiture, mais si on la coche, une fonction qui teste si une adhésion est liée à une comande en cours est exécute, et change le comportement du bouton "payer son adhésion"/"suivre mon adhésion"

Ca semble réaliste, à vu de nez non?

ptibogxiv commented 5 years ago

tu oublies que ça doit rester standard et supporter d'autres modules... donc en partie faisable mais ça va etre loin dans ma TODO list et nécessite reflexion.

donc ça sera fait pas vraiment pas de suite...

Kwagga-Quagga commented 5 years ago

oui oui bien sûr,

c'est un retour utilisateur, après on fait ce qu'on peux quand on peux, bien sûr, si c'est pertinent

si on pense le problème autrement, il ne s'agit pas de changer le workflow, pas du tout on peut tout à fait souhaiter dire que les adhérents n'on droit qu'à une comande de tel type par an. par exemple un club sportif peut décider qu'un adhérent à droit à un maillot du club par an qu'il paye, la n'est pas la question, mais d'avantage que le club va lui même comandé des maillots floqués et n'aura pas de stock supplémentaire. Donc de la même manière que l'on ne permet pas de comander des article en rupture de stock, on ne permet pas de commande tel service ou produit plus de x fois par an, ou tant qu'ul est validé

en fait c'est exactement ce qui se passe avec les adhésion, quand l'adhsion et validé, on ne peux pas en commander une autre depuis l'espace adhésion, donc ce problème de multiplication des comande d'adhésion est vraiment liéà un trou dans la temporalité de la gestion de la comande,

c'est exactement comme-ci je voulais suive l'avancement de ma comande dans un site de vente en ligne, et quand je vais pour voir ou ça en est j'en fait une autre malgré moi.

pour moi, l'adhérent suis son adhésion, pas sa comande, il ne sait même pas que son adhésion est avant tout une commande, donc on véruille la possibilité de faire une deuxième comande de ce type tant que la première n'est pas traitée, et une fois la première traitée, l'utilisateur ne sera même plus invité à en faire une deuxième.

c'est vraiment pas un truc profond, juste une question de visualisation de suivi de comande.

ptibogxiv commented 5 years ago

C'est l'apparence que ça donne mais non faut faire grosses modif 😅

Le visuel ne reflète pas les changements et nécessité derrière....

Kwagga-Quagga commented 5 years ago

yes, je sais pas,

je dis peut être une connerie, mais

si j'en crois le fichier doliconnect-fr_FR.po lignes 370-372

#: doliconnect.php:1417 functions/dashboard.php:1328
msgid "Pay my subscription"
msgstr "Payer mon adhésion"

j'ai l'impression que ça se joue dashboard.php ligne 1327-1329

et qu'il suffirait d'ajouter un test dans le code suivant


} elseif ( ( $adherent->datefin + 86400 ) > $time ) {
echo  "<button id='subscribe-button2' class='btn btn text-white btn-warning btn-block' data-toggle='modal' data-target='#activatemember'><b>".__( 'Modify my subscription', 'doliconnect' )."</b></button>";

AJOUTER UN TEST ICI

}else { echo  "<button class='btn btn btn-danger btn-block' data-toggle='modal' data-target='#activatemember'><b>".__( 'Pay my subscription', 'doliconnect' )."</b></button>";

en pseudo code ça donnerait


} elseif ( ( $adherent->datefin + 86400 ) > $time ) {
echo  "<button id='subscribe-button2' class='btn btn text-white btn-warning btn-block' data-toggle='modal' data-target='#activatemember'><b>".__( 'Modify my subscription', 'doliconnect' )."</b></button>";

PSEUDOCODE
} elseif  (si l'adhérent à une commande en cours qui contient le service/produit **adhésion**) {
afficher le bouton "suivre mon inscription" qui redirige vers la comande contenant le produit/service adhésion };

PSEUDOCODE

}else { echo  "<button class='btn btn btn-danger btn-block' data-toggle='modal' data-target='#activatemember'><b>".__( 'Pay my subscription', 'doliconnect' )."</b></button>";

ça suffirait lagement à faire le job,

bien sûr pour faire propre, l'idée ne serait pas de mettre ce code ici, mais ailleurs et de l'appeler ici ou non au choix ?

ça te semble ésotérique ?

pour moi l'enjeux c'est la requette api qui va me dire si un client à une comande en cours ? si cette commande contient tel service/produit ?

j'avance à petit pas

avec ça je trouve mon tiers, et donc son id de tier https://test.quagga.fr/dolibarr/htdocs/api/index.php/thirdparties?sqlfilters=(rowid%3A%3D%3A'10')

avec ça et son id de tier je trouve les comande de ce tiers https://monsite.fr/dolibarr/htdocs/api/index.php/orders?sqlfilters=(fk_soc%3A%3D%3A'10'')

avec ça et la ref de sa comande de tier je trouve les comande de ce tiers https://monsite.fr/dolibarr/htdocs/api/index.php/orders?sqlfilters=(fk_soc%3A%3D%3A'10'')

avec ça je trouve le service associé aux adhésions https://monsite.fr/dolibarr/htdocs/api/index.php/products?sqlfilters=(rowid%3A%3D%3A'3')

après ça roule non ?

ptibogxiv commented 5 years ago

Justement non... Rien ne sera depuis mon module la requête doit être interne dans dolibarr et récupérable ensuite...

Si c'était facile et rapide je l'aurais déjà fait...

Kwagga-Quagga commented 5 years ago

ok, j'insiste un peu, mais il y a quelque chose que je ne comprends pas bien.

1) Est-ce une question de posture prise dans le développement de doliconnect, posture qui impose de restreinde doliconnect à se comporter comme dolibarr, et ne faire apparaitre ce que dolibarr propose déjà via l'api ?

Si oui, la logique est la suivante : si dolibarr est d'accord pour qu'un tier passe plusieurs comande d'un même service/produit, même si ce service/produit correspond a l'adhésion alors que l'adhésion ne peut par définition qu'être qu'unique, doliconnect suis dolibarr.

C'est bien ça ?


2) Autrement, à moins que je me trompe, en continuant mon bonhome de chemin ci dessus, je vais bien être en mesure de changer le comportement de ce bouton "payer mon adhésion" ? non ?

parce que avec ça https://monsite.fr/dolibarr/htdocs/api/index.php/orders?sqlfilters=(fk_soc%3A%3D%3A'13'')

j'ai un json qui contient les comandes de ce tier et les lignes contenu dans ses comande, et donc, l'id des produit/service comandés.

il me suffit de tester si ces lignes continent un produit avec l'ID que je cherche, celui du produit/service adhésion, et si oui --> changement de comportement du bouton

si oui, alors pourquoi ne pas ajouter cette fonctionalité sous forme d'extention de doliconnect, pour qu'elle ne polue par doliconnect et disparaisse lorsque dolibarr aura avancé sur ce point ?

moi ça me parrait être un bon en avant en terme d'ergonomie, mais énorme, je suis étonne que tu n'ai pas eu ce problème de multiple comande d'adhésion de nombreuses fois.

ptibogxiv commented 5 years ago

non pas de ce problème car le paiement en ligne c plus de 80% et le reste virement et presque pas de cheque...

pour le reste, c'est possible mais comme je t'ai dit il faut faire les requête dans dolibarr puis faire le display. A l'heure actuel, ça ne pourra pas etre inclus juste par modif de mon module car bloquera d'autres modules ou utilisateurs du module. tu ne peux pas checker si il y a une commande en cours avec tel produit par API actuellement.

Mais j'ai pris note... et ça sera fait... dès que possible mais pas de suite.

Kwagga-Quagga commented 5 years ago

yop attend j'ai mi à jour mon message ci dessus pendant que tu répondais,

je crois bien qu'il est possible de vérifier ça par l'api, regarde ma requette de plus près ;)

pour toi 80% des adhésions payé en ligne, pour moi environt 50%, donc j'ai bel et bien ce problème et je suis sût que je vais me retrouver avec ça en plein dans la trogne dès la mise en prod !

ptibogxiv commented 5 years ago

ben checker si commande oui mais pas avec tel ou tel produit dedans.... et ça va bloquer pour mon propre usage ou les asso que j'héberge avec cette solution donc pour ça qu'il me faut plus de temps pour solution qui marchera pour tous et évitera aussi les pb dans dolibarr de creation de doublon manuellement par un admin qui ne verra pas qu'il existe une commande en cours.

Kwagga-Quagga commented 5 years ago

ben checker si commande oui mais pas avec tel ou tel produit dedans....

ben si justement, je viens de voir ça, je t'envois un json par email ;-)

en pseudocode


si  (tiers à des comande  = oui){
    boucle  (comande 1à N) {
        boucle (lignes_comandes 1 à N) {
           si (fk_product =  ID-produit/service-adhésion) {
               comportement bouton = suivre comande 
           } 
           else { comportement bouton = payer adhésion
           }
       }
    }
}
else {comportement bouton = payer adhésion
}
ptibogxiv commented 5 years ago

oui je connais cette façon mais cette méthode n'est pas possible pour d'autres utilisateurs doliconnect... C'est pour ça qu'il me faut passer pas une autre méthode au sein de dolibarr / adhérents plus

Kwagga-Quagga commented 5 years ago

oui je connais cette façon mais cette méthode n'est pas possible pour d'autres utilisateurs doliconnect... C'est pour ça qu'il me faut passer pas une autre méthode au sein de dolibarr / adhérents plus

tu peux m'expliquer un peu plus ? je ne comprends pas ce que tu veut dire par "ette méthode n'est pas possible pour d'autres utilisateurs doliconnect... "

c'est vraiment une fonction fondamentale pour moi, même si en l'état actuel il n'est pas possible de faire quelque chose d'élégant avec l'art et la manière, je vais tenter un walkaround je pense

ptibogxiv commented 5 years ago

pour d'autres utilisteurs du module cette methode créera d'autres problèmes, la seule façon propre et léger est de passer par un developpement dans dolibarr et module adhérent pour rendre ça propre et éviter les doublons par les admins.

donc je me répéte, la fonction viendra mais pas de suite dans les prochaines semaines / mois... sinon on passe dans du premium et là je facture à la journée car d'autres choses à faire et intégrer avant plus urgentes.

Kwagga-Quagga commented 5 years ago

pour d'autres utilisteurs du module cette methode créera d'autres problèmes, la seule façon propre et léger est de passer par un developpement dans dolibarr et module adhérent pour rendre ça propre et éviter les doublons par les admins.

ok, je ne sais pas exactement quels éléments il me manque mais apparement il m'en manque. je verrais avec le temps :)

donc je me répéte, la fonction viendra mais pas de suite dans les prochaines semaines / mois... sinon on passe dans du premium et là je facture à la journée car d'autres choses à faire et intégrer avant plus urgentes.

oui, désole si je me suis mal exprimé, mais la n'est pas la question, si la piste que j'explorais te semblait pertinente/fonctionnelle, je pensais la développer moi-même ;)

ptibogxiv commented 5 years ago

cette piste n'est pas non fonctionelle juste que pour d'autres qui ont d'autres workflows cela va créer des problèmes... il faut donc la penser depuis dolibarr et récupérer cette valeur dans wordpress par api....

donc c'est dans ma TODO... mais j'ai bien d'autres demandes commandées avant ;)

Kwagga-Quagga commented 5 years ago

cette piste n'est pas non fonctionelle

ok, je me disais aussi, mince qu'est ci qui ne va pas la dedans :)

juste que pour d'autres qui ont d'autres workflows cela va créer des problèmes... il faut donc la penser depuis dolibarr et récupérer cette valeur dans wordpress par api....

ok, effectivement j'ai pas pensé à tous les autres workflow possibles, et je voyais ça comme un walkaround, pour certains workflow, en attendant quelque chose de parfaitement intégré à dolibarr/adhérents+

donc c'est dans ma TODO... mais j'ai bien d'autres demandes commandées avant ;)

oui oui, pas de souci ;)