source: spip-zone/_plugins_/commandes/trunk/commandes_pipelines.php @ 81704

Last change on this file since 81704 was 81704, checked in by tcharlss@…, 5 years ago

Remaniement de l'affichage des dates sur la fiche d'une commande :

  • Au lieu d'afficher les dates comme des champs de texte, on les affiche par le biais d'un formulaire de date (basé sur le formulaire dater de SPIP).

Avantage : les dates sont plus lisibles, c'est plus raccord avec l'affichage des dates des autres objets éditoriaux, et c'est plus précis (on peut modifier l'heure et les minutes).
On laisse ces champs de date dans le formulaire d'édition d'une commande au cas où, même s'il est préférable d'utiliser les formulaires dédiés.

incrémentation de z pour les derniers commits.

File size: 6.5 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6// La CSS pour une commande
7function commandes_insert_head_css($flux){
8        $css = find_in_path('css/commandes.css');
9        $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
10        return $flux;
11}
12
13// Supprimer toutes les commandes en cours qui sont trop vieilles
14function commandes_optimiser_base_disparus($flux){
15        include_spip('inc/config');
16        // On cherche la date depuis quand on a le droit d'avoir fait la commande (par défaut 1h)
17        $depuis = date('Y-m-d H:i:s', time() - 3600*intval(lire_config('commandes/duree_vie', 1)));
18        // On récupère les commandes trop vieilles
19        $commandes = sql_allfetsel(
20                'id_commande',
21                'spip_commandes',
22                'statut = '.sql_quote('encours').' and date<'.sql_quote($depuis)
23        );
24
25        // S'il y a bien des commandes à supprimer
26        if ($commandes) {
27                $commandes = array_map('reset', $commandes);
28                include_spip('inc/commandes');
29                commandes_effacer($commandes);
30                $flux['data'] += count($commandes);
31        }
32
33        return $flux;
34}
35
36
37/**
38 * Ajouter une boite sur la fiche de commande
39 *
40 * @param string $flux
41 * @return string
42 */
43function commandes_affiche_gauche($flux) {
44
45        if (
46                $flux['args']['exec'] == 'commande_edit'
47                AND $table = preg_replace(",_edit$,","",$flux['args']['exec'])
48                AND $type = objet_type($table)
49                AND $id_table_objet = id_table_objet($type)
50                AND ($id = intval($flux['args'][$id_table_objet]))
51                AND (autoriser('modifier', 'commande', 0))
52        ) {
53                //un test pour todo ajouter un objet (produit,document,article,abonnement,rubrique ...)
54                $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document',array('objet'=>$type,'id_objet'=>$id));
55        }
56
57        return $flux;
58}
59
60
61/**
62 * formulaires dates sur la fiche d'une commande
63 *
64 * @param string $flux
65 * @return string
66 */
67function commandes_affiche_milieu($flux) {
68
69        if (
70                $exec = trouver_objet_exec($flux['args']['exec'])
71                and $exec['edition'] == false 
72                and $exec['type'] == 'commande'
73                and $id_table_objet = $exec['id_table_objet']
74                and (isset($flux['args'][$id_table_objet]) and $id_commande = intval($flux['args'][$id_table_objet]))
75        ) {
76                $texte = recuperer_fond('prive/squelettes/contenu/commande_affiche_milieu',array('id_commande'=>$id_commande));
77        }
78
79        if ($texte) {
80                if ($p=strpos($flux['data'],"<!--affiche_milieu-->"))
81                        $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
82                else
83                        $flux['data'] .= $texte;
84        }
85
86        return $flux;
87}
88
89
90
91/**
92 * accueil : liste des commandes en attente de validation
93 *
94 * @param string $flux
95 * @return string $flux
96 */
97function commandes_accueil_encours($flux) {
98
99        $statuts = array('attente','partiel','paye');
100        foreach( $statuts as $statut ){
101                if ( $nb_{$statut} = sql_countsel(table_objet_sql('commande'), "statut=".sql_quote($statut)) ) {
102                        $titre_{$statut} = singulier_ou_pluriel($nb_{$statut}, _T('commandes:info_1_commande_statut_'.$statut), _T('commandes:info_nb_commandes_statut_'.$statut, array('nb'=> $nb_{$statut})));
103                        $liste .= recuperer_fond('prive/objets/liste/commandes', array(
104                                'titre' => $titre_{$statut},
105                                'statut' => $statut,
106                                'cacher_tri' => true),
107                                array( 'ajax' => true )
108                        );
109                }
110        }
111
112        if ( isset($liste) ) {
113                $flux .= "<div class='commandes'>" . $liste . "</div>";
114        }
115        return $flux;
116}
117
118
119/**
120 * Liste des commandes sur la page d'un auteur
121 *
122 * @param array $flux
123 * @return array $flux
124**/
125function commandes_affiche_auteurs_interventions($flux) {
126        $texte = "";
127        $exec = isset($flux['args']['exec']) ? $flux['args']['exec'] : _request('exec');
128        if ($id_auteur = intval($flux['args']['id_auteur'])) {
129                $texte .= recuperer_fond('prive/objets/liste/commandes', array(
130                        'id_auteur' => $id_auteur,
131                        'titre' => _T('commandes:titre_commandes_auteur'),
132                        'cacher_tri' => true
133                        ),
134                        array('ajax' => true)
135                );
136        }
137        if ($texte) {
138                $flux['data'] .= $texte;
139        }
140
141        return $flux;
142}
143
144
145/**
146 * Traitements après l'édition d'une commande
147 * Quand on  modifie le satut d'une commande :
148 * - Mettre à jour les dates de paiement et d'envoi si par mégarde ça n'a pas été fait manuellement
149 * - Envoyer les notifications
150 *
151 * @param array $flux
152 *     $flux['args'][x] = arguments (table, id_objet, action, statut_ancien, date_ancienne, id_parent_ancien)
153 *     $flux['data'][x] = champs modifiés (statut, date_paiement etc.)
154 * @return array $flux
155**/
156function commandes_post_edition($flux){
157
158        if (
159                ($action = $flux['args']['action']) == 'instituer' // action instituer
160                and ($table = $flux['args']['table']) == table_objet_sql('commande') // on institue une commande
161                and ($statut_ancien = $flux['args']['statut_ancien']) != ($statut = $flux['data']['statut']) // le statut a été modifié
162                and $id_commande = $flux['args']['id_objet'] // on a bien un identifiant pour la commande
163        ) {
164
165                // Mise à jour des dates de paiement ou d'envoi si ça n'a pas été fait manuellement
166                if (
167                        in_array($statut, array('paye','envoye'))
168                        and $maj = sql_getfetsel('maj', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
169                        and $date_paiement = sql_getfetsel('date_paiement', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
170                        and $date_envoi = sql_getfetsel('date_envoi', table_objet_sql('commande'), "id_commande=".sql_quote($id_commande) )
171                        and include_spip('action/editer_objet')
172                ) {
173                        if (
174                                $statut == 'paye'
175                                and intval($date_paiement) == 0
176                        ){
177                                objet_modifier('commande', $id_commande, array('date_paiement'=>$maj));
178                        }
179                        if (
180                                $statut == 'envoye'
181                                and intval($date_envoi) == 0
182                        ){
183                                objet_modifier('commande', $id_commande, array('date_envoi'=>$maj));
184                        }
185                }
186
187                // Envoi des notifications
188                if (
189                        include_spip('inc/config')
190                        and $config = lire_config('commandes')
191                        and $quand = $config['quand'] ? $config['quand'] : array()
192                        and ($config['activer']) // les notifications sont activées
193                        and (in_array($statut, $quand)) // le nouveau statut est valide pour envoyer une notification
194                        and ($notifications = charger_fonction('notifications', 'inc', true)) // la fonction est bien chargée
195                ) {
196                        // Déterminer l'expediteur
197                        $options = array();
198                        if( $config['expediteur'] != "facteur" )
199                                $options['expediteur'] = $config['expediteur_'.$config['expediteur']];
200
201                        // Envoyer au vendeur et optionnellement au client
202                        $notifications('commande_vendeur', $id_commande, $options);
203                        if($config['client'])
204                                $notifications('commande_client', $id_commande, $options);
205                }
206        }
207
208        return($flux);
209}
210
211?>
Note: See TracBrowser for help on using the repository browser.