Jump to content

Changer les adresses de livraison et facturation impossible


micbus007

Recommended Posts

Bonjour

 

Je suis sous prestashop 1.6.1.1

 

Un nouveau client s'est enregistré et a y a introduit adresses de livraison et facturation, jusque la pas de probleme

 

Je me rends compte lors de la préparation de la commande qu'il s'est trompé dans l'orthographe de son adresse, je corrige dans la bo, tout se passe bien, mais au moment d'imprimer les documents je me rends compte que sur les documents l'adresse corrigée n'apparait pas, mais que c'est l'adresse erronée qui y est imprimé.

 

Je me connecte a phpmyadmin, je verifie les tables :

 

ps_address: modification correcte

 

ps_order_invoice: la je remarque que la modification n'est pas faites et que prestashop y récupere les données de facturation et livraison non modifiées, dans les sections: invoice_address et delivery_address

 

Ce qui pose des problemes pour l'envoi des comandes

 

Merci

Link to comment
Share on other sites

Il est un problème connu. Vous devez changer les valeurs de invoice_address et delivery_address manuellement dans la base de données.

 

It is a known problem. You have to change the invoice_address and delivery_address values manually in the database.

Link to comment
Share on other sites

Déjà le 1er réflexe de modifier l'adresse en bdd est une erreur, vous pouvez le faire depuis le BO Clients -> Adresses

 

Comme dit tuk66, une fois la commande validée, il n'y a plus le choix il faut éditer invoice_address et delivery_address.

Prestashop n'est pas responsable de l'erreur du client. Il faut bien comprendre qu'une commande est un événement figé à un instant t et normalement, non-modifiable.

Une commande est un contrat entre vous et le client, si vous la modifiez ensuite, c'est de votre responsabilité.

Link to comment
Share on other sites

Merci de vos réponses

 

En ce qui concerne la modification adresse client en BO Clients -> Adresses, je l'ai fait en premier lieu, mais sur les  documents a imprimer c'est l'adresse lors de la commande qui apparait , mais pas l'adresse modifiée, c'est pour cette raison que j'ai été voir dans la bdd

 

j'etais par avant avec la version 1.6.0.9, et je n'avais pas ce probleme

 

Je suis bien conscient qu'une commande est un contrat entre moi et le client, mais il devrait etre possible de modifer une adresse de livraison lorsque le client a fait une erreur

 

Ci-dessous une adresse de livraison qu'un client ma communiqué

 

4 Noue du temps des cerises
appt B52
94260 FRESNES

 

 

Je lui ai envoyé un mail, ce matin pour avoir confirmation.

Lorqu'il va me répondre je devrai pouvoir modifier l'adresse qui se trouve sur les documents, sinon la commande va me revenir

 

 

Bonne journée

Link to comment
Share on other sites

  • 4 weeks later...

Ah oui, maintenant et depuis la 1.6.1.1, vous pouvez toujours changer l'adresse de livraison dans la commande (ce qui sera fait avec succès) mais vu que, pour économiser des requêtes, ils concatènent l'adresse dans la table ps_order_invoice sous le champ invoice_address lors de la commande, ben votre modif ne sert à rien vu que l'adresse est déjà stockée...

 

Ils ont juste oublié de la mettre à jour en même temps lors de la modification^^

 

C'est le progrès !

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Bonsoir

 

si cela vous interesse j'ai ajouté ce script sur une simple page php a placer dans le repertoire www

<?php
require('config/settings.inc.php');
$link = mysqli_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_);
$sql = 'UPDATE '._DB_PREFIX_.'order_invoice SET invoice_address="", delivery_address=""';
$ssql = mysqli_query($link, $sql);

if (!$ssql){
    echo "pas ok";
} else {
    echo "ok";
}
mysqli_close($link);
?>

 

efface toute les adresses dans la table order_invoice sur les champs invoice_address et delivery_address

