Changeset 112516 in spip-zone


Ignore:
Timestamp:
Nov 23, 2018, 12:19:20 PM (3 weeks ago)
Author:
abelass@…
Message:

v 1.29.7 permettre d'enregistrer un détail par déclinaison (patch azerttyu)

Location:
_plugins_/reservation_evenement/branches/v1
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/branches/v1

  • _plugins_/reservation_evenement/branches/v1/action/editer_reservation.php

    r111405 r112516  
    8080
    8181        // Si les déclinaisons sont actives on récupère les évenements via le prix
    82         if (test_plugin_actif('declinaisons')) {
     82        if ($plugin_declinaison = test_plugin_actif('declinaisons')) {
    8383                $evenements = array();
    84                 if ($id_prix_objet = _request('id_objet_prix')) {
    85                         foreach (array_keys($id_prix_objet ) AS $id_evenement) {
    86                                 $evenements[] = $id_evenement;
     84                $quantite = $_REQUEST['quantite'];
     85
     86                //id_request force le type des variable en id_
     87                if ($id_prix_objet = $_REQUEST['id_objet_prix']) {
     88                        foreach ($id_prix_objet as $id_evenement => $declinaisons) {
     89                                foreach($declinaisons as $declinaison) {
     90                                        if (!is_array($evenements[$id_evenement])) {
     91                                                $evenements[$id_evenement] = array();
     92                                        }
     93                                        $evenements[$id_evenement][] = array(
     94                                                'id_prix_objet' => (int)$declinaison,
     95                                                'quantite' => (int)$quantite[$id_evenement][$declinaison]
     96                                        );
     97                                }
    8798                        }
    8899                }
     
    110121        //Si on est dans le cas d'une création
    111122        if (is_array($evenements)) {
    112 
    113                 // Pour chaque événement on crée un détail de la réservation
    114                 foreach ($evenements AS $id_evenement) {
    115                         // Si aucun détail n'est attaché à l'événement, on le crée
    116                         if (!$reservations_detail = sql_fetsel('*', 'spip_reservations_details',
     123                // Si le plugin déclinaison est activé.
     124                if ($plugin_declinaison) {
     125                        // Pour chaque événement on crée un détail de la réservation
     126                        foreach ($evenements AS $id_evenement => $evenement_details) {
     127                                foreach ($evenement_details as $evenement_detail) {
     128                                        $where = 'id_reservation=' . $id_reservation . ' AND id_evenement=' . $id_evenement;
     129                                        if (isset($evenement_detail['id_prix_objet'])) {
     130                                                $where .= ' AND id_prix_objet = '.$evenement_detail['id_prix_objet'];
     131                                        }
     132                                        // Si aucun détail n'est attaché à l'événement, on le crée
     133                                        if (!$reservations_detail = sql_fetsel('*', 'spip_reservations_details', $where)) {
     134                                                $id_reservations_detail = 'new';
     135                                                $set['id_prix_objet'] = $evenement_detail['id_prix_objet'];
     136                                                $set['quantite'] = $evenement_detail['quantite'];
     137                                        }
     138                                        else {
     139                                                $id_reservations_detail = $reservations_detail['id_reservations_detail'];
     140                                                $set['quantite'] = $reservations_detail['quantite'];
     141                                        }
     142                                        // Pour l'enregistrement
     143                                        $set['id_evenement'] = $id_evenement;
     144
     145                                        // Eviter l'envoi d'une notification pour chaque détail
     146                                        set_request('envoi_separe_actif', 'non');
     147
     148                                        // Actualiser le détail de réservation
     149                                        $action($id_reservations_detail, 'reservations_detail', $set);
     150                                }
     151                        }
     152                }
     153                else {
     154                        // Pour chaque événement on crée un détail de la réservation
     155                        foreach ($evenements AS $id_evenement) {
     156                                // Si aucun détail n'est attaché à l'événement, on le crée
     157                                if (!$reservations_detail = sql_fetsel('*', 'spip_reservations_details',
    117158                                                'id_reservation=' . $id_reservation . ' AND id_evenement=' . $id_evenement)) {
    118                                 $id_reservations_detail = 'new';
    119                                 $set['id_prix_objet'] = $id_prix_objet[$id_evenement];
    120                         }
    121                         else {
    122                                 $id_reservations_detail = $reservations_detail['id_reservations_detail'];
    123                                 $set['quantite'] = $reservations_detail['quantite'];
    124                         }
    125 
    126                         // Pour l'enregistrement
    127                         $set['id_evenement'] = $id_evenement;
    128 
    129                         // Eviter l'envoi d'une notification pour chaque détail
    130                         set_request('envoi_separe_actif', 'non');
    131 
    132                         // Actualiser le détail de réservation
    133                         $detail = $action($id_reservations_detail, 'reservations_detail', $set);
    134                 }
    135         }
     159                                                $id_reservations_detail = 'new';
     160                                                $set['id_prix_objet'] = $id_prix_objet[$id_evenement];
     161                                }
     162                                else {
     163                                        $id_reservations_detail = $reservations_detail['id_reservations_detail'];
     164                                        $set['quantite'] = $reservations_detail['quantite'];
     165                                }
     166
     167                                // Pour l'enregistrement
     168                                $set['id_evenement'] = $id_evenement;
     169
     170                                // Eviter l'envoi d'une notification pour chaque détail
     171                                set_request('envoi_separe_actif', 'non');
     172
     173                                // Actualiser le détail de réservation
     174                                $action($id_reservations_detail, 'reservations_detail', $set);
     175                        }
     176                }
     177        }
     178
    136179
    137180        //Etablir si tous les détails d'événement ont le statut de la réservation
     
    141184                $statut_modifie = array();
    142185
    143                 foreach ($statuts_details_reservation AS $id_detail_reservation => $data) {
     186                foreach ($statuts_details_reservation AS $data) {
    144187                        $statut_modifie[] = $data['statut_modifie'];
    145188                }
  • _plugins_/reservation_evenement/branches/v1/base/reservation_evenement.php

    r111405 r112516  
    147147                        "id_reservation" => "bigint(21) NOT NULL DEFAULT '0'",
    148148                        "id_evenement" => "bigint(21) NOT NULL DEFAULT '0'",
     149                        "id_prix_objet" => "bigint(21) NOT NULL DEFAULT '0'",
    149150                        "descriptif" => "text NOT NULL",
    150151                        "quantite" => "int(11) NOT NULL DEFAULT '1'",
  • _plugins_/reservation_evenement/branches/v1/formulaires/inc-reservation_evenements_declinaisons_prix.html

    r110317 r112516  
    44<div class="choix">
    55        <BOUCLE_decl (PRIX_OBJETS){id_prix_objet_source}{par num titre,titre}{extension=declinaison}>
    6         <input type="radio" name="id_objet_prix[#ENV{id_evenement}]"
    7                 class="radio evenement declinaison"
     6        <input type="checkbox" name="id_objet_prix[#ENV{id_evenement}][\[(#ID_PRIX_OBJET_SOURCE)\]]"
     7                class="checkbox evenement declinaison"
    88                id="id_objet_prix[_(#ENV{id_evenement})][_(#ID_PRIX_OBJET_SOURCE)]"
    99                value="#ID_PRIX_OBJET_SOURCE"
     
    1616</B_decl>
    1717<div class="choix">
    18         <input type="radio" name="id_objet_prix[#ID_EVENEMENT]"
    19                 class="radio evenement declinaison"
     18        <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT][\[(#ID_PRIX_OBJET_SOURCE)\]]"
     19                class="checkbox evenement declinaison"
    2020                id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET_SOURCE)]"
    2121                value="#ID_PRIX_OBJET_SOURCE"
  • _plugins_/reservation_evenement/branches/v1/formulaires/reservation.php

    r111405 r112516  
    340340                refuser_traiter_formulaire_ajax();
    341341        }
     342
    342343        $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
    343344        $id_auteur = _request('id_auteur');
  • _plugins_/reservation_evenement/branches/v1/inc/donnees_reservations_details.php

    r111908 r112516  
    4545                        $set['places'] = $evenement['places'];
    4646
    47                 $set['quantite'] = _request('quantite') ? _request('quantite') : 1;
    48                 if (is_array($set['quantite'])) {
    49                         if (!$plugin_declinaisons) {
    50                                 if (isset($set['quantite'][$id_evenement])) {
    51                                         $set['quantite'] = ($set['quantite'][$id_evenement] > 0) ?
    52                                         $set['quantite'][$id_evenement] : 1;
     47                if (!isset($set['quantite'])) {
     48                        $set['quantite'] = _request('quantite') ? _request('quantite') : 1;
     49                        if (is_array($set['quantite'])) {
     50                                if (!$plugin_declinaisons) {
     51                                        if (isset($set['quantite'][$id_evenement])) {
     52                                                $set['quantite'] = ($set['quantite'][$id_evenement] > 0) ?
     53                                                $set['quantite'][$id_evenement] : 1;
     54                                        }
    5355                                }
    5456                        }
  • _plugins_/reservation_evenement/branches/v1/paquet.xml

    r111908 r112516  
    22        prefix="reservation_evenement"
    33        categorie="date"
    4         version="1.29.5"
     4        version="1.29.7"
    55        etat="stable"
    66        compatibilite="[3.0.16;3.2.*]"
    77        logo="prive/themes/spip/images/reservation_evenement-64.png"
    88        documentation="https://contrib.spip.net/Reservation-d-evenements-4459"
    9         schema="1.29.0"
     9        schema="1.29.6"
    1010>
    1111
  • _plugins_/reservation_evenement/branches/v1/reservation_evenement_administrations.php

    r111405 r112516  
    152152        );
    153153
     154        $maj['1.29.6']  = array(
     155                array (
     156                        'maj_tables',
     157                        array (
     158                                'spip_reservations_details',
     159                        )
     160                )
     161        );
     162
    154163        include_spip('base/upgrade');
    155164        maj_plugin($nom_meta_base_version, $version_cible, $maj);
Note: See TracChangeset for help on using the changeset viewer.