Aide - Recherche - Membres - Calendrier
Version complète : Déterminer le département en fonction du CP
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
cyrilt
Bonjour,

Voici mon soucis :

Lors de la création d'un compte, on peut saisir un code postal 75000 par exemple et un département 29.
Mon problème est que mon module de livraison se base sur le numéro du département pour effectuer ses tarifs.

Résultat : un client peut habiter Paris mais avoir des tarifs de colis du finistère.

Pour être plus clair : ma boutique est à Paris. La livraison d'un colis de 10Kg sur Paris est à 10€ et si je le livre dans le finistère, il est à 20€. Si j'ai un client du finistère qui, en saisisant ses coordonnées, met un code postal en 29000 mais un département en 75, le module de livraison calcul le tarif sur le département et non pas sur le code postal. Il reçevra son colis dans le 29 avec un tarif de colis du 75.

Ma question : peut on déterminer automatiquement le département en fonction du code postal saisi ?

Merci, rolleyes.gif

Cyril
MS2 Fr
buvezduvin
Bonsoir Cyril
As-tu trouvé une solution?
chti_poupon
Bonjour !
rolleyes.gif Attention aux communes de l'Enclave leur CP est en 62 et elles sont du Nord
Petite remarque locale. wink.gif
Chti poupon
buvezduvin
Merci chti_poupon,
Il faudrait un javascript pour préremplir le champ mais que le client pourrait éditer alors?
chti_poupon
Ma réponse te donne un lien qui met au jour l'existence du n°INSEE des communes, différent du code postal. C'est à partir du nom de la commune que l'on peut remonter à ce code INSEE et de là au code postal d'une part et au département (2 premiers caractères du code INSEE).
Un remplissage automatique instantané, donc précis, en javascript est donc envisageable, mais il faudra encore une case à cocher dérivant vers un remplissage manuel en cas de BP, Cedex et autres fantaisies militaires et postales.
Mais je pense plutôt qu'il faut reprendre le problème à la racine et au niveau de l'inscription mettre d'office le département correspondant au code postal en faisant l'impasse sur les quelques exceptions. (Les communes de l'enclave sont une enclave du Nord dans le PdC et donc probablement taxées 62 par ton transporteur).
Chti poupon
buvezduvin
Je 'tente' de faire un javascript pour préremplir le département (le but est que le client puisse éventuellement l'éditer par la suite):

Code
<script language="javascript"><!--              
              function updateCP() {
                document.forms["create_account"].state = substr($postcode, 0, 2);
//--></script>
              <tr>
                <td class="main"><?php echo ENTRY_POST_CODE; ?></td>
                <td class="main"><?php echo tep_draw_input_field('postcode', '*****' ,'onKeyUp="updateCP()"') . '&nbsp;' . (tep_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="inputRequirement">' . ENTRY_POST_CODE_TEXT . '</span>': ''); ?></td>
              </tr>
<script language="javascript"><!--
updateCP();
//--></script>

Mais pas de mise à jour... quelqu'un pourrait m'aider?
chti_poupon
Bonjour
js, c'est pas trop mon truc, mais la fonction ouverte par une accolade { n'est pas fermée par une accolade inverse } !
Chti poupon
buvezduvin
Trouvé !
Merci chti_poupon pour le }
En fait je me suis servi du debug mode de firefox et le code fonctionne sous ie et firefox, le dubug me met toujours une erreure:
document.forms.create_account.state is undefined
mais ça marche, si un boss JS a une idée..


Code
<script language="javascript"><!--              
              function updateCP() {
              var pc = document.forms["create_account"].postcode.value;
              
                document.forms["create_account"].state.value = pc.substr(0,2);}
//--></script>
              <tr>
                <td class="main"><?php echo ENTRY_POST_CODE; ?></td>
                <td class="main"><?php echo tep_draw_input_field('postcode', '*****' ,'onKeyUp="updateCP()"') . '&nbsp;' . (tep_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="inputRequirement">' . ENTRY_POST_CODE_TEXT . '</span>': ''); ?></td>
              </tr>
<script language="javascript"><!--
updateCP();
//--></script>
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.