Bug dans lien de paiement : member / membersubscription

Bonjour,
j’utilise depuis peu dolibarr, v11.02. J’ai rencontré le problème suivant et je propose une solution :

Module adhérents, module paypal configuré correctement avec sécurité à 1 pour le cryptage.
lorsqu’on crée un adhérent, le hash de cryptage est créé avec le type (ou source) « membersubscription », alors que le hash est généré avec le type « member »,
dans le fichier /public/payment/newpayment.php le type est récupéré sous la variable en GET « source » :

$source = GETPOST("s", 'alpha')?GETPOST("s", 'alpha'):GETPOST("source", 'alpha');
Plus loin dans le code on crée le hash de vérification avec cette variable :
if ($source && $REF) $token = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.$source.$REF, 2);

le problème c’est que la variable en GET récupérée est générée par la fonction getOnlinePaymentUrl qui se trouve dans /core/lib/payments.lib.php,
et cette fonction génère le lien du mail avec un OU || :

	elseif ($type == 'member' || $type == 'membersubscription')
	{
	    $out=$urltouse.'/public/payment/newpayment.php?source=membersubscription&ref='.($mode?'<font color="#666666">':'');

et la source en DUR dans le code est toujours source=membersubscription
du coup le hash de vérification ne fonctionne pas car membersubscription sera toujours la variable en GET

alors que le hash de comparaison est créé avec « member » et non pas « membersubscription »

du coup il faudrait mettre :

$out=$urltouse.'/public/payment/newpayment.php?source='.$type.'&ref='.($mode?'<font color="#666666">':'');

De plus, il faut ajouter un OU || dans le fichier newpayment.php aux environs de la ligne 1367 :

// Payment on member subscription
if ($source == 'membersubscription' || $source == 'member')

Car « member » n’est pas dans la condition.
Si j’ai pu aider…

JC

Bonjour,
Merci pour votre retour, n’hésitez pas à ouvrir une issue sur le dépot github de dolibarr. Les contributions techniques y sont les bienvenues.