Jump to content

SAV et discussion Client : Ajouter une pièce jointe à une réponse


Recommended Posts

Bonjour,

 

Lorsque je réponds à un message client via le Back Office de ma boutique (Clients > SAV), existe t-il une solution pour pouvoir joindre un fichier à ma réponse pour mon client (ex: une doc pdf) ? 
J'ai cherché parmi les modules disponibles mais je n'ai rien trouvé qui s'en approche y compris dans  les modules payants.

Merci d'avance

 

PS : je suis sous prestashop 1.6

  • Like 1
Link to comment
Share on other sites

Bonjour,

 

Merci pour votre réponse. Après une recherche approfondie je pense également qu'aucun module n'existe à cet effet.

Cela doit néanmoins être faisable en modifiant le controller AdminCustomerThreads, par exemple avec un SendMail() amélioré et en gérant l'upload des pièces jointes dans un sous dossier à part....même si cela reste largement au dessus de mes compétences :-)

 

Cordialement

Link to comment
Share on other sites

  • 2 months later...

La fonction semble avoir disparue sur la 1.6.xxx car elle existait sut la 1.5. Lorsqu'on répondait à un message, il y a avait juste en dessous la possibilité de joindre un fichier...

 

A moins que ce ne soit un problème de configuration mais où ? comment activer l'envoi de pièces jointe à une réponse dans dans le SAV ?

Link to comment
Share on other sites

  • 10 months later...
  • 2 months later...
  • 1 month later...

Bonjour, 

 

J'ai été confronté au même problème, et ai constaté que le code pour envoyer une pièce jointe était toujours présent dans le controller, mais le champ d'upload du fichier n'était plus dans le thème de l'admin. Voici le correctif que j'ai utilisé : 

 

Dans le dossier Prestashop de votre boutique, ouvrez le fichier suivant avec un éditeur de texte : 

adminxxx (votre dossier admin) > themes > default > templates > controllers > customer_threads > helpers > view > view.tpl

 

Ligne 101, vous devriez trouver ça 

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea>
			</div>
		</div>
	</div>

Il vous suffit d'ajouter cette ligne sous le <textarea>

<input class="form-control" type="file" name="joinFile"/>

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea><br>
				<input class="form-control" type="file" name="joinFile"/>
			</div>
		</div>
	</div>

Et de remettre ce fichier sur le serveur ou est hébergé votre boutique. 

 

Testé, et les pièces jointes sont bien prises en compte

  • Like 5
Link to comment
Share on other sites

  • 3 months later...

Bonjour, 

 

J'ai été confronté au même problème, et ai constaté que le code pour envoyer une pièce jointe était toujours présent dans le controller, mais le champ d'upload du fichier n'était plus dans le thème de l'admin. Voici le correctif que j'ai utilisé : 

 

Dans le dossier Prestashop de votre boutique, ouvrez le fichier suivant avec un éditeur de texte : 

adminxxx (votre dossier admin) > themes > default > templates > controllers > customer_threads > helpers > view > view.tpl

 

Ligne 101, vous devriez trouver ça 

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea>
			</div>
		</div>
	</div>

Il vous suffit d'ajouter cette ligne sous le <textarea>

<input class="form-control" type="file" name="joinFile"/>

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea><br>
				<input class="form-control" type="file" name="joinFile"/>
			</div>
		</div>
	</div>

Et de remettre ce fichier sur le serveur ou est hébergé votre boutique. 

 

Testé, et les pièces jointes sont bien prises en compte

 

 

Thanks its working on 1.6.0.9

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...

Merci, je viens de faire la modif et ça fonctionne parfaitement dans le SAV.

Pourrait-on aussi avoir cette fonction directement dans le détail de la commande ?

J'ai essayé en ajoutant le bout de code dans le fichier \themes\default\template\controllers\orders\helpers\view\view.tpl

ça affiche le champ pour sélectionner un fichier mais la fonction pour l'envoyer n'est pas dans le code à priori.

