Browse Source

Quand aucune livraison necessaire, le formulaire adresser_commande permet de fixer l'adresse de facturation

v2
Cerdic 7 years ago
parent
commit
eca35edd67
  1. 112
      formulaires/adresser_commande.html
  2. 4
      formulaires/adresser_commande.php
  3. 25
      inc/livraison.php
  4. 5
      livraison_fonctions.php
  5. 2
      paquet.xml

112
formulaires/adresser_commande.html

@ -38,9 +38,13 @@
<div class="row-fluid">
<div class="span6">
]
[(#ENV{_livraison_necessaire}|oui)
<h3><span><:livraison:titre_votre_adresse_livraison:></span>
[(#FACTURATION_NOM|non)<br /><small><i><:livraison:info_facturation_meme_adresse:></i></small>]
</h3>
</h3>
][(#ENV{_livraison_necessaire}|non)
<h3><span><:livraison:titre_votre_adresse_facturation:></span></h3>
]
[(#FACTURATION_NOM|non)
<button class="btn btn-small modifier right"
name="modif" value="modif"><i class="icon-pencil"></i> <:livraison:bouton_modifier_adresse:></button>
@ -53,7 +57,7 @@
<BOUCLE_pays_code(PAYS){code=#LIVRAISON_ADRESSE_PAYS}>#NOM<br /></BOUCLE_pays_code>
[<br /><i>Tel&nbsp;:</i> (#LIVRAISON_TELEPHONE)<br />]
</p>
<BOUCLE_si(CONDITION){si #FACTURATION_NOM}>
<BOUCLE_si(CONDITION){si #FACTURATION_NOM|et{#ENV{_livraison_necessaire}|oui}}>
</div>
<div class="span6">
<h3><span><:livraison:titre_votre_adresse_facturation:></span></h3>
@ -72,10 +76,15 @@
</BOUCLE_si>
</div>
<div class="profil_modif[(#GET{modif}|non)hide]">
[(#ENV{_livraison_necessaire}|oui)
<h3><span><:livraison:titre_votre_adresse_livraison:></span></h3>
][(#ENV{_livraison_necessaire}|non)
<h3><span><:livraison:titre_votre_adresse_facturation:></span></h3>
]
<p class="small"><:livraison:explication_privacy_info_perso:></p>
<ul class="editer-groupe">
<INCLURE{fond=formulaires/inc-editer-adresse-livraison,env,prefixe='livraison_'} />
[(#ENV{_livraison_necessaire}|oui)
#SET{name,facturation_identique_livraison}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
@ -96,70 +105,83 @@
</ul>
</fieldset>
</li>
]
</ul>
[(#ENV{_livraison_necessaire}|non)
<input type="hidden" name="facturation_identique_livraison" value="oui" />
]
<p class="boutons"><input type='submit' class='submit' name="save" value='<:bouton_enregistrer:>' /></p>
</div>
<B_modechoisi>
<BOUCLE_modechoisi(COMMANDES_DETAILS){id_commande=#ENV{_id_commande}}{objet=livraisonmode}{si #GET{modif}|non}{0,1}>
<div class="liste long">
<h3><span><:livraison:titre_votre_mode_de_livraison:></span></h3>
<ul class="liste-items info">
<BOUCLE_mode(LIVRAISONMODES){id_livraisonmode=#ID_OBJET}>
<li class="item">
<div class="entry">
[(#ENV{_id_livraisonmode}|count|>{1}|oui)
<div class="postmeta p pull-right">
<button type="submit" class="btn btn-small" name="resetlivraison" value=" ">
<i class="icon-remove"></i> Choisir un autre mode
</button>
</div>]
<strong class="entry-title">[(#LOGO_LIVRAISONMODE|image_reduire{-1}) ]<:livraison:info_livraison_par{mode=#TITRE}:></strong>
<div class="entry-content"><p>[(#ENV{_id_livraisonmode}|table_valeur{#ID_LIVRAISONMODE}|affiche_monnaie)]</p></div>
</div>
</li>
</BOUCLE_mode>
</ul>
</div>
<BOUCLE_sanslivraison(CONDITION){si #GET{modif}|non}{si #ENV{_livraison_necessaire}|non}>
<div class="boutons">
<a class="btn btn-primary btn-large pull-right"
href="#ENV{_url_suite}">
[(#ENV{_titre_suite,<:livraison:bouton_suite:>})] <i class="icon-chevron-right icon-white"></i>
</a>
</div>
</BOUCLE_sanslivraison>
</BOUCLE_modechoisi>
</B_modechoisi>
<B_choixmodes>
<B_modechoisi>
<BOUCLE_modechoisi(COMMANDES_DETAILS){id_commande=#ENV{_id_commande}}{objet=livraisonmode}{si #GET{modif}|non}{0,1}>
<div class="liste long">
<h3><span><:livraison:titre_votre_mode_de_livraison:></span></h3>
<ul class="liste-items">
<BOUCLE_choixmodes(LIVRAISONMODES){id_livraisonmode IN #ENV{_id_livraisonmode}|array_keys}{par num titre,titre}{si #GET{modif}|non}>
<ul class="liste-items info">
<BOUCLE_mode(LIVRAISONMODES){id_livraisonmode=#ID_OBJET}>
<li class="item">
<div class="entry">
<strong class="entry-title">[(#LOGO_LIVRAISONMODE|image_reduire{-1}) ][(#TITRE)]</strong>
[<div class="entry-content">(#DESCRIPTIF)</div>]
<div class="postmeta p">
<button type="submit" class="btn btn-primary" name="choixmode[#ID_LIVRAISONMODE]" value="#ID_LIVRAISONMODE">
#SET{prix,#ENV{_id_livraisonmode}|table_valeur{#ID_LIVRAISONMODE}|affiche_monnaie}
<:livraison:bouton_choix_mode{mode=#TITRE,prix=#GET{prix}}:>
[(#ENV{_id_livraisonmode}|count|>{1}|oui)
<div class="postmeta p pull-right">
<button type="submit" class="btn btn-small" name="resetlivraison" value=" ">
<i class="icon-remove"></i> Choisir un autre mode
</button>
</div>
</div>]
<strong class="entry-title">[(#LOGO_LIVRAISONMODE|image_reduire{-1}) ]<:livraison:info_livraison_par{mode=#TITRE}:></strong>
<div class="entry-content"><p>[(#ENV{_id_livraisonmode}|table_valeur{#ID_LIVRAISONMODE}|affiche_monnaie)]</p></div>
</div>
</li>
</BOUCLE_choixmodes>
</BOUCLE_mode>
</ul>
</div>
</B_choixmodes>
[(#GET{modif}|non)
<p class="error">
<:livraison:erreur_adresse_non_livrable:>
</p>
]
<//B_choixmodes>
<//B_modechoisi>
<div class="boutons">
<a class="btn btn-primary btn-large pull-right"
href="#ENV{_url_suite}">
[(#ENV{_titre_suite,<:livraison:bouton_suite:>})] <i class="icon-chevron-right icon-white"></i>
</a>
</div>
</BOUCLE_modechoisi>
</B_modechoisi>
<B_choixmodes>
<div class="liste long">
<h3><span><:livraison:titre_votre_mode_de_livraison:></span></h3>
<ul class="liste-items">
<BOUCLE_choixmodes(LIVRAISONMODES){id_livraisonmode IN #ENV{_id_livraisonmode}|array_keys}{par num titre,titre}{si #GET{modif}|non}>
<li class="item">
<div class="entry">
<strong class="entry-title">[(#LOGO_LIVRAISONMODE|image_reduire{-1}) ][(#TITRE)]</strong>
[<div class="entry-content">(#DESCRIPTIF)</div>]
<div class="postmeta p">
<button type="submit" class="btn btn-primary" name="choixmode[#ID_LIVRAISONMODE]" value="#ID_LIVRAISONMODE">
#SET{prix,#ENV{_id_livraisonmode}|table_valeur{#ID_LIVRAISONMODE}|affiche_monnaie}
<:livraison:bouton_choix_mode{mode=#TITRE,prix=#GET{prix}}:>
</button>
</div>
</div>
</li>
</BOUCLE_choixmodes>
</ul>
</div>
</B_choixmodes>
[(#GET{modif}|non)
<p class="error">
<:livraison:erreur_adresse_non_livrable:>
</p>
]
<//B_choixmodes>
<//B_modechoisi>
<//B_sanslivraison>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
</div></form>

4
formulaires/adresser_commande.php

@ -97,8 +97,10 @@ function formulaires_adresser_commande_charger_dist($id_commande, $url_suite='',
$valeurs['_url_suite'] = $url_suite;
$valeurs['_titre_suite'] = $titre_suite;
$valeurs['_id_livraisonmode'] = array();
include_spip('inc/livraison');
$valeurs['_livraison_necessaire'] = (commande_livraison_necessaire($id_commande)?' ':'');
if (!$valeurs['modif']) {
if (!$valeurs['modif'] AND $valeurs['_livraison_necessaire']) {
// trouver les modes de livraison dispo et leurs prix, en fonction de l'adresse
include_spip('inc/livraison');
$ids = sql_allfetsel("id_livraisonmode","spip_livraisonmodes","statut=".sql_quote('publie'));

25
inc/livraison.php

@ -178,6 +178,31 @@ function reset_livraison_commande($id_commande){
sql_delete("spip_commandes_details",$where);
}
/**
* Verifier si une commande necessite une livraison ou pas
* @param $id_commande
* @return bool
*/
function commande_livraison_necessaire($id_commande){
static $livrable = array();
if (isset($livrable[$id_commande])){
return $livrable[$id_commande];
}
$items = sql_allfetsel("*","spip_commandes_details","id_commande=".intval($id_commande));
$livrable[$id_commande] = false;
foreach($items as $item){
$table = table_objet_sql($item['objet']);
$primary = id_table_objet($item['objet']);
$objet = sql_fetsel("*",$table,"$primary=".intval($item['id_objet']));
if (!isset($objet['immateriel']) OR !$objet['immateriel']){
$livrable[$id_commande] = true;
break;
}
}
return $livrable[$id_commande];
}
/**
* Ajouter/mettre a jout le mode et le cout de livraison de la commande
* @param int $id_commande

5
livraison_fonctions.php

@ -11,5 +11,8 @@
if (!defined('_ECRIRE_INC_VERSION')) return;
function filtre_commande_livraison_necessaire_dist($id_commande){
include_spip('inc/livraison');
return (commande_livraison_necessaire($id_commande)?' ':'');
}
?>

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="livraison"
categorie="divers"
version="2.1.1"
version="2.2.0"
etat="test"
compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/livraison-32.png"

Loading…
Cancel
Save