source: spip-zone/_plugins_/reservation_evenement/trunk/inc/donnees_reservations_details.php @ 103785

Last change on this file since 103785 was 103785, checked in by abelass@…, 4 years ago

label promotions

File size: 5.8 KB
Line 
1<?php
2if (!defined('_ECRIRE_INC_VERSION'))
3        return;
4
5        function inc_donnees_reservations_details_dist($id_reservations_detail, $set) {
6                if (count($set) > 0) {
7                        include_spip('inc/filtres');
8                        $reservations_details = sql_fetsel('*', 'spip_reservations_details', 'id_reservations_detail=' . $id_reservations_detail);
9
10                        $id_evenement = isset($set['id_evenement']) ? $set['id_evenement'] : $reservations_details['id_evenement'];
11                        // Les données de l'évènenement
12
13                        $evenement = sql_fetsel('*', 'spip_evenements', 'id_evenement=' . $id_evenement);
14
15                        $date_debut = $evenement['date_debut'];
16                        if (!$date_fin = sql_getfetsel('date_fin', 'spip_evenements', 'id_evenement_source=' . $id_evenement, '', 'date_debut DESC'))
17                                $date_fin = $evenement['date_fin'];
18
19                                // On établit les dates
20                                if ($date_debut != $date_fin) {
21                                        if (affdate($date_debut, 'd-m-Y') == affdate($date_fin, 'd-m-Y')) {
22                                                $date = affdate($date_debut, 'd/m/Y') . ',' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
23                                        }
24                                        else {
25                                                $date = affdate($date_debut, 'd/m/Y') . '-' . affdate($date_fin, 'd/m/Y') . ', ' . affdate($date_debut, 'nom_jour') . ' ' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
26                                        }
27                                }
28                                else {
29                                        if (affdate($date_debut, 'G:i') == '0:00')
30                                                $date = affdate($date_debut, 'd/m/Y');
31                                                else
32                                                        $date = affdate($date_debut, 'd/m/Y G:i');
33                                }
34
35                                // Les descriptif
36                                $set['descriptif'] = supprimer_numero($evenement['titre']) . '  (' . $date . ')';
37                                if (intval($evenement['places']))
38                                        $set['places'] = $evenement['places'];
39
40                                        $set['quantite'] = _request('quantite') ? _request('quantite') : 1;
41                                        if (is_array($set['quantite']) and isset($set['quantite'][$id_evenement]))
42                                                $set['quantite'] = ($set['quantite'][$id_evenement] > 0) ? $set['quantite'][$id_evenement] : 1;
43
44                                                $quantite = $set['quantite'];
45
46                                                // Si le prix n'est pas fournit, on essaye de le trouver
47                                                if (!isset($set['prix']) and !isset($set['prix_ht'])) {
48
49                                                        /* Existence d'un prix via le plugin Prix Objets http://plugins.spip.net/prix_objets.html */
50                                                        if ($prix_objets = test_plugin_actif('prix_objets')) {
51                                                                $fonction_prix = charger_fonction('prix', 'inc/');
52                                                                $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
53
54                                                                // si le plugin déclinaison produit (http://plugins.spip.net/declinaisons.html)
55                                                                // est active il peut y avoir plusieurs prix par évenement
56                                                                if (test_plugin_actif('declinaisons')) {
57                                                                        $id_prix = isset($set['id_prix_objet']) ? $set['id_prix_objet'] : $reservations_details['id_prix_objet'];
58                                                                        $p = sql_fetsel('prix_ht,id_prix_objet,id_declinaison,code_devise', 'spip_prix_objets', 'id_prix_objet=' . $id_prix);
59                                                                        if ($p['id_declinaison'] > 0)
60                                                                                $set['descriptif'] .= ' - ' . supprimer_numero(sql_getfetsel('titre', 'spip_declinaisons', 'id_declinaison=' . $p['id_declinaison']));
61                                                                }
62                                                                // Sinon on cherche d'abord le prix attaché
63                                                                else {
64                                                                        $p = prix_attache($id_evenement, $evenement['id_article'], $evenement['id_evenement_source']);
65                                                                }
66
67                                                                if (isset($p)) {
68                                                                        $prix_ht = $quantite * $fonction_prix_ht('prix_objet', $p['id_prix_objet']);
69                                                                        $prix = $quantite * $fonction_prix('prix_objet', $p['id_prix_objet']);
70                                                                        if ($prix_ht)
71                                                                                $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
72                                                                                $set['prix_ht'] = $prix_ht;
73                                                                                $set['prix'] = $prix;
74                                                                                $set['taxe'] = $taxe;
75                                                                                $set['id_prix_objet'] = $p['id_prix_objet'];
76                                                                                // Si pas de devise fournit par le contexte, on prend celle de prix_objets
77                                                                                if (!isset($set['devise']))
78                                                                                        $set['devise'] = $p['code_devise'];
79                                                                }
80                                                        }
81                                                        // Sinon voir s'il y a un champ prix dans la table evenement
82                                                        elseif (intval($evenement['prix']) or intval($evenement['prix_ht'])) {
83                                                                $set = etablir_prix($id_evenement, 'evenement', $evenement, $set, $quantite);
84                                                        }
85                                                        // Sinon voir s'il y a un champ prix dans la table articles
86                                                        elseif ($article = sql_fetsel('*', 'spip_articles', 'id_article=' . $evenement['id_article'])) {
87                                                                $set = etablir_prix($evenement['id_article'], 'article', $article, $set, $quantite);
88                                                        }
89                                                }
90                }
91                return $set;
92        }
93
94        function etablir_prix($id, $objet, $datas, $set, $quantite) {
95                if ($fonction_prix = charger_fonction('prix', 'inc/', true)) {
96                        $prix = $fonction_prix($objet, $id);
97                }
98                else
99                        $prix = $datas['prix'];
100
101                        if ($fonction_prix_ht = charger_fonction('ht', 'inc/prix', true)) {
102                                $prix_ht = $fonction_prix_ht($objet, $id);
103                        }
104                        elseif (intval($datas['prix_ht']))
105                        $prix_ht = $datas['prix_ht'];
106
107                        if ($prix_ht) {
108                                $prix = $quantite * $prix;
109                                $prix_ht = $quantite * $prix_ht;
110                                if ($prix_ht > 0) {
111                                        $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
112                                }
113                                $set['prix_ht'] = $prix_ht;
114                                $set['prix'] = $prix;
115                                $set['taxe'] = $taxe;
116                        }
117                        else
118                                $set['prix'] = $quantite * $prix;
119
120                                return $set;
121        }
122
123        /**
124         * Etablir le prix de l'objet
125         *
126         * @param int $id_evenement
127         *         Identifiant de l'événement.
128         * @param int $id_article
129         *         Identifiant de l'article.
130         * @param int $id_evenement_source
131         *         Identifiant source de l'événement
132         * @return array Les données du prix.
133         */
134        function prix_attache($id_evenement, $id_article, $id_evenement_source) {
135                // Etablir le prix de l'événement sinon de l'article.
136                if (!$p = sql_fetsel(
137                                'prix_ht,prix,id_prix_objet,code_devise',
138                                'spip_prix_objets',
139                                'objet="evenement" AND id_objet=' . $id_evenement)) {
140                                if (!$p = sql_fetsel(
141                                                'prix_ht,prix,id_prix_objet,code_devise',
142                                                'spip_prix_objets',
143                                                'objet="evenement" AND id_objet=' . $id_evenement_source)) {
144                                                $p = sql_fetsel(
145                                                                'prix_ht,prix,id_prix_objet,code_devise',
146                                                                'spip_prix_objets',
147                                                                'objet="article" AND id_objet=' . $id_article);
148                                }
149                }
150                return $p;
151        }
Note: See TracBrowser for help on using the repository browser.