Valider 62bbbbda rédigé par rastapopoulos@spip.org's avatar rastapopoulos@spip.org
Parcourir les fichiers

Une nouvelle action permettant de résilier un abonnement : 1) l'abo SPIP sera...

Une nouvelle action permettant de résilier un abonnement : 1) l'abo SPIP sera résilié à la fin de l'échéance en cours (c'est ce qu'on a déjà paayé à priori) et 2) si on trouve que l'abo est lié à un prélèvement bancaire, on appelle l'API de Bank pour l'annuler immédiatement cette fois (on s'assure dès maintenant qu'il n'y aura plus jamais de prélèvement). Si le param a donné est bon, cf le questionnement là https://github.com/nursit/bank/issues/47 
parent 6476064c
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -4,6 +4,7 @@
/abonnements_pipelines.php -text
action/modifier_echeance_abonnement.php -text
action/renouveler_abonnement.php -text
action/resilier_abonnement.php -text
base/abonnements.php -text
css/abonnements_prive.css -text
formulaires/editer_abonnement.html -text
+44 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

function action_resilier_abonnement($id_abonnement=null) {
	if (is_null($id_abonnement)) {
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$id_abonnement = $securiser_action();
	}
	
	if (
		$id_abonnement = intval($id_abonnement)
		and $id_abonnement > 0
		and include_spip('inc/autoriser')
		and autoriser('resilier', 'abonnement', $id_abonnement)
	) {
		include_spip('action/editer_objet');
		include_spip('inc/abonnements');
		
		// L'abonnement SPIP sera désactivé à la fin de l'échéance, on force donc cette date de fin, et on reprogramme dès maintenant la désactivation
		$date_echeance = sql_getfetsel('date_echeance', 'spip_abonnements', 'id_abonnement = '.$id_abonnement);
		objet_modifier('abonnement', $id_abonnement, array(
			'date_fin' => $date_echeance,
		));
		abonnements_programmer_desactivation($id_abonnement, $date_echeance);
		
		// Si on détecte qu'il est lié à un prélèvement bancaire, on lance une résiliation par l'API
		if (
			defined('_DIR_PLUGIN_COMMANDES')
			and defined('_DIR_PLUGIN_BANK')
			and include_spip('action/editer_liens')
			and $liens = objet_trouver_liens(array('commande' => '*'), array('abonnement' => $id_abonnement))
			and is_array($liens)
			// On prend juste la première commande qu'on trouve
			and $id_commande = intval($lien_commande[0]['id_commande'])
			and $bank_uid = sql_getfetsel('bank_uid', 'spip_commandes', 'id_commande = '.$id_commande)
		) {
			include_spip('abos/resilier');
			abos_resilier_notify_bank($bank_uid);
		}
	}
}
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<paquet
	prefix="abonnements"
	categorie="auteur"
	version="3.4.9"
	version="3.5.0"
	schema="2.3.1"
	etat="stable"
	compatibilite="[3.0.0;3.2.*]"