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

Last change on this file since 109918 was 109918, checked in by nicolas.dorigny@…, 17 months ago

Ne pas multiplier par la quantité pour obtenir le montant du coupon, mais générer un coupon par bon cadeau

File size: 3.3 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('spip_coupons', array('id_commande' => $id_commande), 'id_coupon = ' . $coupon['id_objet']);
34                        spip_log('coupon '.$coupon['id_objet'].' utilisé par commande '.$id_commande, 'coupons');
35                }
36
37                // 2 - générer un coupon pour chaque bon d'achat dans la commande
38
39                $infos_bon_cadeau = sql_allfetsel(
40                        'cd.*, p.titre, p.taxe',
41                        'spip_commandes_details cd JOIN spip_produits p ON (cd.id_objet = p.id_produit AND cd.objet="produit")',
42                        'cd.id_commande = ' . $id_commande . ' AND p.bon_cadeau = "on"');
43
44                foreach ($infos_bon_cadeau as $bon) {
45
46                        for($i=0; $i<$bon['quantite']; $i++) {
47                                // montant TTC du bon de réduction
48                                $montant_coupon = $bon['prix_unitaire_ht'] * (1 + $bon['taxe']);
49                                if ($montant_coupon) {
50                                        include_spip('action/editer_objet');
51                                        $id_coupon      = objet_inserer('coupon');
52                                        $valeurs_coupon = array(
53                                                'montant'                     => $montant_coupon,
54                                                'restriction_taxe'            => $bon['taxe'],
55                                                'id_commandes_detail_origine' => $bon['id_commandes_detail'],
56                                                'titre'                       => $bon['titre'],
57                                                'code'                        => coupon_generer_code(),
58                                        );
59                                        objet_modifier('coupon', $id_coupon, $valeurs_coupon);
60
61                                        // envoi d'une notification
62                                        if ($destinataires = lire_config('coupons/emails_notifications')) {
63                                                $expediteur   = lire_config('email_webmaster');
64                                                $texte        = recuperer_fond('notifications/notification_coupon', $valeurs_coupon);
65                                                $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
66                                                $envoyer_mail($destinataires, _T('coupons:creation_coupon'), $texte, $expediteur);
67                                        }
68
69                                        spip_log('création du coupon ' . $id_coupon, 'coupons');
70                                        spip_log($valeurs_coupon, 'coupons');
71                                } 
72                        }
73
74                }
75        }
76       
77        return $flux;
78}
79
80function coupons_affiche_milieu($flux) {
81        if ($flux['args']['exec'] == 'commande' && $flux['args']['id_commande']) {
82                $details              = sql_allfetsel(
83                        'id_commandes_detail',
84                        'spip_commandes_details',
85                        'id_commande=' . $flux['args']['id_commande']
86                );
87                $id_commandes_details = array();
88                foreach ($details as $detail) {
89                        $id_commandes_details[] = $detail['id_commandes_detail'];
90                }
91                if (count($id_commandes_details)) {
92                        $texte = recuperer_fond(
93                                'prive/objets/liste/coupons',
94                                array(
95                                        'where' => 'id_commandes_detail_origine IN (' . join(',', $id_commandes_details) . ')',
96                                )
97                        );
98                        if (($p = strpos($flux['data'], '<!--afficher_fiche_objet-->')) !== false) {
99                                $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
100                        } else {
101                                $flux['data'] .= $texte;
102                        }
103                }
104
105        }
106
107        return $flux;
108}
Note: See TracBrowser for help on using the repository browser.