Changeset 104931 in spip-zone


Ignore:
Timestamp:
Jun 22, 2017, 1:55:42 PM (3 years ago)
Author:
cedric@…
Message:

Robustesse sur le traitement de preparer_echeance sur les paiements recurrents : si jamais bank_uid n'a pas ete mis a jour sur la commande (bug/fail en cours de traitement du paiement inifial) retrouver la commande via spip_transactions si on peut, et reparer la commande concernee

Location:
_plugins_/commandes/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/commandes/trunk/commandes_pipelines.php

    r104580 r104931  
    419419                and $id = $flux['args']['id']
    420420                and strncmp($id,"uid:",4) == 0
    421                 and $bank_uid = substr($id, 4)
    422                 and $commande = sql_fetsel('*', 'spip_commandes', 'bank_uid = '.sql_quote($bank_uid))
    423                 and $id_commande = intval($commande['id_commande'])
    424                 and $echeances = unserialize($commande['echeances'])
    425                 and $echeances_type = $commande['echeances_type']
    426         ){
    427                 include_spip('inc/commandes_echeances');
    428                
    429                 // Si on a bien trouvé une prochaine échéance
    430                 if ($montant = commandes_trouver_prochaine_echeance($id_commande, $echeances)) {
    431                         include_spip('action/editer_objet');
    432                        
    433                         // On remet la commande en attente de paiement puisqu'on… attend un paiement !
    434                         objet_modifier('commande', $id_commande, array('statut' => 'attente'));
    435                        
    436                         // On crée la transaction qui testera le vrai paiement
    437                         $inserer_transaction = charger_fonction('inserer_transaction', 'bank');
    438                         $options_transaction = array(
    439                                 'id_auteur' => intval($commande['id_auteur']),
    440                                 'champs' => array(
    441                                         'id_commande' => $id_commande,
    442                                 ),
    443                         );
    444                         $id_transaction = intval($inserer_transaction($montant, $options_transaction));
    445                        
    446                         $flux['data'] = $id_transaction;
    447                 }
    448         }
    449        
     421                and $bank_uid = substr($id, 4)) {
     422
     423                // robustesse pour retrouver la comande correspondant a un numero d'abonnement
     424                if ($id_commande = sql_getfetsel('id_commande','spip_commandes','bank_uid='.sql_quote($bank_uid))
     425                  or $id_commande = sql_getfetsel('id_commande','spip_transactions','abo_uid='.sql_quote($bank_uid))) {
     426
     427                        if ($commande = sql_fetsel('*', 'spip_commandes', 'id_commande='.intval($id_commande))
     428                          and $echeances = unserialize($commande['echeances'])
     429                          and $echeances_type = $commande['echeances_type'] ) {
     430
     431                                include_spip('inc/commandes_echeances');
     432
     433                                // Si on a bien trouvé une prochaine échéance
     434                                if ($montant = commandes_trouver_prochaine_echeance($id_commande, $echeances)) {
     435                                        include_spip('action/editer_objet');
     436
     437                                        $set = array('statut' => 'attente');
     438                                        // robustesse/reparation si echec d'update a la premiere echeance payee
     439                                        if (!$commande['bank_uid']) {
     440                                                $set['bank_uid'] = $bank_uid;
     441                                        }
     442
     443                                        // On remet la commande en attente de paiement puisqu'on… attend un paiement !
     444                                        objet_modifier('commande', $id_commande, $set);
     445
     446                                        // On crée la transaction qui testera le vrai paiement
     447                                        $inserer_transaction = charger_fonction('inserer_transaction', 'bank');
     448                                        $options_transaction = array(
     449                                                'id_auteur' => intval($commande['id_auteur']),
     450                                                'champs' => array(
     451                                                        'id_commande' => $id_commande,
     452                                                ),
     453                                        );
     454                                        $id_transaction = intval($inserer_transaction($montant, $options_transaction));
     455
     456                                        $flux['data'] = $id_transaction;
     457                                }
     458
     459                        }
     460                }
     461
     462        }
     463
    450464        return $flux;
    451465}
  • _plugins_/commandes/trunk/paquet.xml

    r104875 r104931  
    22        prefix="commandes"
    33        categorie="divers"
    4         version="1.14.3"
     4        version="1.14.4"
    55        etat="stable"
    66        compatibilite="[3.0.5;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.