avec ceci les modifications d'adresse sont apportées automatiquement , sur les factures lorsque le client s'est trompé lors de la commande, et qu'il faut corriger

 

Bonne soirée

  • Like 1
Link to comment
Share on other sites

Quitte à le faire à la barbare, autant le faire propre, d'autant que votre script doit être appelé pour fonctionner.

 

Il suffit de remplacer les lignes 144 à 150 de OrderInvoice.php

		$invoice_address = new Address((int)$order->id_address_invoice);
        $invoiceAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_INVOICE_ADDR_RULES'), true);
        $this->invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '<br />', ' ');

		$delivery_address = new Address((int)$order->id_address_delivery);
        $deliveryAddressPatternRules = Tools::jsonDecode(Configuration::get('PS_INVCE_DELIVERY_ADDR_RULES'), true);
        $this->delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' ');

par


        $this->invoice_address = '';
        $this->delivery_address = '';

^_^

Link to comment
Share on other sites

J'ai bien remplacé les lignes 144 à 150 par 

$this->invoice_address = '';
$this->delivery_address = '';

Mais aucun changement ma facture se télécharge toujours avec l'ancienne adresse  ??

Tant que j'y suis sur la version 1.6.0.9 j'avais les numéros de téléphone sur les factures une idée pour les remettre sur 1.6.1.1

Merci d'avance ;)

Link to comment
Share on other sites

Cette modif est valable pour les nouvelles commandes, elle evite d'enregistrer les adresses formatées dans cette table. En fait il serait plus simple de ne pas aller chercher cette adresse formatée du tout en utilisant l'ancien système.

Allez donc dans classes/pdf/HTMLTemplateInvoice.php et remplacez ce bloc, vers la ligne 142

		if ($this->order_invoice->invoice_address)
			$formatted_invoice_address = $this->order_invoice->invoice_address;
		else
			$formatted_invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '<br />', ' ');

		$delivery_address = null;
		$formatted_delivery_address = '';
		if (isset($this->order->id_address_delivery) && $this->order->id_address_delivery)
		{
			if ($this->order_invoice->delivery_address)
				$formatted_delivery_address = $this->order_invoice->delivery_address;
			else
			{
				$delivery_address = new Address((int)$this->order->id_address_delivery);
				$formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' ');
			}
		}

par:

		$formatted_invoice_address = AddressFormat::generateAddress($invoice_address, $invoiceAddressPatternRules, '<br />', ' ');

		$delivery_address = null;
		$formatted_delivery_address = '';
		if ($this->order->id_address_delivery)
		{
			$delivery_address = new Address((int)$this->order->id_address_delivery);
				$formatted_delivery_address = AddressFormat::generateAddress($delivery_address, $deliveryAddressPatternRules, '<br />', ' ');
		}

Comme ça, même les modifs en page commande sur les anciennes commandes seront prises en compte :)

  • Like 2
Link to comment
Share on other sites

  • 4 months later...
  • 6 years later...
On 2/17/2016 at 5:59 PM, AlexanderOs said:

Bonjour sur la version 1.6.1.4 le problème est encore la réglé en 2 secondes grâce a Eolia.

 

D’après tes explications j'ai créer un override des deux classes concerné et cela fonctionne.

 

Un grand merci à toi  :)

 

C'est pour quand la version stable ?  :D

 

i am also facing this problem on PS 1.7.8.3, I did it this way but it doesn't work, anyone have any solution for me?

Link to comment
Share on other sites

il y a 46 minutes, viet2205hp a dit :

 

i am also facing this problem on PS 1.7.8.3, I did it this way but it doesn't work, anyone have any solution for me?

1- Merci de respecter la langue de la section où est posté le topic.

2- Merci de ne pas remonter des post qui sont ouverts depuis plusieurs années sans une correspondance parfaite de votre problème avec le sujet abordé, ce qui n'est pas votre cas ici donc, merci de respecter les règles de ce forum et d'ouvrir votre propre topic.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...