Changeset 79122 in spip-zone


Ignore:
Timestamp:
Dec 3, 2013, 7:43:11 PM (7 years ago)
Author:
tcharlss@…
Message:

Retour partiel sur r72558
Boulette : ne pas mettre systématiquement à jour les dates de paiement et d'envoi lors du changement de statut.
Les dates effectives de paiement et d'envoi ne correspondent pas forcément au moment ou le rédacteur change le satut de la commande.
On ne le fait donc que lorsque celles-ci n'ont pas été définies, en cas d'oubli.
Donc on zappe la pipeline pre-edition et on passe ça en post-edition, juste avant l'envoi des notifications.
Incrémentation de z

Location:
_plugins_/commandes/trunk
Files:
3 edited

Legend:

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

    r79045 r79122  
    114114
    115115/**
    116  * Mettre à jour les dates de paiement ou d'envoi
    117  * en amont de la modification du statut d'une commande
     116 * Traitements après l'édition d'une commande
     117 * Quand on  modifie le satut d'une commande :
     118 * - Mettre à jour les dates de paiement et d'envoi si par mégarde ça n'a pas été fait manuellement
     119 * - Envoyer les notifications
    118120 *
    119121 * @param array $flux
    120  *      $flux['args'][x] = arguments (action, table, id_objet etc.)
    121  *      $flux['data'][x] = champs modifiés (statut, date etc.)
     122 *     $flux['args'][x] = arguments (table, id_objet, action, statut_ancien, date_ancienne, id_parent_ancien)
     123 *     $flux['data'][x] = champs modifiés (statut, date_paiement etc.)
    122124 * @return array $flux
    123125**/
    124 function commandes_pre_edition($flux){
     126function commandes_post_edition($flux){
    125127
    126128        if (
    127                 ($action=$flux['args']['action']) == 'instituer' // action instituer
    128                 and ($table=$flux['args']['table']) == table_objet_sql('commande') // on institue une commande
    129                 and $statut = $flux['data']['statut']
    130                 and $date = date('Y-m-d H:i:s') // todo : copier la date de maj ?
     129                ($action = $flux['args']['action']) == 'instituer' // action instituer
     130                and ($table = $flux['args']['table']) == table_objet_sql('commande') // on institue une commande
     131                and ($statut_ancien = $flux['args']['statut_ancien']) != ($statut = $flux['data']['statut']) // le statut a été modifié
     132                and $id_commande = $flux['args']['id_objet'] // on a bien un identifiant pour la commande
    131133        ) {
    132                 switch ($statut) {
    133                         case 'paye';
    134                                 $flux['data']['date_paiement'] = $date;
    135                                 break;
    136                         case 'envoye';
    137                                 $flux['data']['date_envoi'] = $date;
    138                                 break;
     134
     135                // Mise à jour des dates de paiement ou d'envoi si ça n'a pas été fait manuellement
     136                if (
     137                        in_array($statut, array('paye','envoye'))
     138                        and $maj = sql_getfetsel('maj', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
     139                        and $date_paiement = sql_getfetsel('date_paiement', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
     140                        and $date_envoi = sql_getfetsel('date_envoi', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
     141                        and include_spip('action/editer_objet')
     142                ) {
     143                        if (
     144                                $statut == 'paye'
     145                                and intval($date_paiement) == 0
     146                        ){
     147                                objet_modifier('commande', $id_commande, array('date_paiement'=>$maj));
     148                        }
     149                        if (
     150                                $statut == 'envoye'
     151                                and intval($date_envoi) == 0
     152                        ){
     153                                objet_modifier('commande', $id_commande, array('date_envoi'=>$maj));
     154                        }
     155                }
     156
     157                // Envoi des notifications
     158                if (
     159                        include_spip('inc/config')
     160                        and $config = lire_config('commandes')
     161                        and $quand = $config['quand'] ? $config['quand'] : array()
     162                        and ($config['activer']) // les notifications sont activées
     163                        and (in_array($statut, $quand)) // le nouveau statut est valide pour envoyer une notification
     164                        and ($notifications = charger_fonction('notifications', 'inc', true)) // la fonction est bien chargée
     165                ) {
     166                        // Déterminer l'expediteur
     167                        $options = array();
     168                        if( $config['expediteur'] != "facteur" )
     169                                $options['expediteur'] = $config['expediteur_'.$config['expediteur']];
     170
     171                        // Envoyer au vendeur et au client
     172                        $notifications('commande_vendeur', $id_commande, $options);
     173                        if($config['client'])
     174                                $notifications('commande_client', $id_commande, $options);
    139175                }
    140176        }
     
    143179}
    144180
    145 
    146 /**
    147  * Envoyer les notifications
    148  * en aval de la modification du statut d'une commande
    149  *
    150  * @param array $flux
    151  *      $flux['args'][x] = arguments (table, id_objet, action, statut_ancien, date_ancienne, id_parent_ancien)
    152  *      $flux['data'][x] = champs modifiés (statut, date_paiement etc.)
    153  * @return array $flux
    154 **/
    155 function commandes_post_edition($flux){
    156 
    157         if (
    158                 ($action=$flux['args']['action']) == 'instituer' // action instituer
    159                 and ($table=$flux['args']['table']) == table_objet_sql('commande') // on institue une commande
    160                 and ($statut_ancien=$flux['args']['statut_ancien']) != ($statut=$flux['data']['statut']) // le statut a été modifié
    161                 and $id_commande = $flux['args']['id_objet'] // on a bien un identifiant pour la commande
    162                 and include_spip('inc/config')
    163                 and $config = lire_config('commandes')
    164                 and $quand = $config['quand'] ? $config['quand'] : array()
    165                 and ($config['activer']) // les notifications sont activées
    166                 and (in_array($statut, $quand)) // le nouveau statut est valide pour envoyer une notification
    167                 and ($notifications = charger_fonction('notifications', 'inc', true)) // la fonction est bien chargée
    168         ) {
    169                 // Déterminer l'expediteur
    170                 $options = array();
    171                 if( $config['expediteur'] != "facteur" )
    172                         $options['expediteur'] = $config['expediteur_'.$config['expediteur']];
    173 
    174                 // Envoyer au vendeur et au client
    175                 $notifications('commande_vendeur', $id_commande, $options);
    176                 if($config['client'])
    177                         $notifications('commande_client', $id_commande, $options);
    178         }
    179 
    180         return($flux);
    181 }
    182 
    183181?>
  • _plugins_/commandes/trunk/paquet.xml

    r79048 r79122  
    22        prefix="commandes"
    33        categorie="divers"
    4         version="0.10.4"
     4        version="0.10.5"
    55        etat="dev"
    66        compatibilite="[3.0.5;3.0.*]"
     
    2828        <pipeline nom="affiche_auteurs_interventions" inclure="commandes_pipelines.php" /><!-- liste des commandes sur la fiche d'un auteur -->
    2929        <pipeline nom="insert_head_css" inclure="commandes_pipelines.php" />
    30         <pipeline nom="pre_edition" inclure="commandes_pipelines.php" /><!-- changement de statut : maj dates paiement et envoi -->
    31         <pipeline nom="post_edition" inclure="commandes_pipelines.php" /><!-- changement de statut : envoi de notifications -->
     30        <pipeline nom="post_edition" inclure="commandes_pipelines.php" /><!-- changement de statut : envoi de notifications et maj dates paiement et envoi -->
    3231
    3332        <pipeline nom="declarer_tables_interfaces" inclure="base/commandes.php" />
  • _plugins_/commandes/trunk/prive/objets/contenu/commande.html

    r79008 r79122  
    22[<div class="champ contenu_statut[ (#STATUT*|strlen|?{'',vide})]">
    33        <label><:commandes:modifier_commande_statut:></label>
    4         <span dir='#LANG_DIR' class='statut'>(#STATUT|commandes_lister_statuts)</span>
     4        <span dir='#LANG_DIR' class='statut'>[(#CHEMIN_IMAGE{icone-commande-#STATUT-16}|balise_img) ](#STATUT|commandes_lister_statuts)</span>
    55</div>]
    66[<div class="champ contenu_date_envoi[ (#DATE_ENVOI*|strlen|?{'',vide})]">
    77        <label><:commandes:date_envoi_label:></label>
    88        <span dir='#LANG_DIR' class='#EDIT{date_envoi} date_envoi'>
    9         (#DATE_ENVOI|=={0000-00-00 00:00:00}|?{
    10                 <em><:commandes:info_date_envoi_vide:></em>,
    11                 #DATE_ENVOI|affdate|concat{' à ',#DATE_ENVOI|affdate{'H:i'}}})
     9        (#DATE_ENVOI|intval|>{0}|?{
     10                [(#DATE_ENVOI|affdate)][(#DATE_ENVOI|affdate{'H:i'}|intval|>{0}|oui)[ à (#DATE_ENVOI|affdate{'H:i'})]],
     11                <em><:commandes:info_date_non_definie:></em>
     12        })
    1213        </span>
    1314</div>]
     
    1516        <label><:commandes:date_paiement_label:></label>
    1617        <span dir='#LANG_DIR' class='#EDIT{date_paiement} date_paiement'>
    17                 (#DATE_PAIEMENT|=={0000-00-00 00:00:00}|?{
    18                         <em><:commandes:info_date_paiement_vide:></em>,
    19                         #DATE_PAIEMENT|affdate|concat{' à ',#DATE_PAIEMENT|affdate{'H:i'}}})
     18                (#DATE_PAIEMENT|intval|>{0}|?{
     19                        [(#DATE_PAIEMENT|affdate)][(#DATE_PAIEMENT|affdate{'H:i'}|intval|>{0}|oui)[ à (#DATE_PAIEMENT|affdate{'H:i'})]],
     20                        <em><:commandes:info_date_non_definie:></em>
     21                })
    2022        </span>
    2123</div>]
Note: See TracChangeset for help on using the changeset viewer.