post-372287-0-40250200-1474443648_thumb.jpg

Link to comment
Share on other sites

  • 2 weeks later...
  • 5 months later...

Bonjour,

La modif de "Licorn", fonctionne bien (ajoute le bouton "parcourir") pour ajouter une PJ à une réponse du SAV ; et le client reçoit la PJ par mail.

En revanche dans l'historique du SAV on ne voit nulle part la pièce jointe qui a été envoyée...

 

Une idée ?

 

Merci d'avance.

 

Walter

Link to comment
Share on other sites

  • 1 month later...

Merci, fonctionne bien, cependant aucun historique de la pj comme la dit walter

 

Bonjour,

La modif de "Licorn", fonctionne bien (ajoute le bouton "parcourir") pour ajouter une PJ à une réponse du SAV ; et le client reçoit la PJ par mail.

En revanche dans l'historique du SAV on ne voit nulle part la pièce jointe qui a été envoyée...

 

Une idée ?

 

Merci d'avance.

 

Walter

Link to comment
Share on other sites

  • 2 months later...

Merci, je viens de faire la modif et ça fonctionne parfaitement dans le SAV.

Pourrait-on aussi avoir cette fonction directement dans le détail de la commande ?

J'ai essayé en ajoutant le bout de code dans le fichier \themes\default\template\controllers\orders\helpers\view\view.tpl

ça affiche le champ pour sélectionner un fichier mais la fonction pour l'envoyer n'est pas dans le code à priori.

 

Bonjour, 

Auriez-vous trouvé une solution entre-temps ?

Merci

 

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

je remonte ce post pour y apporter ma contribution dans la mesure où il m'a mise sur la piste pour la même problématique.

Effectivement le contrôleur AdminCustomerThreadsController prévoit d'envoyer la pièce jointe au client mais pas du tout de l'enregistrer. Pour cela, il faut s'inspirer du ContactController et surcharger AdminCustomerThreadsController. Malheureusement on ne peut pas le faire proprement à cause de la présence d'un Tools::redirectAdmin, on est donc obligé de reprendre toute la partie de la fonction postProcess qui traite l'envoi de la réponse. Le fichier joint est fonctionnel sur une 1.6.1.14 et est à placer dans le dossier override/controllers/admin sans oublier de supprimer le fichier cache/class_index.php ensuite. Il y aurait sans doute des approches plus pertinentes (en surchargeant la classe CustomerMessage peut-être) mais ça a le mérite de fonctionner dans mon cas.

Bien à vous !

AdminCustomerThreadsController.php

Link to comment
Share on other sites

  • 1 year later...
On 9/21/2016 at 9:41 AM, kouik-e said:

Merci, je viens de faire la modif et ça fonctionne parfaitement dans le SAV.

Pourrait-on aussi avoir cette fonction directement dans le détail de la commande ?

J'ai essayé en ajoutant le bout de code dans le fichier \themes\default\template\controllers\orders\helpers\view\view.tpl

ça affiche le champ pour sélectionner un fichier mais la fonction pour l'envoyer n'est pas dans le code à priori.

post-372287-0-40250200-1474443648_thumb.jpg

Bonjour,

J'ai essayé la même modification que toi, le champs s'affiche bien, mais la pièce jointe ne s'envoie pas. As-tu trouvé la solution ?

D'avance merci à toi.

Link to comment
Share on other sites

  • 5 months later...
  • 2 months later...

Bonjour tout le monde,

Amorino, as-tu trouvé une solution depuis pour que les PJ envoyées aux clients depuis le SAV soient tracées?
Je suis sur une 1.6.1.16, j'ai vu que toi tu étais sur de la 1.7...

Bonne journée !

Link to comment
Share on other sites

  • 1 month later...
  • 1 year later...
  • 2 months later...
  • 6 months later...

Bonjour,

Pour ajouter un champs d'upload de fichier au formulaire de réponse SAV dans Prestashop 1.7 :

