Changeset 90429 in spip-zone
- Timestamp:
- Jun 22, 2015, 1:02:15 PM (6 years ago)
- Location:
- _plugins_/abonnements/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/abonnements/trunk/inc/abonnements.php
r90423 r90429 43 43 $modifs['date_fin'] = $modifs['date_echeance']; 44 44 45 // Mais s'il y a le plugin Commandes et Bank et qu'on trouve commande et transaction 46 if ( 47 _DIR_PLUGIN_COMMANDES 48 and _DIR_PLUGIN_BANK 49 and include_spip('action/editer_liens') 50 and $lien_commande = objet_trouver_liens(array('commande' => '*'), array('abonnement' => $abonnement['id_abonnement'])) 51 and is_array($lien_commande) 52 // On prend juste la première commande qu'on trouve 53 and $id_commande = intval($lien_commande[0]['id_commande']) 54 // On cherche le dernier paiement bien payé pour cette commande 55 and $transaction = sql_fetsel( 56 '*', 'spip_transactions', array('id_commande = '.$id_commande, 'statut = "ok"') 57 ) 58 ) { 59 // On a trouvé la transaction qui a activé la commande qui a activé l'abonnement 60 // Si on détecte un prélèvement SEPA, on annule la date de fin ! 61 if ($refcb = $transaction['refcb'] and strpos($refcb, 'SEPA') === 0) { 62 $modifs['date_fin'] = '0000-00-00 00:00:00'; 63 } 64 // Si ya une fin de validité de carte bleue on en déduit une fin d'abonnement ! 65 elseif ($validite = $transaction['validite']) { 66 include_spip('inc/bank'); 67 list($year, $month) = explode('-', $validite); 68 $modifs['date_fin'] = bank_date_fin_mois($year, $month); 69 } 45 // Mais si c'est un renouvellement auto avec Commandes et Bank 46 if ($date_fin = abonnements_bank_date_fin($abonnement['id_abonnnement'])) { 47 $modifs['date_fin'] = $date_fin; 70 48 } 71 49 … … 81 59 } 82 60 61 /** 62 * Trouver la date de fin d'un renouvellement automatique éventuel 63 * 64 * @param int $id_abonnement 65 * Identifiant de l'abonnement dont on veut trouver la date de fin 66 * @param int $id_commande 67 * Possibilité de donner la commande pour éviter une requête SQL 68 * @return bool|datetime 69 * Retourne la date de fin du renouvellement si on trouve, sinon false pour ne rien faire 70 **/ 71 function abonnements_bank_date_fin($id_abonnement, $id_commande=0){ 72 $date_fin = false; 73 74 // On teste si on trouve un renouvellement auto 75 if ( 76 _DIR_PLUGIN_COMMANDES 77 and _DIR_PLUGIN_BANK 78 and ( 79 // Soit on a déjà une commande sous la main 80 ( 81 $id_commande = intval($id_commande) 82 and $id_commande > 0 83 ) 84 // Soit on va chercher une commande liée à l'abonnement 85 or 86 ( 87 include_spip('action/editer_liens') 88 and $lien_commande = objet_trouver_liens(array('commande' => '*'), array('abonnement' => $id_abonnement)) 89 and is_array($lien_commande) 90 // On prend juste la première commande qu'on trouve 91 and $id_commande = intval($lien_commande[0]['id_commande']) 92 ) 93 ) 94 // On cherche un paiement bien payé pour cette commande 95 and $transaction = sql_fetsel( 96 '*', 'spip_transactions', array('id_commande = '.$id_commande, 'statut = "ok"') 97 ) 98 // Et que c'est un renouvellement auto ! 99 and $transaction['abo_uid'] 100 ) { 101 // On a trouvé la transaction qui a activé la commande qui a activé l'abonnement 102 // Si on détecte un prélèvement SEPA, on annule la date de fin ! 103 if ($refcb = $transaction['refcb'] and strpos($refcb, 'SEPA') === 0) { 104 $date_fin = '0000-00-00 00:00:00'; 105 } 106 // Si ya une fin de validité de carte bleue on en déduit une fin d'abonnement ! 107 elseif ($validite = $transaction['validite']) { 108 include_spip('inc/bank'); 109 list($year, $month) = explode('-', $validite); 110 $date_fin = bank_date_fin_mois($year, $month); 111 } 112 } 113 114 return $date_fin; 115 } 83 116 84 117 /* -
_plugins_/abonnements/trunk/paquet.xml
r90424 r90429 2 2 prefix="abonnements" 3 3 categorie="auteur" 4 version="3.0. 3"4 version="3.0.4" 5 5 schema="2.2.0" 6 6 etat="dev"
Note: See TracChangeset
for help on using the changeset viewer.