source: spip-zone/_plugins_/coupons/trunk/coupons_pipelines.php @ 110096

Last change on this file since 110096 was 110096, checked in by nicod@…, 19 months ago

Ajout d'un champ "actif"

File size: 3.4 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Coupons de réduction
4 *
5 * @plugin     Coupons de réduction
6 * @copyright  2017
7 * @author     Nicolas Dorigny
8 * @licence    GNU/GPL
9 * @package    SPIP\Coupons\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16function coupons_post_edition($flux) {
17
18        if (
19                $flux['args']['table'] == 'spip_commandes'
20                && $flux['args']['action'] == 'instituer'
21                && $flux['data']['statut'] == 'paye'
22        ) {
23                $id_commande = intval($flux['args']['id_objet']);
24
25                // 1 - au paiement de la commande, marquer les coupons comme utilisés
26
27                $infos_coupons = sql_allfetsel(
28                        'id_objet',
29                        'spip_commandes_details',
30                        'id_commande = ' . $id_commande . ' AND objet = "coupon"');
31
32                foreach ($infos_coupons as $coupon) {
33                        sql_updateq(
34                                'spip_coupons',
35                                array(
36                                        'id_commande' => $id_commande,
37                                        'actif'       => '',
38                                ),
39                                'id_coupon = ' . $coupon['id_objet']
40                        );
41                        spip_log('coupon ' . $coupon['id_objet'] . ' utilisé par commande ' . $id_commande, 'coupons');
42                }
43
44                // 2 - générer un coupon pour chaque bon d'achat dans la commande
45
46                $infos_bon_cadeau = sql_allfetsel(
47                        'cd.*, p.titre, p.taxe',
48                        'spip_commandes_details cd JOIN spip_produits p ON (cd.id_objet = p.id_produit AND cd.objet="produit")',
49                        'cd.id_commande = ' . $id_commande . ' AND p.bon_cadeau = "on"');
50
51                foreach ($infos_bon_cadeau as $bon) {
52
53                        for ($i = 0; $i < $bon['quantite']; $i++) {
54                                // montant TTC du bon de réduction
55                                $montant_coupon = $bon['prix_unitaire_ht'] * (1 + $bon['taxe']);
56                                if ($montant_coupon) {
57                                        include_spip('action/editer_objet');
58                                        $id_coupon      = objet_inserer('coupon');
59                                        $valeurs_coupon = array(
60                                                'montant'                     => $montant_coupon,
61                                                'restriction_taxe'            => $bon['taxe'],
62                                                'id_commandes_detail_origine' => $bon['id_commandes_detail'],
63                                                'titre'                       => $bon['titre'],
64                                                'code'                        => coupon_generer_code(),
65                                                'actif'                       => 'on',
66                                        );
67                                        objet_modifier('coupon', $id_coupon, $valeurs_coupon);
68
69                                        // envoi d'une notification
70                                        if ($destinataires = lire_config('coupons/emails_notifications')) {
71                                                $expediteur   = lire_config('email_webmaster');
72                                                $texte        = recuperer_fond('notifications/notification_coupon', $valeurs_coupon);
73                                                $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
74                                                $envoyer_mail($destinataires, _T('coupons:creation_coupon'), $texte, $expediteur);
75                                        }
76
77                                        spip_log('création du coupon ' . $id_coupon, 'coupons');
78                                        spip_log($valeurs_coupon, 'coupons');
79                                }
80                        }
81
82                }
83        }
84
85        return $flux;
86}
87
88function coupons_affiche_milieu($flux) {
89        if ($flux['args']['exec'] == 'commande' && $flux['args']['id_commande']) {
90                $details              = sql_allfetsel(
91                        'id_commandes_detail',
92                        'spip_commandes_details',
93                        'id_commande=' . $flux['args']['id_commande']
94                );
95                $id_commandes_details = array();
96                foreach ($details as $detail) {
97                        $id_commandes_details[] = $detail['id_commandes_detail'];
98                }
99                if (count($id_commandes_details)) {
100                        $texte = recuperer_fond(
101                                'prive/objets/liste/coupons',
102                                array(
103                                        'where' => 'id_commandes_detail_origine IN (' . join(',', $id_commandes_details) . ')',
104                                )
105                        );
106                        if (($p = strpos($flux['data'], '<!--afficher_fiche_objet-->')) !== false) {
107                                $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
108                        } else {
109                                $flux['data'] .= $texte;
110                        }
111                }
112
113        }
114
115        return $flux;
116}
Note: See TracBrowser for help on using the repository browser.