source: spip-zone/_plugins_/prix/inc/prix.php @ 92565

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

Le paramètre serveur n'existait pas. Il doit rester optionnel (pierre kuhn)
+ pas de fermeture php

File size: 3.0 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6/*
7 * Permet d'obtenir le prix HT d'un objet SPIP. C'est le résultat de cette fonction qui est utilisée pour calculer le prix TTC.
8 *
9 * @param string $type_objet Le type de l'objet
10 * @param int $id_objet L'identifiant de l'objet
11 * @return float Retourne le prix HT de l'objet sinon 0
12 */
13function inc_prix_ht_dist($type_objet, $id_objet, $arrondi = 2, $serveur = ''){
14        $prix_ht = 0;
15        // Cherchons d'abord si l'objet existe bien
16        if ($type_objet
17                and $id_objet = intval($id_objet)
18                and include_spip('base/connect_sql')
19                and $type_objet = objet_type($type_objet)
20                and $table_sql = table_objet_sql($type_objet,$serveur)
21                and $cle_objet = id_table_objet($type_objet,$serveur)
22                and $ligne = sql_fetsel('*', $table_sql, "$cle_objet = $id_objet",'','','','',$serveur)
23        ){
24                // Existe-t-il une fonction précise pour le prix HT de ce type d'objet : prix_ht_<objet>() dans prix/<objet>.php
25                if ($fonction_ht = charger_fonction('ht', "prix/$type_objet", true)){
26                        // On passe la ligne SQL en paramètre pour ne pas refaire la requête
27                        $prix_ht = $fonction_ht($id_objet, $ligne);
28                }
29                // S'il n'y a pas de fonction, regardons s'il existe des champs normalisés, ce qui évite d'écrire une fonction pour rien
30                elseif ($ligne['prix_ht'])
31                        $prix_ht = $ligne['prix_ht'];
32                elseif ($ligne['prix'])
33                        $prix_ht = $ligne['prix'];
34               
35                // Enfin on passe dans un pipeline pour modifier le prix HT
36                $prix_ht = pipeline(
37                        'prix_ht',
38                        array(
39                                'args' => array(
40                                        'id_objet' => $id_objet,
41                                        'type_objet' => $type_objet,
42                                        'prix_ht' => $prix_ht
43                                ),
44                                'data' => $prix_ht
45                        )
46                );
47        }
48       
49        // Si on demande un arrondi, on le fait
50        if ($arrondi)
51                $prix_ht = round($prix_ht, $arrondi);
52       
53        return $prix_ht;
54}
55
56/*
57 * Permet d'obtenir le prix final TTC d'un objet SPIP quel qu'il soit.
58 *
59 * @param string $type_objet Le type de l'objet
60 * @param int $id_objet L'identifiant de l'objet
61 * @return float Retourne le prix TTC de l'objet sinon 0
62 */
63function inc_prix_dist($type_objet, $id_objet, $arrondi = 2, $serveur = ''){
64        include_spip('base/connect_sql');
65       
66        // On va d'abord chercher le prix HT. On délègue le test de présence de l'objet dans cette fonction.
67        $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
68        $type_objet = objet_type($type_objet);
69        $prix = $prix_ht = $fonction_prix_ht($type_objet, $id_objet, 0, $serveur);
70       
71        // On cherche maintenant s'il existe une personnalisation pour les taxes : prix_<objet>() dans prix/<objet>.php
72        if ($fonction_prix_objet = charger_fonction($type_objet, 'prix/', true)){
73                $prix = $fonction_prix_objet($id_objet, $prix_ht);
74        }
75       
76        // Enfin on passe dans un pipeline pour pouvoir ajouter taxes, ristournes ou autres modifications
77        $prix = pipeline(
78                'prix',
79                array(
80                        'args' => array(
81                                'id_objet' => $id_objet,
82                                'type_objet' => $type_objet,
83                                'prix_ht' => $prix_ht,
84                                'prix' => $prix
85                        ),
86                        'data' => $prix
87                )
88        );
89       
90        // Si on demande un arrondi, on le fait
91        if ($arrondi)
92                $prix = round($prix, $arrondi);
93       
94        // Et c'est fini
95        return $prix;
96}
97
Note: See TracBrowser for help on using the repository browser.