GlisWeb framework
_default.carrello.php
Vai alla documentazione di questo file.
1 <?php
2 
3  // tendina delle aliquote IVA
4  $ct['etc']['id_iva'] = mysqlQuery( $cf['mysql']['connection'], 'SELECT id, aliquota, __label__ FROM iva_view WHERE se_ecommerce = 1 ORDER BY aliquota DESC' );
5 
6  // tendina complessiva spese di spedizione
7  $_SESSION['carrello']['etc']['id_zona'] = array();
8 
9  // carico la tendina delle tipologie di spedizione per ogni riga
10  if( isset( $_SESSION['carrello']['carrelli_articoli'] ) && is_array( $_SESSION['carrello']['carrelli_articoli'] ) ) {
11  foreach( $_SESSION['carrello']['carrelli_articoli'] as $articolo => &$dati ) {
12 
13 // die( print_r( $dati, 1 ) );
14 
15  // recupero il prodotto
16  // TODO non dare per scontato che prodotto e articolo coincidano, anzi!!!
17  // TODO fare un reverse index articolo -> prodotto e uno straight index prodotto -> articoli
18  $prod = $cf['catalogo']['prodotti'][ $dati['id_prodotto'] ];
19 
20 // die( print_r( $cf['catalogo']['prodotti'][ $dati['id_prodotto'] ], 1 ) );
21 
22  if( isset( $prod['categorie'] ) && is_array( $prod['categorie'] ) ) {
23  $categoria = array_shift( $prod['categorie'] );
24  }
25 
26 /*
27  // carico la tendina delle modalità di spedizione
28  $_SESSION['carrello']['carrelli_articoli'][ $articolo ]['etc']['id_modalita_spedizione'] = mysqlCachedQuery(
29  $cf['memcache']['connection'],
30  $cf['mysql']['connection'],
31  'SELECT modalita_spedizione.nome AS __label__, modalita_spedizione.id AS id, '
32  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo '
33  .'FROM modalita_spedizione '
34  .'LEFT JOIN modalita_spedizione_prezzi AS p1 ON ( p1.id_modalita = modalita_spedizione.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
35  .'LEFT JOIN modalita_spedizione_prezzi AS p2 ON ( p2.id_modalita = modalita_spedizione.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
36  .'HAVING prezzo IS NOT NULL '
37  .'ORDER BY id ',
38  array(
39  array( 's' => $prod['categorie'][1]['id'] ),
40  array( 's' => $prod['categorie'][1]['id_genitore'] )
41  )
42  );
43 */
44  // carico la tendina delle tipologie di spedizione
45  $_SESSION['carrello']['carrelli_articoli'][ $articolo ]['etc']['id_modalita_spedizione'] = mysqlCachedQuery(
46  $cf['memcache']['connection'],
47  $cf['mysql']['connection'],
48  'SELECT modalita_spedizione.nome AS __label__, modalita_spedizione.id AS id, '
49  .'coalesce( p0.prezzo, p1.prezzo, p2.prezzo ) AS prezzo '
50  .'FROM modalita_spedizione '
51  .'INNER JOIN prodotti_modalita_spedizione ON ( prodotti_modalita_spedizione.id_modalita = modalita_spedizione.id AND prodotti_modalita_spedizione.id_prodotto = ? ) '
52  .'LEFT JOIN modalita_spedizione_prezzi AS p0 ON ( p0.id_modalita IS NULL AND p0.id_zona IS NULL AND p0.id_categoria_prodotti IS NULL AND p0.id_prodotto = ? ) '
53  .'LEFT JOIN modalita_spedizione_prezzi AS p1 ON ( p1.id_modalita = modalita_spedizione.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
54  .'LEFT JOIN modalita_spedizione_prezzi AS p2 ON ( p2.id_modalita = modalita_spedizione.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
55  .'HAVING prezzo IS NOT NULL '
56  .'ORDER BY id DESC',
57  array(
58  array( 's' => $prod['id'] ),
59  array( 's' => $prod['id'] ),
60  array( 's' => $categoria['id'] ),
61  array( 's' => $categoria['id_genitore'] )
62  )
63  );
64 
65  // carico la tendina delle tipologie di consegna
66  $_SESSION['carrello']['etc']['id_modalita_consegna'] = mysqlCachedQuery(
67  $cf['memcache']['connection'],
68  $cf['mysql']['connection'],
69  'SELECT modalita_consegna.nome AS __label__, modalita_consegna.id AS id, '
70  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo, modalita_consegna.suggerimento '
71  .'FROM modalita_consegna '
72  .'LEFT JOIN modalita_consegna_prezzi AS p1 ON ( p1.id_modalita = modalita_consegna.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
73  .'LEFT JOIN modalita_consegna_prezzi AS p2 ON ( p2.id_modalita = modalita_consegna.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
74  .'HAVING prezzo IS NOT NULL '
75  .'ORDER BY id ',
76  array(
77  array( 's' => $categoria['id'] ),
78  array( 's' => $categoria['id_genitore'] )
79  )
80  );
81 
82  // carico la tendina delle tipologie di assicurazione su spedizione
83  $_SESSION['carrello']['etc']['id_assicurazione_trasporto'] = mysqlCachedQuery(
84  $cf['memcache']['connection'],
85  $cf['mysql']['connection'],
86  'SELECT assicurazioni_trasporto.nome AS __label__, assicurazioni_trasporto.id AS id, '
87  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo, assicurazioni_trasporto.suggerimento '
88  .'FROM assicurazioni_trasporto '
89  .'LEFT JOIN assicurazioni_trasporto_prezzi AS p1 ON ( p1.id_assicurazione = assicurazioni_trasporto.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
90  .'LEFT JOIN assicurazioni_trasporto_prezzi AS p2 ON ( p2.id_assicurazione = assicurazioni_trasporto.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
91  .'HAVING prezzo IS NOT NULL '
92  .'ORDER BY id ',
93  array(
94  array( 's' => $categoria['id'] ),
95  array( 's' => $categoria['id_genitore'] )
96  )
97  );
98 
99  // carico la tendina delle tipologie di assicurazione su montaggio
100  $_SESSION['carrello']['etc']['id_assicurazione_montaggio'] = mysqlCachedQuery(
101  $cf['memcache']['connection'],
102  $cf['mysql']['connection'],
103  'SELECT assicurazioni_montaggio.nome AS __label__, assicurazioni_montaggio.id AS id, '
104  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo, assicurazioni_montaggio.suggerimento '
105  .'FROM assicurazioni_montaggio '
106  .'LEFT JOIN assicurazioni_montaggio_prezzi AS p1 ON ( p1.id_assicurazione = assicurazioni_montaggio.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
107  .'LEFT JOIN assicurazioni_montaggio_prezzi AS p2 ON ( p2.id_assicurazione = assicurazioni_montaggio.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
108  .'HAVING prezzo IS NOT NULL '
109  .'ORDER BY id ',
110  array(
111  array( 's' => $categoria['id'] ),
112  array( 's' => $categoria['id_genitore'] )
113  )
114  );
115 
116  // carico la tendina delle garanzie sui carrelli
117  $_SESSION['carrello']['etc']['id_garanzia'] = mysqlCachedQuery(
118  $cf['memcache']['connection'],
119  $cf['mysql']['connection'],
120  'SELECT garanzie_carrelli.nome AS __label__, garanzie_carrelli.id AS id, '
121  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo, coalesce( p1.prezzo_relativo, p2.prezzo_relativo ) AS prezzo_relativo, garanzie_carrelli.suggerimento '
122  .'FROM garanzie_carrelli '
123  .'LEFT JOIN garanzie_carrelli_prezzi AS p1 ON ( p1.id_garanzia = garanzie_carrelli.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
124  .'LEFT JOIN garanzie_carrelli_prezzi AS p2 ON ( p2.id_garanzia = garanzie_carrelli.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
125  .'HAVING prezzo IS NOT NULL '
126  .'ORDER BY id ',
127  array(
128  array( 's' => $categoria['id'] ),
129  array( 's' => $categoria['id_genitore'] )
130  )
131  );
132 
133  // calcolo prezzo relativo
134  foreach( $_SESSION['carrello']['etc']['id_garanzia'] as &$prz ) {
135  if( $prz['prezzo_relativo'] > 0 ) {
136  $prz['prezzo'] = floor( ( $_SESSION['carrello']['prezzo_lordo_acquisti'] / 100 ) * $prz['prezzo_relativo'] );
137  }
138  }
139 
140  // carico la tendina delle modalità di pagamento
141  // NOTA $ct['etc']['id_modalita_pagamento'] è quello giusto, $_SESSION['carrello']['etc']['id_modalita_pagamento'] è per retrocompatibilità con IFM
142  $ct['etc']['id_modalita_pagamento'] =
143  $_SESSION['carrello']['etc']['id_modalita_pagamento'] = mysqlCachedQuery(
144  $cf['memcache']['connection'],
145  $cf['mysql']['connection'],
146  'SELECT modalita_pagamento.nome AS __label__, modalita_pagamento.id AS id, coalesce( modalita_pagamento.importo_min, 0 ) AS importo_min, coalesce( modalita_pagamento.importo_max, 0 ) AS importo_max, '
147  .'coalesce( p1.prezzo, p2.prezzo ) AS prezzo, coalesce( p1.prezzo_relativo, p2.prezzo_relativo ) AS prezzo_relativo, modalita_pagamento.suggerimento '
148  .'FROM modalita_pagamento '
149  .'LEFT JOIN modalita_pagamento_prezzi AS p1 ON ( p1.id_modalita = modalita_pagamento.id AND p1.id_zona IS NULL AND ( p1.id_categoria_prodotti = ? OR p1.id_categoria_prodotti = ? ) ) '
150  .'LEFT JOIN modalita_pagamento_prezzi AS p2 ON ( p2.id_modalita = modalita_pagamento.id AND p2.id_zona IS NULL AND p2.id_categoria_prodotti IS NULL ) '
151 /* .'WHERE ( modalita_pagamento.importo_min IS NULL OR modalita_pagamento.importo_min <= ? ) '
152  .'AND ( modalita_pagamento.importo_max IS NULL OR modalita_pagamento.importo_max >= ? ) ' */
153  .'HAVING prezzo IS NOT NULL '
154  .'ORDER BY ordine DESC ',
155  array(
156  array( 's' => $categoria['id'] ),
157  array( 's' => $categoria['id_genitore'] )
158 # array( 's' => $_SESSION['carrello']['prezzo_lordo_complessivo'] ),
159 # array( 's' => $_SESSION['carrello']['prezzo_lordo_complessivo'] )
160  )
161  );
162 
163 # print_r( $ct['etc']['id_modalita_pagamento'] );
164 
165  // calcolo prezzo relativo
166  foreach( $_SESSION['carrello']['etc']['id_modalita_pagamento'] as &$prz ) {
167  if( $prz['prezzo_relativo'] > 0 ) {
168  $prz['prezzo'] = floor( ( $_SESSION['carrello']['prezzo_lordo_acquisti'] / 100 ) * $prz['prezzo_relativo'] );
169  }
170  }
171 
172  // carico la tendina delle provincie
173  $provincie = mysqlCachedQuery(
174  $cf['memcache']['connection'],
175  $cf['mysql']['connection'],
176  'SELECT provincie.nome AS __label__, provincie.sigla, '
177  .'zone_provincie.id_zona, provincie.id, '
178  .'coalesce( z0.prezzo, z1.prezzo, z2.prezzo, z3.prezzo, 0) AS prezzo '
179  .'FROM provincie '
180  .'LEFT JOIN zone_provincie ON zone_provincie.id_provincia = provincie.id '
181  .'LEFT JOIN zone_prezzi_spedizione AS z0 ON ( z0.id_zona IS NULL AND z0.id_ingombro IS NULL AND z0.id_categoria_prodotti IS NULL AND z0.id_prodotto = ? ) '
182  .'LEFT JOIN zone_prezzi_spedizione AS z1 ON ( z1.id_zona IS NULL AND z1.id_ingombro IS NULL AND ( z1.id_categoria_prodotti = ? OR z1.id_categoria_prodotti = ? ) ) '
183  .'LEFT JOIN zone_prezzi_spedizione AS z2 ON ( z2.id_zona = zone_provincie.id_zona AND z2.id_ingombro = ? AND z2.id_categoria_prodotti IS NULL ) '
184  .'LEFT JOIN zone_prezzi_spedizione AS z3 ON ( z3.id_zona = zone_provincie.id_zona AND z3.id_ingombro IS NULL AND z3.id_categoria_prodotti IS NULL ) '
185  .'HAVING prezzo IS NOT NULL '
186  .'ORDER BY __label__ ',
187  array(
188  array( 's' => $prod['id'] ),
189  array( 's' => $categoria['id'] ),
190  array( 's' => $categoria['id_genitore'] ),
191  array( 's' => $prod['id_ingombro'] )
192  )
193  );
194 
195 # print_r( $provincie );
196 
197  // costruisco il complessivo
198  foreach( $provincie as $provincia ) {
199  if( isset( $_SESSION['carrello']['etc']['id_zona'][ $provincia['id'] ] ) ) {
200  $base = $_SESSION['carrello']['etc']['id_zona'][ $provincia['id'] ]['prezzo'];
201  } else { $base = 0; }
202  $_SESSION['carrello']['etc']['id_zona'][ $provincia['id'] ] = $provincia;
203  $_SESSION['carrello']['etc']['id_zona'][ $provincia['id'] ]['prezzo'] += $base;
204  $ct['etc']['id_provincia'][ $provincia['id'] ] = array( 'id' => $provincia['id'], '__label__' => $provincia['sigla'] );
205  }
206 
207  }
208 
209  }
210 
211 ?>
mysqlQuery( $c, $q, $p=false, &$e=array())
$cf['ricerca']['template']
Definition: _030.common.php:7
$_SESSION['carrello']['etc']['id_zona']
mysqlCachedQuery( $m, $c, $q, $p=false, $t=MEMCACHE_DEFAULT_TTL, &$e=array())
$ct['etc']['id_iva']