Changeset 112470 in spip-zone


Ignore:
Timestamp:
Nov 19, 2018, 1:22:50 PM (3 weeks ago)
Author:
cam.lafit@…
Message:

Sauver des evenement par déclinaison

  • On peut réserver plusieurs prix par evenement
  • On compléte les détails pour chaque evenement en indiquant la quantité

et la déclinaison concernée

Location:
_plugins_/reservation_evenement/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/trunk/action/editer_reservation.php

    r111404 r112470  
    8282        if (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                }
     
    112123
    113124                // 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',
    117                                                 '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);
     125                foreach ($evenements AS $id_evenement => $evenement_details) {
     126                        foreach ($evenement_details as $evenement_detail) {
     127                                $where = 'id_reservation=' . $id_reservation . ' AND id_evenement=' . $id_evenement;
     128                                if (isset($evenement_detail['id_prix_objet'])) {
     129                                        $where .= ' AND id_prix_objet = '.$evenement_detail['id_prix_objet'];
     130                                }
     131                                // Si aucun détail n'est attaché à l'événement, on le crée
     132                                if (!$reservations_detail = sql_fetsel('*', 'spip_reservations_details', $where)) {
     133                                        $id_reservations_detail = 'new';
     134                                        $set['id_prix_objet'] = $evenement_detail['id_prix_objet'];
     135                                        $set['quantite'] = $evenement_detail['quantite'];
     136                                }
     137                                else {
     138                                        $id_reservations_detail = $reservations_detail['id_reservations_detail'];
     139                                        $set['quantite'] = $reservations_detail['quantite'];
     140                                }
     141                                // Pour l'enregistrement
     142                                $set['id_evenement'] = $id_evenement;
     143
     144                                // Eviter l'envoi d'une notification pour chaque détail
     145                                set_request('envoi_separe_actif', 'non');
     146
     147                                // Actualiser le détail de réservation
     148                                $detail = $action($id_reservations_detail, 'reservations_detail', $set);
     149                        }
    134150                }
    135151        }
  • _plugins_/reservation_evenement/trunk/base/reservation_evenement.php

    r111404 r112470  
    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/trunk/inc/donnees_reservations_details.php

    r111907 r112470  
    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                        }
Note: See TracChangeset for help on using the changeset viewer.