Changeset 105514 in spip-zone for _plugins_/reservations_bank


Ignore:
Timestamp:
Jul 29, 2017, 10:26:49 AM (2 years ago)
Author:
abelass@…
Message:

adapter un éventuel changement de statut dans la pipeline

Location:
_plugins_/reservations_bank/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservations_bank/trunk/paquet.xml

    r105364 r105514  
    2929        <pipeline nom="reservation_evenement_objets_configuration" inclure="reservation_bank_pipelines.php" />
    3030        <pipeline nom="reservation_evenement_objets_navigation" inclure="reservation_bank_pipelines.php" />
     31        <pipeline nom="reservation_evenement_donnees_details" inclure="reservation_bank_pipelines.php" />
    3132
    3233        <pipeline nom="declarer_tables_objets_sql" inclure="base/reservation_bank.php" />
  • _plugins_/reservations_bank/trunk/reservation_bank_pipelines.php

    r105364 r105514  
    1212        return;
    1313
    14 /**
    15  * permet de modifier le tableau de valeurs envoyé par la fonction charger d’un formulaire CVT
    16  *
    17  * @pipeline formulaire_charger
    18  *
    19  * @param array $flux
    20  *              Données du pipeline
    21  * @return array Données du pipeline
    22  */
    23 function reservation_bank_formulaire_charger($flux) {
    24         $form = $flux['args']['form'];
    25         if ($form == 'reservation') {
    26                 $flux['data']['checkout'] = _request('checkout');
    27                 if ($flux['data']['checkout'] = _request('checkout')) {
    28                         $flux['data']['editable'] = FALSE;
    29                         $flux['data']['message_ok'] .= recuperer_fond('inclure/paiement_reservation', array (
    30                                 'id_reservation' => session_get('id_reservation'),
    31                                 'cacher_paiement_public' => FALSE,
     14        /**
     15        * permet de modifier le tableau de valeurs envoyé par la fonction charger d’un formulaire CVT
     16        *
     17        * @pipeline formulaire_charger
     18        *
     19        * @param array $flux
     20        *              Données du pipeline
     21        * @return array Données du pipeline
     22        */
     23        function reservation_bank_formulaire_charger($flux) {
     24                $form = $flux['args']['form'];
     25                if ($form == 'reservation') {
     26                        $flux['data']['checkout'] = _request('checkout');
     27                        if ($flux['data']['checkout'] = _request('checkout')) {
     28                                $flux['data']['editable'] = FALSE;
     29                                $flux['data']['message_ok'] .= recuperer_fond('inclure/paiement_reservation', array (
     30                                        'id_reservation' => session_get('id_reservation'),
     31                                        'cacher_paiement_public' => FALSE,
    3232                                ));
    33                 }
    34         }
    35 
    36         if ($form == 'encaisser_reglement') {
    37                 $id_transaction = $flux['data']['_id_transaction'];
    38 
    39                 // Les infos supplémentaires de la transaction
    40                 $transaction = sql_fetsel('id_reservation,montant,auteur', 'spip_transactions', 'id_transaction=' . $id_transaction);
    41                 $id_reservation = $flux['id_reservation'] = $transaction['id_reservation'];
    42                 $montant_transaction = $flux['montant'] = $transaction['montant'];
    43 
    44                 // Cas spécial pour les crédits
    45                 if ($flux['data']['_mode'] == 'credit' and $credit = credit_client('', $transaction['auteur'])) {
    46                         $flux['data']['credit'] = '';
    47                         $flux['data']['email_client'] = $email_client = $transaction['auteur'];
    48                         $flux['_hidden'] .= '<input name="email_client" value="' . $email_client . '" type="hidden"/>';
    49                 }
    50 
    51 
    52                 // Définir les champs pour les détails de réservation.
    53                 $sql = sql_select('id_reservations_detail,prix,prix_ht,quantite,devise,taxe,descriptif,montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
    54 
    55                 $montant_detail = array ();
    56                 $montant_reservations_detail_defaut = array ();
    57                 $montant_reservations_detail_total = array ();
    58                 $count = sql_count($sql);
    59                 $montant_transaction_detail = '';
    60                 if ($count > 0) {
    61                         $montant_transaction_detail = $montant_transaction / $count;
    62                 }
    63 
    64                 $montant_ouvert = '';
    65                 $montant_defaut = '';
    66                 $fonction_prix = '';
    67                 if (charger_fonction('prix', 'inc/', TRUE)) {
    68                         $fonction_prix = charger_fonction('prix', 'inc/');
    69                 }
    70 
    71                 while ( $data = sql_fetch($sql) ) {
    72                         $id_reservations_detail = $data['id_reservations_detail'];
    73                         $devise = $data['devise'];
    74                         $montant_paye[$id_reservations_detail] = $data['montant_paye'];
    75 
    76                         if ($fonction_prix) {
    77                                 $montant = $fonction_prix('reservations_detail', $id_reservations_detail);
    78                         }
    79                         else {
    80                                 $montant = $data['prix'];
    81                                 if ($montant <= 0) {
    82                                         $montant = $data['prix_ht'] + $data['taxe'];
    83                                 }
    84                         }
    85 
    86                         $montant_reservations_detail_total[$id_reservations_detail] = $montant;
    87 
    88                         $montant_ouvert = $montant_defaut = $montant - $data['montant_paye'];
    89 
    90                         if ($montant_ouvert < $montant_transaction_detail and $montant_ouvert >= 0) {
    91                                 if (!$montant_defaut = _request('montant_reservations_detail_' . $id_reservations_detail)) {
    92                                         $montant_defaut = $montant_ouvert;
    93                                 }
    94                         }
    95 
    96                         if ($credit[$devise] > 0 and ($credit[$devise] / $count) <= $montant_defaut) {
    97                                 $montant_defaut = $credit[$devise] / $count;
    98                         }
    99 
    100                         if ($montant_defaut > 0) {
    101 
    102                                 $montant_detail[] = array (
     33                        }
     34                }
     35
     36                if ($form == 'encaisser_reglement') {
     37                        $id_transaction = $flux['data']['_id_transaction'];
     38
     39                        // Les infos supplémentaires de la transaction
     40                        $transaction = sql_fetsel('id_reservation,montant,auteur', 'spip_transactions', 'id_transaction=' . $id_transaction);
     41                        $id_reservation = $flux['id_reservation'] = $transaction['id_reservation'];
     42                        $montant_transaction = $flux['montant'] = $transaction['montant'];
     43
     44                        // Cas spécial pour les crédits
     45                        if ($flux['data']['_mode'] == 'credit' and $credit = credit_client('', $transaction['auteur'])) {
     46                                $flux['data']['credit'] = '';
     47                                $flux['data']['email_client'] = $email_client = $transaction['auteur'];
     48                                $flux['_hidden'] .= '<input name="email_client" value="' . $email_client . '" type="hidden"/>';
     49                        }
     50
     51
     52                        // Définir les champs pour les détails de réservation.
     53                        $sql = sql_select('id_reservations_detail,prix,prix_ht,quantite,devise,taxe,descriptif,montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
     54
     55                        $montant_detail = array ();
     56                        $montant_reservations_detail_defaut = array ();
     57                        $montant_reservations_detail_total = array ();
     58                        $count = sql_count($sql);
     59                        $montant_transaction_detail = '';
     60                        if ($count > 0) {
     61                                $montant_transaction_detail = $montant_transaction / $count;
     62                        }
     63
     64                        $montant_ouvert = '';
     65                        $montant_defaut = '';
     66                        $fonction_prix = '';
     67                        if (charger_fonction('prix', 'inc/', TRUE)) {
     68                                $fonction_prix = charger_fonction('prix', 'inc/');
     69                        }
     70
     71                        while ( $data = sql_fetch($sql) ) {
     72                                $id_reservations_detail = $data['id_reservations_detail'];
     73                                $devise = $data['devise'];
     74                                $montant_paye[$id_reservations_detail] = $data['montant_paye'];
     75
     76                                if ($fonction_prix) {
     77                                        $montant = $fonction_prix('reservations_detail', $id_reservations_detail);
     78                                }
     79                                else {
     80                                        $montant = $data['prix'];
     81                                        if ($montant <= 0) {
     82                                                $montant = $data['prix_ht'] + $data['taxe'];
     83                                        }
     84                                }
     85
     86                                $montant_reservations_detail_total[$id_reservations_detail] = $montant;
     87
     88                                $montant_ouvert = $montant_defaut = $montant - $data['montant_paye'];
     89
     90                                if ($montant_ouvert < $montant_transaction_detail and $montant_ouvert >= 0) {
     91                                        if (!$montant_defaut = _request('montant_reservations_detail_' . $id_reservations_detail)) {
     92                                                $montant_defaut = $montant_ouvert;
     93                                        }
     94                                }
     95
     96                                if ($credit[$devise] > 0 and ($credit[$devise] / $count) <= $montant_defaut) {
     97                                        $montant_defaut = $credit[$devise] / $count;
     98                                }
     99
     100                                if ($montant_defaut > 0) {
     101
     102                                        $montant_detail[] = array (
    103103                                                'saisie' => 'input',
    104104                                                'options' => array (
    105                                                                 'nom' => 'montant_reservations_detail_' . $id_reservations_detail,
    106                                                                 'label' => $data['descriptif'],
    107                                                                 'defaut' => $montant_defaut,
    108                                                                 'size' => 20
     105                                                        'nom' => 'montant_reservations_detail_' . $id_reservations_detail,
     106                                                        'label' => $data['descriptif'],
     107                                                        'defaut' => $montant_defaut,
     108                                                        'size' => 20
    109109                                                )
    110                                 );
    111                         }
    112 
    113                         $flux['data']['montant_reservations_detail_' . $id_reservations_detail] = '';
    114                         $montant_reservations_detail_defaut[$id_reservations_detail] = $montant_ouvert;
    115                 }
    116 
    117                 if ($credit) {
    118                         $flux['credit'] = '';
    119                         $flux['_hidden'] .= '<input name="credit" value="' . $credit[$devise] . '" type="hidden"/>';
    120                 }
    121 
    122                 $flux['_mes_saisies'] = array (
     110                                        );
     111                                }
     112
     113                                $flux['data']['montant_reservations_detail_' . $id_reservations_detail] = '';
     114                                $montant_reservations_detail_defaut[$id_reservations_detail] = $montant_ouvert;
     115                        }
     116
     117                        if ($credit) {
     118                                $flux['credit'] = '';
     119                                $flux['_hidden'] .= '<input name="credit" value="' . $credit[$devise] . '" type="hidden"/>';
     120                        }
     121
     122                        $flux['_mes_saisies'] = array (
    123123                                array (
    124                                                 'saisie' => 'fieldset',
    125                                                 'options' => array (
    126                                                                 'nom' => 'specifier',
    127                                                                 'label' => _T('reservation_bank:label_fieldset_specifier')
    128                                                 ),
    129                                                 'saisies' => array (
    130                                                                 array (
    131                                                                                 'saisie' => 'oui_non',
    132                                                                                 'options' => array (
    133                                                                                                 'nom' => 'specifier_montant',
    134                                                                                                 'label' => _T('reservation_bank:label_specifier_montant'),
    135                                                                                                 'defaut' => _request('specifier_montant')
    136                                                                                 )
    137                                                                 )
     124                                        'saisie' => 'fieldset',
     125                                        'options' => array (
     126                                                'nom' => 'specifier',
     127                                                'label' => _T('reservation_bank:label_fieldset_specifier')
     128                                        ),
     129                                        'saisies' => array (
     130                                                array (
     131                                                        'saisie' => 'oui_non',
     132                                                        'options' => array (
     133                                                                'nom' => 'specifier_montant',
     134                                                                'label' => _T('reservation_bank:label_specifier_montant'),
     135                                                                'defaut' => _request('specifier_montant')
     136                                                        )
    138137                                                )
     138                                        )
    139139                                ),
    140140                                array (
    141                                                 'saisie' => 'fieldset',
    142                                                 'options' => array (
    143                                                                 'nom' => 'montant',
    144                                                                 'label' => _T('reservation_bank:label_fieldset_montant_detail', array (
    145                                                                                 'devise' => $devise
    146                                                                 )),
    147                                                                 'afficher_si' => '@specifier_montant@ == "on"'
    148                                                 ),
    149                                                 'saisies' => $montant_detail
     141                                        'saisie' => 'fieldset',
     142                                        'options' => array (
     143                                                'nom' => 'montant',
     144                                                'label' => _T('reservation_bank:label_fieldset_montant_detail', array (
     145                                                        'devise' => $devise
     146                                                )),
     147                                                'afficher_si' => '@specifier_montant@ == "on"'
     148                                        ),
     149                                        'saisies' => $montant_detail
    150150                                )
     151                        );
     152                        $flux['data']['specifier_montant'] = _request('specifier_montant');
     153                        $flux['data']['montant_reservations_detail_defaut'] = '';
     154                        $flux['data']['montant_paye'] = $montant_paye;
     155                        $flux['_hidden'] .= '<input name="id_reservation" value="' . $id_reservation . '" type="hidden"/>';
     156                        $flux['_hidden'] .= '<input name="id_transaction" value="' . $id_transaction . '" type="hidden"/>';
     157
     158                        $montant_reservations_detail_defaut = serialize($montant_reservations_detail_defaut);
     159                        $montant_reservations_detail_total = serialize($montant_reservations_detail_total);
     160                        $flux['_hidden'] .= "<input name='montant_reservations_detail_defaut' value='$montant_reservations_detail_defaut' type='hidden'/>";
     161                        $flux['_hidden'] .= "<input name='montant_reservations_detail_total' value='$montant_reservations_detail_total' type='hidden'/>";
     162                }
     163                return $flux;
     164        }
     165
     166        /**
     167         * Intervientpendant la vérification d'un formulaire CVT
     168         *
     169         * @pipeline formulaire_verifier
     170         *
     171         * @param array $flux
     172         *              Données du pipeline
     173         * @return array Données du pipeline
     174         */
     175        function reservation_bank_formulaire_verifier($flux) {
     176                $form = $flux['args']['form'];
     177                if ($form == 'encaisser_reglement') {
     178                        $id_reservation = _request('id_reservation');
     179
     180                        $montant_reservations_detail_defaut = _request('montant_reservations_detail_defaut') ? unserialize(_request('montant_reservations_detail_defaut')) : array();
     181                        $montant_reservations_detail_total = _request('montant_reservations_detail_total') ? unserialize(_request('montant_reservations_detail_total')) : array();
     182
     183                        if ($montant_reservations_detail_defaut){
     184                                set_request('montant_reservations_detail_defaut', $montant_reservations_detail_defaut);
     185                        }
     186                        if ($montant_reservations_detail_total) {
     187                                set_request('montant_reservations_detail_total',$montant_reservations_detail_total);
     188                        }
     189
     190                        $sql = sql_select('id_reservations_detail,montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
     191                        $montant_ouvert = array ();
     192                        $montant_paye = array ();
     193                        $montants = array ();
     194                        while ( $data = sql_fetch($sql) ) {
     195                                $id_reservations_detail = $data['id_reservations_detail'];
     196                                $montant = _request('montant_reservations_detail_' . $id_reservations_detail);
     197                                $montant_defaut = $montant_reservations_detail_defaut[$id_reservations_detail];
     198
     199                                $montant_paye[$id_reservations_detail] = $paye = $data['montant_paye'];
     200                                $montants[] = $montant;
     201
     202                                if (_request('specifier_montant') AND $montant > $montant_defaut) {
     203                                        $flux['data']['montant_reservations_detail_' .$id_reservations_detail]= _T('reservation_bank:message_erreur_montant_reservations_detail',array('montant_ouvert' => $montant_defaut));
     204                                }
     205                        }
     206                        set_request('montant_paye', $montant_paye);
     207                        if ($credit = _request('credit') and $credit < array_sum($montants)) {
     208                                $flux['data']['specifier_montant'] = _T('reservation_bank:message_erreur_montant_credit', array (
     209                                        'credit' => $credit
     210                                ));
     211                        }
     212                        session_set('encaisser_montant_regle', array_sum($montants));
     213                }
     214                return $flux;
     215        }
     216
     217        /**
     218         * Intervient au traitement d'un formulaire CVT
     219         *
     220         * @pipeline formulaire_traiter
     221         *
     222         * @param array $flux
     223         *              Données du pipeline
     224         * @return array Données du pipeline
     225         */
     226        function reservation_bank_formulaire_traiter($flux) {
     227                $form = $flux['args']['form'];
     228
     229                // Affiche le formulaire de paiment au retour du formulaire réservation
     230                if ($form == 'reservation') {
     231                        include_spip('inc/config');
     232                        $config = lire_config('reservation_bank', array());
     233                        $cacher_paiement_public = isset($config['cacher_paiement_public']) ? $config['cacher_paiement_public'] : '';
     234                        $preceder_formulaire = isset($config['preceder_formulaire']) ? $config['preceder_formulaire'] : '';
     235                        $id_transaction = rb_inserer_transaction(session_get('id_reservation'));
     236                        if (!$cacher_paiement_public) {
     237                                $message_ok = preg_replace('/<p[^>]*>.*?<\/p>/i', '',$flux['data']['message_ok']);
     238                                $tag_regex = '/<div[^>]*'.$attr.'="'.$value.'">(.*?)<\/div>/si';
     239                                if ($preceder_formulaire) {
     240                                        $flux['data']['message_ok'] = '<div class="intro">' . recuperer_fond('inclure/paiement_reservation', array (
     241                                                'id_reservation' => session_get('id_reservation'),
     242                                                'cacher_paiement_public' => FALSE
     243                                        )) . '</div>'. $message_ok;
     244                                }
     245                                else {
     246                                        $flux['data']['message_ok'] = $message_ok . '<div class="intro">' . recuperer_fond('inclure/paiement_reservation', array (
     247                                                'id_reservation' => session_get('id_reservation'),
     248                                                'cacher_paiement_public' => FALSE
     249                                        )) . '</div>';
     250                                }
     251
     252                        }
     253                }
     254
     255                return $flux;
     256        }
     257
     258        /**
     259         * Intervient lors de l’édition d’un élément éditorial.
     260         *
     261         * @pipeline pre_edition
     262         *
     263         * @param array $flux
     264         *              Données du pipeline
     265         * @return array Données du pipeline
     266         */
     267        function reservation_bank_pre_edition($flux) {
     268                $table = $flux['args']['table'];
     269
     270                if ($table == 'spip_reservations' &&
     271                                $flux['args']['statut_ancien'] == 'encours' &&
     272                                _request('statut') == 'encours' &&
     273                                $montants = _request('montants')) {
     274                                        $prix_ht = array_sum(array_column($montants, 'prix_ht'));
     275                                        $prix = array_sum(array_column($montants, 'prix'));
     276                                        if ($prix_ht <= 0 && $prix <= 0) {
     277                                                set_request('statut' , 'accepte');
     278                                        }
     279                }
     280
     281                if ($table == 'spip_reservations_details'
     282                                and $montant_reservations_detail_total = _request('montant_reservations_detail_total')
     283                                and $montant_paye = _request('montant_paye')) {
     284
     285                                        $id_reservations_detail = $flux['args']['id_reservations_detail'];
     286
     287                                        $montant_total = $montant_reservations_detail_total[$id_reservations_detail];
     288                                        $montant_reservations_detail = _request('montant_reservations_detail_' . $id_reservations_detail);
     289
     290                                        $montant_paye = $montant_paye[$id_reservations_detail] + $montant_reservations_detail;
     291
     292                                        // Si le montant payé est inférieur au montant dû on change les statuts.
     293
     294                                        $statut = $flux['data']['statut'];
     295                                        if ($montant_paye < $montant_total AND (!empty($montant_total) AND $montant_total != 0)) {
     296                                                if ($statut == 'accepte') {
     297                                                        $flux['data']['statut'] = 'accepte_part';
     298                                                }
     299                                                elseif ($statut == 'attente') {
     300                                                        $flux['data']['statut'] = 'attente_part';
     301                                                }
     302                                        }
     303                                        // Si montant égal, mais statut en attente, on met en attente_paye.
     304                                        elseif ($statut == 'attente') {
     305                                                $flux['data']['statut'] = 'attente_paye';
     306                                        }
     307
     308                                        // Enregistre le montant payé
     309                                        $flux['data']['montant_paye'] = $montant_paye;
     310                                }
     311                                return $flux;
     312        }
     313
     314        /**
     315         * Permet de compléter ou modifier le résultat de la compilation d’un squelette donné.
     316         *
     317         * @pipeline recuperer_fond
     318         *
     319         * @param array $flux
     320         *              Données du pipeline
     321         * @return array Données du pipeline
     322         */
     323        function reservation_bank_recuperer_fond($flux) {
     324                $fond = $flux['args']['fond'];
     325                $contexte = $flux['data']['contexte'];
     326
     327                // Ajoute des champs supplémentaires pour le paiment des réservations dans l'espace privé.
     328                if ($fond == 'formulaires/encaisser_reglement' and _request('exec') == 'payer_reservation') {
     329                        $reservation_bank = recuperer_fond('formulaires/inc-encaisser_reglement_reservation', $contexte);
     330                        $flux['data']['texte'] = str_replace('<ul class="editer-groupe">', $reservation_bank . '<ul class="editer-groupe">', $flux['data']['texte']);
     331                }
     332
     333                // Ajoute un colonne en plus à la liste des réservations
     334                if ($fond == 'prive/objets/liste/inc-reservations_reservations') {
     335                        $row = recuperer_fond('prive/objets/liste/inc-reservations_thead', $contexte);
     336                        $flux['data']['texte'] = str_replace("<th class='client' scope='col'>", $row . "<th class='client' scope='col'>", $flux['data']['texte']);
     337                }
     338
     339                // Ajoute un colonne en plus à la liste des réservations
     340                if ($fond == 'prive/objets/liste/inc-reservations_row') {
     341                        $row = recuperer_fond('prive/objets/liste/inc-reservations_row_paiement', $contexte);
     342                        $flux['data']['texte'] = str_replace("<td class='client'>", $row . "<td class='client'>", $flux['data']['texte']);
     343                }
     344
     345                // Ajoute le lien de paiement à la page réservation
     346                if ($fond == 'prive/objets/contenu/inc-reservation_montant') {
     347                        $id_reservation = $contexte['id_reservation'];
     348                        $sql = sql_select('montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
     349
     350                        $montant_paye = array ();
     351                        while ( $data = sql_fetch($sql) ) {
     352                                $montant_paye[] = $data['montant_paye'];
     353                        }
     354                        $contexte['montant_paye'] = array_sum($montant_paye);
     355                        $row = recuperer_fond('prive/objets/contenu/inc-reservation_montant_paiement', $contexte);
     356                        $flux['data']['texte'] = str_replace('</div>', '</div>' . $row, $flux['data']['texte']);
     357                }
     358
     359                // Ajoute le message de paiement à la notification de réservation.
     360                if ($fond == 'inclure/reservation'
     361                                and $id_reservation = $flux['data']['contexte']['id_reservation']
     362                                and $statut = sql_getfetsel('statut', 'spip_reservations', 'id_reservation=' . $id_reservation)
     363                                and ($statut == 'attente_paiement' or $statut == 'accepte')) {
     364                                        $qui = $flux['data']['contexte']['qui'];
     365                                        $transaction = sql_fetsel('mode, id_transaction, transaction_hash, message, tracking_id',
     366                                                        'spip_transactions',
     367                                                        'id_reservation=' . $id_reservation,
     368                                                        '',
     369                                                        'date_transaction DESC'
     370                                                        );
     371                                        $mode = $transaction['mode'];
     372                                        $id_transaction = $transaction['id_transaction'];
     373                                        if ($qui == 'client') {
     374                                                if ($statut == 'attente_paiement') {
     375                                                        $pattern = array('|<p class="titre h4">|','|</p>|');
     376                                                        $replace = array('<h3>','</h3>');
     377                                                        $texte = preg_replace($pattern, $replace, bank_afficher_attente_reglement(
     378                                                                        $mode,
     379                                                                        $id_transaction,
     380                                                                        $transaction['transaction_hash'],
     381                                                                        '')
     382                                                                        );
     383                                                }
     384                                                else{
     385                                                        $texte = '<p>' . $transaction['message'] . '</p>';
     386                                                }
     387                                        }
     388                                        else {
     389                                                $url = generer_url_ecrire('transaction', 'id_transaction=' . $id_transaction);
     390                                                $texte = '<h2>' . _T('reservation_bank:titre_paiement_vendeur') . '</h2>';
     391                                                $texte .= '<p>' . _T('reservation_bank:message_paiement_vendeur', array(
     392                                                        'mode' => $mode,
     393                                                        'url' => $url,
     394                                                )
     395                                                                ) . '</p>';
     396                                        }
     397
     398                                        $flux['data']['texte'] .= $texte;
     399                                }
     400
     401                                // Ajouter le message pour la référence su paiement par virement.
     402                                if ($fond == 'presta/virement/payer/attente'and
     403                                                $tracking_id = sql_getfetsel('tracking_id',
     404                                                                'spip_transactions',
     405                                                                'id_transaction=' . $contexte['id_transaction']) and
     406                                                $id_reservation = sql_getfetsel('id_reservation', 'spip_reservations', 'reference LIKE '. sql_quote($tracking_id))) {
     407
     408                                                        $texte = '<strong>' . _T('reservation_bank:reservation_paiement_reference',
     409                                                                        array('reference' => $tracking_id)) . '</strong>';
     410                                                                        $flux['data']['texte'] = str_replace('</div>', $texte . '</div>', $flux['data']['texte']);
     411
     412                                                }
     413
     414                                                // Ajoute un bouton de paimeent pour le réservations en cours.
     415                                                if ($fond == 'prive/squelettes/navigation/reservation') {
     416                                                        if ($statut = sql_getfetsel('statut',
     417                                                                        'spip_reservations',
     418                                                                        'id_reservation= ' . $contexte['id_reservation']) AND
     419                                                                        $statut == 'encours') {
     420                                                                                $button = recuperer_fond('inclure/bouton_inserer_prestataire', $contexte);
     421                                                                                $flux['data']['texte'] = str_replace(
     422                                                                                                '<!-- Infos extras -->',
     423                                                                                                $button . ' <!-- Infos extras -->',
     424                                                                                                $flux['data']['texte']);
     425                                                                        }
     426                                                }
     427
     428                                                return $flux;
     429        }
     430
     431        /**
     432         * Enregistrer le bon reglement d'une commande liee a une transaction du plugin bank
     433         *
     434         * @pipeline bank_traiter_reglement
     435         *
     436         * @param array $flux
     437         * @return array mixed
     438         */
     439        function reservation_bank_bank_traiter_reglement($flux) {
     440                // Si on est dans le bon cas d'un paiement de reservation et qu'il y a un id_reservation et que la reservation existe toujours
     441                if ($id_transaction = $flux['args']['id_transaction']
     442                                and $transaction = sql_fetsel("*", "spip_transactions",
     443                                                "id_transaction=" . intval($id_transaction))
     444                                and $id_reservation = $transaction['id_reservation']
     445                                and $reservation = sql_fetsel('statut, reference',
     446                                                'spip_reservations',
     447                                                'id_reservation='.intval($id_reservation))) {
     448                                                if (!$montant_reservations_detail_total = _request('montant_reservations_detail_total')) {
     449                                                        include_spip('inc/reservation_bank');
     450                                                        $montant_reservations_detail_total = montant_reservations_detail_total($id_reservation);
     451                                                }
     452
     453                                                $paiement_detail = array ();
     454                                                foreach ( array_keys($montant_reservations_detail_total) as $id_reservation_detail ) {
     455                                                        $paiement_detail[$id_reservation_detail] = _request('montant_reservations_detail_' . $id_reservation_detail);
     456                                                }
     457
     458                                                if (!$montant_regle = array_sum($paiement_detail)) {
     459                                                        $montant_regle = $transaction['montant_regle'];
     460                                                }
     461                                                elseif (is_array($montant_regle)) {
     462                                                        $montant_regle = array_sum($montant_regle);
     463                                                }
     464
     465                                                set_request('montant_regle', $montant_regle);
     466
     467                                                $set = array (
     468                                                        'montant_regle' => $montant_regle,
     469                                                        'paiement_detail' => serialize($paiement_detail)
     470                                                );
     471
     472                                                sql_updateq('spip_transactions', $set, 'id_transaction=' . $id_transaction);
     473
     474                                                include_spip('action/editer_objet');
     475                                                objet_instituer('reservation', $id_reservation, array (
     476                                                        'statut' => 'accepte',
     477                                                        'date_paiement' => $transaction['date_transaction']
     478                                                ));
     479
     480                                                // un message gentil pour l'utilisateur qui vient de payer, on lui rappelle son numero de commande
     481                                                $flux['data'] .= "<br />"._T('reservation_bank:merci_de_votre_reservation_paiement',
     482                                                                array('reference' => $reservation['reference']));
     483
     484                }
     485
     486                return $flux;
     487        }
     488
     489        /**
     490         * Changer de statut si transaction en attente
     491         *
     492         * @pipeline trig_bank_reglement_en_attente
     493         *
     494         * @param array $flux
     495         * @return array
     496         */
     497        function reservation_bank_trig_bank_reglement_en_attente($flux) {
     498                if ($id_reservation = sql_getfetsel(
     499                                'id_reservation',
     500                                'spip_transactions',
     501                                'id_transaction=' . $flux['args']['id_transaction'])) {
     502                                include_spip('action/editer_objet');
     503                                objet_instituer('reservation', $id_reservation, array (
     504                                        'statut' => 'attente_paiement',
     505                                ));
     506                }
     507
     508                return $flux;
     509        }
     510
     511        /**
     512         * Insertion de css.
     513         *
     514         * @pipeline insert_head_css
     515         *
     516         * @param array $flux
     517         *              Données du pipeline
     518         * @return array Données du pipeline
     519         */
     520        function reservation_bank_insert_head_css($flux) {
     521                $css = find_in_path('css/reservations_bank.css');
     522                $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
     523                return $flux;
     524        }
     525
     526        /**
     527         * Ajouter les configurations dans celle de réservation événements.
     528         *
     529         * @pipeline reservation_evenement_objets_configuration
     530         *
     531         * @param array $flux
     532         *              Données du pipeline
     533         * @return array Données du pipeline
     534         */
     535        function reservation_bank_reservation_evenement_objets_configuration($flux) {
     536
     537                $objets = array(
     538                        'bank' => array(
     539                                'label' => _T('bank:titre_menu_configurer'),
     540                        ),
     541                        'reservation_bank' => array(
     542                                'label' => _T('reservation_bank:reservation_bank_titre'),
     543                        ),
    151544                );
    152                 $flux['data']['specifier_montant'] = _request('specifier_montant');
    153                 $flux['data']['montant_reservations_detail_defaut'] = '';
    154                 $flux['data']['montant_paye'] = $montant_paye;
    155                 $flux['_hidden'] .= '<input name="id_reservation" value="' . $id_reservation . '" type="hidden"/>';
    156                 $flux['_hidden'] .= '<input name="id_transaction" value="' . $id_transaction . '" type="hidden"/>';
    157 
    158                 $montant_reservations_detail_defaut = serialize($montant_reservations_detail_defaut);
    159                 $montant_reservations_detail_total = serialize($montant_reservations_detail_total);
    160                 $flux['_hidden'] .= "<input name='montant_reservations_detail_defaut' value='$montant_reservations_detail_defaut' type='hidden'/>";
    161                 $flux['_hidden'] .= "<input name='montant_reservations_detail_total' value='$montant_reservations_detail_total' type='hidden'/>";
    162         }
    163         return $flux;
    164 }
    165 
    166 /**
    167  * Intervientpendant la vérification d'un formulaire CVT
    168  *
    169  * @pipeline formulaire_verifier
    170  *
    171  * @param array $flux
    172  *              Données du pipeline
    173  * @return array Données du pipeline
    174  */
    175 function reservation_bank_formulaire_verifier($flux) {
    176         $form = $flux['args']['form'];
    177         if ($form == 'encaisser_reglement') {
    178                 $id_reservation = _request('id_reservation');
    179 
    180                 $montant_reservations_detail_defaut = _request('montant_reservations_detail_defaut') ? unserialize(_request('montant_reservations_detail_defaut')) : array();
    181                 $montant_reservations_detail_total = _request('montant_reservations_detail_total') ? unserialize(_request('montant_reservations_detail_total')) : array();
    182 
    183                 if ($montant_reservations_detail_defaut){
    184                         set_request('montant_reservations_detail_defaut', $montant_reservations_detail_defaut);
    185                 }
    186                 if ($montant_reservations_detail_total) {
    187                         set_request('montant_reservations_detail_total',$montant_reservations_detail_total);
    188                 }
    189 
    190                 $sql = sql_select('id_reservations_detail,montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
    191                 $montant_ouvert = array ();
    192                 $montant_paye = array ();
    193                 $montants = array ();
    194                 while ( $data = sql_fetch($sql) ) {
    195                         $id_reservations_detail = $data['id_reservations_detail'];
    196                         $montant = _request('montant_reservations_detail_' . $id_reservations_detail);
    197                         $montant_defaut = $montant_reservations_detail_defaut[$id_reservations_detail];
    198 
    199                         $montant_paye[$id_reservations_detail] = $paye = $data['montant_paye'];
    200                         $montants[] = $montant;
    201 
    202                         if (_request('specifier_montant') AND $montant > $montant_defaut) {
    203                                 $flux['data']['montant_reservations_detail_' .$id_reservations_detail]= _T('reservation_bank:message_erreur_montant_reservations_detail',array('montant_ouvert' => $montant_defaut));
    204                         }
    205                 }
    206                 set_request('montant_paye', $montant_paye);
    207                 if ($credit = _request('credit') and $credit < array_sum($montants)) {
    208                         $flux['data']['specifier_montant'] = _T('reservation_bank:message_erreur_montant_credit', array (
    209                                         'credit' => $credit
    210                         ));
    211                 }
    212                 session_set('encaisser_montant_regle', array_sum($montants));
    213         }
    214         return $flux;
    215 }
    216 
    217 /**
    218  * Intervient au traitement d'un formulaire CVT
    219  *
    220  * @pipeline formulaire_traiter
    221  *
    222  * @param array $flux
    223  *              Données du pipeline
    224  * @return array Données du pipeline
    225  */
    226 function reservation_bank_formulaire_traiter($flux) {
    227         $form = $flux['args']['form'];
    228 
    229         // Affiche le formulaire de paiment au retour du formulaire réservation
    230         if ($form == 'reservation') {
    231                 include_spip('inc/config');
    232                 $config = lire_config('reservation_bank', array());
    233                 $cacher_paiement_public = isset($config['cacher_paiement_public']) ? $config['cacher_paiement_public'] : '';
    234                 $preceder_formulaire = isset($config['preceder_formulaire']) ? $config['preceder_formulaire'] : '';
    235                 $id_transaction = rb_inserer_transaction(session_get('id_reservation'));
    236                 if (!$cacher_paiement_public) {
    237                         $message_ok = preg_replace('/<p[^>]*>.*?<\/p>/i', '',$flux['data']['message_ok']);
    238                         $tag_regex = '/<div[^>]*'.$attr.'="'.$value.'">(.*?)<\\/div>/si';
    239                         if ($preceder_formulaire) {
    240                                 $flux['data']['message_ok'] = recuperer_fond('inclure/paiement_reservation', array (
    241                                         'id_reservation' => session_get('id_reservation'),
    242                                         'cacher_paiement_public' => FALSE
    243                                 )) . '<br />'. $message_ok;
    244                         }
    245                         else {
    246                                 $flux['data']['message_ok'] = $message_ok . recuperer_fond('inclure/paiement_reservation', array (
    247                                         'id_reservation' => session_get('id_reservation'),
    248                                         'cacher_paiement_public' => FALSE
    249                                 ));
    250                         }
    251 
    252                 }
    253         }
    254 
    255         return $flux;
    256 }
    257 
    258 /**
    259  * Intervient lors de l’édition d’un élément éditorial.
    260  *
    261  * @pipeline pre_edition
    262  *
    263  * @param array $flux
    264  *              Données du pipeline
    265  * @return array Données du pipeline
    266  */
    267 function reservation_bank_pre_edition($flux) {
    268         $table = $flux['args']['table'];
    269 
    270         if ($table == 'spip_reservations_details'
    271                 and $montant_reservations_detail_total = _request('montant_reservations_detail_total')
    272                 and $montant_paye = _request('montant_paye')) {
    273 
    274                 $id_reservations_detail = $flux['args']['id_reservations_detail'];
    275 
    276                 $montant_total = $montant_reservations_detail_total[$id_reservations_detail];
    277                 $montant_reservations_detail = _request('montant_reservations_detail_' . $id_reservations_detail);
    278 
    279                 $montant_paye = $montant_paye[$id_reservations_detail] + $montant_reservations_detail;
    280 
    281                 // Si le montant payé est inférieur au montant dû on change les statuts.
    282 
    283                 $statut = $flux['data']['statut'];
    284                 if ($montant_paye < $montant_total AND (!empty($montant_total) AND $montant_total != 0)) {
    285                         if ($statut == 'accepte') {
    286                                 $flux['data']['statut'] = 'accepte_part';
    287                         }
    288                         elseif ($statut == 'attente') {
    289                                 $flux['data']['statut'] = 'attente_part';
    290                         }
    291                 }
    292                 // Si montant égal, mais statut en attente, on met en attente_paye.
    293                 elseif ($statut == 'attente') {
    294                         $flux['data']['statut'] = 'attente_paye';
    295                 }
    296 
    297                 // Enregistre le montant payé
    298                 $flux['data']['montant_paye'] = $montant_paye;
    299         }
    300         return $flux;
    301 }
    302 
    303 /**
    304  * Permet de compléter ou modifier le résultat de la compilation d’un squelette donné.
    305  *
    306  * @pipeline recuperer_fond
    307  *
    308  * @param array $flux
    309  *              Données du pipeline
    310  * @return array Données du pipeline
    311  */
    312 function reservation_bank_recuperer_fond($flux) {
    313         $fond = $flux['args']['fond'];
    314         $contexte = $flux['data']['contexte'];
    315 
    316         // Ajoute des champs supplémentaires pour le paiment des réservations dans l'espace privé.
    317         if ($fond == 'formulaires/encaisser_reglement' and _request('exec') == 'payer_reservation') {
    318                 $reservation_bank = recuperer_fond('formulaires/inc-encaisser_reglement_reservation', $contexte);
    319                 $flux['data']['texte'] = str_replace('<ul class="editer-groupe">', $reservation_bank . '<ul class="editer-groupe">', $flux['data']['texte']);
    320         }
    321 
    322         // Ajoute un colonne en plus à la liste des réservations
    323         if ($fond == 'prive/objets/liste/inc-reservations_reservations') {
    324                 $row = recuperer_fond('prive/objets/liste/inc-reservations_thead', $contexte);
    325                 $flux['data']['texte'] = str_replace("<th class='client' scope='col'>", $row . "<th class='client' scope='col'>", $flux['data']['texte']);
    326         }
    327 
    328         // Ajoute un colonne en plus à la liste des réservations
    329         if ($fond == 'prive/objets/liste/inc-reservations_row') {
    330                 $row = recuperer_fond('prive/objets/liste/inc-reservations_row_paiement', $contexte);
    331                 $flux['data']['texte'] = str_replace("<td class='client'>", $row . "<td class='client'>", $flux['data']['texte']);
    332         }
    333 
    334         // Ajoute le lien de paiement à la page réservation
    335         if ($fond == 'prive/objets/contenu/inc-reservation_montant') {
    336                 $id_reservation = $contexte['id_reservation'];
    337                 $sql = sql_select('montant_paye', 'spip_reservations_details', 'id_reservation=' . $id_reservation);
    338 
    339                 $montant_paye = array ();
    340                 while ( $data = sql_fetch($sql) ) {
    341                         $montant_paye[] = $data['montant_paye'];
    342                 }
    343                 $contexte['montant_paye'] = array_sum($montant_paye);
    344                 $row = recuperer_fond('prive/objets/contenu/inc-reservation_montant_paiement', $contexte);
    345                 $flux['data']['texte'] = str_replace('</div>', '</div>' . $row, $flux['data']['texte']);
    346         }
    347 
    348         // Ajoute le message de paiement à la notification de réservation.
    349         if ($fond == 'inclure/reservation'
    350                         and $id_reservation = $flux['data']['contexte']['id_reservation']
    351                         and $statut = sql_getfetsel('statut', 'spip_reservations', 'id_reservation=' . $id_reservation)
    352                         and ($statut == 'attente_paiement' or $statut == 'accepte')) {
    353                                 $qui = $flux['data']['contexte']['qui'];
    354                                 $transaction = sql_fetsel('mode, id_transaction, transaction_hash, message, tracking_id',
    355                                 'spip_transactions',
    356                                 'id_reservation=' . $id_reservation,
    357                                 '',
    358                                 'date_transaction DESC'
    359                                 );
    360                 $mode = $transaction['mode'];
    361                 $id_transaction = $transaction['id_transaction'];
    362                 if ($qui == 'client') {
    363                         if ($statut == 'attente_paiement') {
    364                                 $pattern = array('|<p class="titre h4">|','|</p>|');
    365                                 $replace = array('<h3>','</h3>');
    366                                 $texte = preg_replace($pattern, $replace, bank_afficher_attente_reglement(
    367                                                 $mode,
    368                                                 $id_transaction,
    369                                                 $transaction['transaction_hash'],
    370                                                 '')
    371                                                 );
    372                         }
    373                         else{
    374                                 $texte = '<p>' . $transaction['message'] . '</p>';
    375                         }
    376                 }
    377                 else {
    378                         $url = generer_url_ecrire('transaction', 'id_transaction=' . $id_transaction);
    379                         $texte = '<h2>' . _T('reservation_bank:titre_paiement_vendeur') . '</h2>';
    380                         $texte .= '<p>' . _T('reservation_bank:message_paiement_vendeur', array(
    381                                 'mode' => $mode,
    382                                 'url' => $url,
    383                                 )
    384                         ) . '</p>';
    385                 }
    386 
    387                 $flux['data']['texte'] .= $texte;
    388         }
    389 
    390         // Ajouter le message pour la référence su paiement par virement.
    391         if ($fond == 'presta/virement/payer/attente'and
    392                         $tracking_id = sql_getfetsel('tracking_id',
    393                                         'spip_transactions',
    394                                         'id_transaction=' . $contexte['id_transaction']) and
    395 $id_reservation = sql_getfetsel('id_reservation', 'spip_reservations', 'reference LIKE '. sql_quote($tracking_id))) {
    396 
    397                         $texte = '<strong>' . _T('reservation_bank:reservation_paiement_reference',
    398                                         array('reference' => $tracking_id)) . '</strong>';
    399                         $flux['data']['texte'] = str_replace('</div>', $texte . '</div>', $flux['data']['texte']);
    400 
    401         }
    402 
    403         // Ajoute un bouton de paimeent pour le réservations en cours.
    404         if ($fond == 'prive/squelettes/navigation/reservation') {
    405                 if ($statut = sql_getfetsel('statut',
    406                                         'spip_reservations',
    407                                         'id_reservation= ' . $contexte['id_reservation']) AND
    408                                 $statut == 'encours') {
    409                         $button = recuperer_fond('inclure/bouton_inserer_prestataire', $contexte);
    410                         $flux['data']['texte'] = str_replace(
    411                                         '<!-- Infos extras -->',
    412                                         $button . ' <!-- Infos extras -->',
    413                                         $flux['data']['texte']);
    414                 }
    415         }
    416 
    417         return $flux;
    418 }
    419 
    420 /**
    421  * Enregistrer le bon reglement d'une commande liee a une transaction du plugin bank
    422  *
    423  * @pipeline bank_traiter_reglement
    424  *
    425  * @param array $flux
    426  * @return array mixed
    427  */
    428 function reservation_bank_bank_traiter_reglement($flux) {
    429         // Si on est dans le bon cas d'un paiement de reservation et qu'il y a un id_reservation et que la reservation existe toujours
    430         if ($id_transaction = $flux['args']['id_transaction']
    431                         and $transaction = sql_fetsel("*", "spip_transactions",
    432                                 "id_transaction=" . intval($id_transaction))
    433                         and $id_reservation = $transaction['id_reservation']
    434                         and $reservation = sql_fetsel('statut, reference',
    435                                         'spip_reservations',
    436                                         'id_reservation='.intval($id_reservation))) {
    437                 if (!$montant_reservations_detail_total = _request('montant_reservations_detail_total')) {
    438                         include_spip('inc/reservation_bank');
    439                         $montant_reservations_detail_total = montant_reservations_detail_total($id_reservation);
    440                 }
    441 
    442                 $paiement_detail = array ();
    443                 foreach ( array_keys($montant_reservations_detail_total) as $id_reservation_detail ) {
    444                         $paiement_detail[$id_reservation_detail] = _request('montant_reservations_detail_' . $id_reservation_detail);
    445                 }
    446 
    447                 if (!$montant_regle = array_sum($paiement_detail)) {
    448                         $montant_regle = $transaction['montant_regle'];
    449                 }
    450                 elseif (is_array($montant_regle)) {
    451                         $montant_regle = array_sum($montant_regle);
    452                 }
    453 
    454                 set_request('montant_regle', $montant_regle);
    455 
    456                 $set = array (
    457                                 'montant_regle' => $montant_regle,
    458                                 'paiement_detail' => serialize($paiement_detail)
    459                 );
    460 
    461                 sql_updateq('spip_transactions', $set, 'id_transaction=' . $id_transaction);
    462 
    463                 include_spip('action/editer_objet');
    464                 objet_instituer('reservation', $id_reservation, array (
    465                                 'statut' => 'accepte',
    466                                 'date_paiement' => $transaction['date_transaction']
    467                 ));
    468 
    469                 // un message gentil pour l'utilisateur qui vient de payer, on lui rappelle son numero de commande
    470                 $flux['data'] .= "<br />"._T('reservation_bank:merci_de_votre_reservation_paiement',
    471                                 array('reference' => $reservation['reference']));
    472 
    473         }
    474 
    475         return $flux;
    476 }
    477 
    478 /**
    479  * Changer de statut si transaction en attente
    480  *
    481  * @pipeline trig_bank_reglement_en_attente
    482  *
    483  * @param array $flux
    484  * @return array
    485  */
    486 function reservation_bank_trig_bank_reglement_en_attente($flux) {
    487         if ($id_reservation = sql_getfetsel(
    488                         'id_reservation',
    489                         'spip_transactions',
    490                         'id_transaction=' . $flux['args']['id_transaction'])) {
    491                 include_spip('action/editer_objet');
    492                 objet_instituer('reservation', $id_reservation, array (
    493                         'statut' => 'attente_paiement',
    494                 ));
    495         }
    496 
    497         return $flux;
    498 }
    499 
    500 /**
    501  * Insertion de css.
    502  *
    503  * @pipeline insert_head_css
    504  *
    505  * @param array $flux
    506  *              Données du pipeline
    507  * @return array Données du pipeline
    508  */
    509 function reservation_bank_insert_head_css($flux) {
    510         $css = find_in_path('css/reservations_bank.css');
    511         $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
    512         return $flux;
    513 }
    514 
    515 /**
    516  * Ajouter les configurations dans celle de réservation événements.
    517  *
    518  * @pipeline reservation_evenement_objets_configuration
    519  *
    520  * @param array $flux
    521  *              Données du pipeline
    522  * @return array Données du pipeline
    523  */
    524 function reservation_bank_reservation_evenement_objets_configuration($flux) {
    525 
    526         $objets = array(
    527                 'bank' => array(
    528                         'label' => _T('bank:titre_menu_configurer'),
    529                 ),
    530                 'reservation_bank' => array(
    531                         'label' => _T('reservation_bank:reservation_bank_titre'),
    532                 ),
    533         );
    534 
    535         $flux['data'] = array_merge($flux['data'], $objets);
    536 
    537         return $flux;
    538 }
    539 
    540 /**
    541  * Ajouter une entré au menu de navigation de résrvation événement.
    542  *
    543  * @pipeline reservation_evenement_objets_navigation
    544  *
    545  * @param array $flux
    546  *              Données du pipeline
    547  * @return array Données du pipeline
    548  */
    549 
    550 function reservation_bank_reservation_evenement_objets_navigation($flux) {
    551         $flux['data']['transactions'] = array(
     545
     546                $flux['data'] = array_merge($flux['data'], $objets);
     547
     548                return $flux;
     549        }
     550
     551        /**
     552         * Ajouter une entré au menu de navigation de résrvation événement.
     553         *
     554         * @pipeline reservation_evenement_objets_navigation
     555         *
     556         * @param array $flux
     557         *              Données du pipeline
     558         * @return array Données du pipeline
     559         */
     560
     561        function reservation_bank_reservation_evenement_objets_navigation($flux) {
     562                $flux['data']['transactions'] = array(
    552563                        'label' => _T('bank:titre_menu_transactions'),
    553564                        'icone' => 'credit-card-16.png'
    554         );
    555 
    556         return $flux;
    557 }
     565                );
     566
     567                return $flux;
     568        }
     569
     570        /**
     571         * Intervention sur les détails de réservation.
     572         *
     573         * @pipeline reservation_evenement_donnees_details.
     574         *
     575         * @param array $flux
     576         *              Données du pipeline
     577         * @return array
     578         *          Données du pipeline
     579         */
     580        function reservation_bank_reservation_evenement_donnees_details($flux) {
     581                $data = $flux['data'];
     582                if ($flux['args']['statut'] == 'encours') {
     583                        if (isset($data['prix_ht']) && isset($data['prix'])) {
     584                                $prix_ht = $data['prix_ht'];
     585                                $prix = $data['prix'];
     586                                if ($prix == 0 && $prix_ht == 0) {
     587                                        $flux['data']['statut'] = 'accepte';
     588                                }
     589                        }
     590                }
     591
     592
     593                return $flux;
     594        }
Note: See TracChangeset for help on using the changeset viewer.