Copier le fichier admin_dir/themes/default/template/controllers/customer_threads/helpers/view/view.tpl vers override/controllers/admin/templates/customer_threads/helpers/view

ajouter cette ligne à la ligne 28 :

{assign var='path' value="../../../../../../..{$img_base_path}themes/default/template/controllers/customer_threads/helpers/view"}

ajouter les lignes suivantes ligne 108 (pour Prestashop 1.7.8.3):

				<div style="margin-top: 5px;">
					<label for="joinFile">Joindre un fichier : </label>
					<input class="form-control" type="file" name="joinFile" id="joinFile" />
				</div>

modifier tous les {include file="./xxxxxxxxxxxxxxxxxxx.tpl" } en conservant à chaque fois le bon nom du tpl par

{include file="{$path}/xxxxxxxxxxxxxxxxxxx.tpl" }

Créer un override de la fonction postProcess() présente dans controllers/admin/AdminCustomerThreadsController.php, dans la fonction postProcess() ajouter les lignes suivantes :

                        $file_attachment = Tools::fileAttachment('joinFile');
                        $testFileUpload = (isset($file_attachment['rename']) && !empty($file_attachment['rename']));
                        if ($testFileUpload && rename($file_attachment['tmp_name'], _PS_UPLOAD_DIR_ . basename($file_attachment['rename']))) {
                            $cm->file_name = $file_attachment['rename'];
                            @chmod(_PS_UPLOAD_DIR_ . basename($file_attachment['rename']), 0664);
                            $cm->update();
                        }

juste après les lignes suivantes :

                    if (!empty($_FILES['joinFile']['name'])) {
                        $file_attachment['content'] = file_get_contents($_FILES['joinFile']['tmp_name']);
                        $file_attachment['name'] = $_FILES['joinFile']['name'];
                        $file_attachment['mime'] = $_FILES['joinFile']['type'];

🙏

Edited by remyyyyy
Clean override admin template.. (see edit history)
  • Like 3
Link to comment
Share on other sites

  • 8 months later...
On 3/21/2016 at 7:35 PM, dmouradov said:

 

 

Thanks its working on 1.6.0.9

 

On 12/9/2015 at 11:37 AM, Licorn said:

Bonjour, 

 

J'ai été confronté au même problème, et ai constaté que le code pour envoyer une pièce jointe était toujours présent dans le controller, mais le champ d'upload du fichier n'était plus dans le thème de l'admin. Voici le correctif que j'ai utilisé : 

 

Dans le dossier Prestashop de votre boutique, ouvrez le fichier suivant avec un éditeur de texte : 

adminxxx (votre dossier admin) > themes > default > templates > controllers > customer_threads > helpers > view > view.tpl

 

Ligne 101, vous devriez trouver ça 

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea>
			</div>
		</div>
	</div>

Il vous suffit d'ajouter cette ligne sous le <textarea>

<input class="form-control" type="file" name="joinFile"/>

<h3>{l s="Your answer to"} {if isset($customer->firstname)}{$customer->firstname|escape:'html':'UTF-8'} {$customer->lastname|escape:'html':'UTF-8'} {else} {$thread->email}{/if}</h3>
	<div class="row">
		<div class="media">
			<div class="pull-left">
				<span class="avatar-md">{if isset($current_employee->firstname)}<img src="{$current_employee->getImage()}" alt="">{/if}</span>
			</div>
			<div class="media-body">
				<textarea cols="30" rows="7" name="reply_message">{$PS_CUSTOMER_SERVICE_SIGNATURE|escape:'html':'UTF-8'}</textarea><br>
				<input class="form-control" type="file" name="joinFile"/>
			</div>
		</div>
	</div>

Et de remettre ce fichier sur le serveur ou est hébergé votre boutique. 

 

Testé, et les pièces jointes sont bien prises en compte

merci ça marche pour moi

pas grave si le fichier n'apparait pas dans l'historique

Link to comment
Share on other sites

  • 4 months later...

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...