Bonjour,

J'utilise un module sur Prestashop v1.5.3.1 qui permet d'extraire les commandes dans un fichier CSV. Le module permet d'extraire pleins de détails de la commande (exemple: références, quantité etc.) mais ne permet pas de joindre les émails des clients qui sont eux stockées dans la table 'gf_customer_message.message'
Voici un aperçu de la requête SQL utilisée pour extraire les commentaires des commandes, qui sont stockés dans la table : 'gf_message.message'

fichier gen_csv.php ligne 216 :

left join '._DB_PREFIX_.'message on ('._DB_PREFIX_.'orders.id_customer='._DB_PREFIX_.'message.id_customer)

Étant donné que dans les tables 'gf_message' et 'gf_orders' il y figure le numéro ID du client "id_customer" la requête SQL fonctionne mais le problème avec la table dont je souhaiterais également extraire les émails (gf_customer_message.message) il n'y a pas la colonne 'id_order' et par conséquent utiliser la requête SQL ci-dessous ne fonctionne pas:

left join '._DB_PREFIX_.'customer_message on ('._DB_PREFIX_.'orders.id_customer='._DB_PREFIX_.'customer_message.id_customer)

Je ne sais pas si cela pourrait aider mais j'ai trouver 2 différentes requêtes que d'autres modules utilise pour extraire les emails de la table 'gf_customer_message.message' sans passer par le 'id_order' et il pourrait donc suffire de les modifier pour l'adapter a la demande souhaitée:

1er script:
foreach ($orderList as $line) {
$message = DB::getInstance()->getValue("SELECT message
FROM " . pSQL(_DB_PREFIX_) . "customer_message cm
LEFT JOIN " . pSQL(_DB_PREFIX_) . "customer_thread ct ON (cm.id_customer_thread=ct.id_customer_thread)
WHERE ct.id_order = " . (int)$line['id_order'] . "
AND cm.id_customer_message =
(
SELECT max(id_customer_message) FROM " . pSQL(_DB_PREFIX_) . "customer_message cm
WHERE ct.id_order = " . (int)$line['id_order'] . "
)"
);
$tab = array( CHR(13) => " ", CHR(10) => " ");
$messageModified = strtr($message, $tab);
$messageReduced = '';

if ($messageModified != '') {
$messageReduced = Tools::substr($messageModified, 0, 50) . ' [...]';
}

et deuxième requête trouvé:
public static function getMessagesByOrderId($id_order, $private = false, Context $context = null)
{
if (!Validate::isBool($private))
die(Tools::displayError());
if (!$context)
$context = Context::getContext();
$m = Db::getInstance()->executeS('
SELECT m.*, c.`firstname` AS cfirstname, c.`lastname` AS clastname, e.`firstname` AS efirstname, e.`lastname` AS elastname,
(COUNT(mr.id_message) = 0 AND m.id_customer != 0) AS is_new_for_me
FROM `'._DB_PREFIX_.'message` m
LEFT JOIN `'._DB_PREFIX_.'customer` c ON m.`id_customer` = c.`id_customer`
LEFT JOIN `'._DB_PREFIX_.'message_readed` mr
ON mr.`id_message` = m.`id_message`
AND mr.`id_employee` = '.(isset($context->employee) ? (int)$context->employee->id : '\'\'').'
LEFT OUTER JOIN `'._DB_PREFIX_.'employee` e ON e.`id_employee` = m.`id_employee`
WHERE m.`id_order` = '.(int)$id_order.'
'.(!$private ? ' AND m.`private` = 0' : '').'
GROUP BY m.id_message
ORDER BY m.date_add desc
');

$o = Db::getInstance()->executeS('
SELECT ct.*, m.*, c.`firstname` AS cfirstname, c.`lastname` AS clastname, e.`firstname` AS efirstname, e.`lastname` AS elastname
FROM `'._DB_PREFIX_.'customer_thread` ct
LEFT JOIN `'._DB_PREFIX_.'customer_message` m ON m.`id_customer_thread` = ct.`id_customer_thread`
LEFT JOIN `'._DB_PREFIX_.'customer` c ON ct.`id_customer` = c.`id_customer`
LEFT OUTER JOIN `'._DB_PREFIX_.'employee` e ON e.`id_employee` = m.`id_employee`
WHERE ct.`id_order` = '.(int)$id_order.'
ORDER BY m.date_add desc
');

function tri($a, $b){
$ad = strtotime($a['date_add']);
$bd = strtotime($b['date_add']);
return ($bd-$ad);
}

$arr = array_merge($o,$m);
usort($arr, 'tri');
return $arr;
}

Si je n'ai pas été claire ou qu'il manque des informations n’hésitez pas à m'en faire part,

Cordialement,

Cyril

Budget indicatif Moins de 500 €
Publié le 31 octobre 2018 à 23h11
Début du projet Tout de suite

Vous avez aussi besoin d'un expert ?

Déposez une annonce en décrivant votre projet et recevez gratuitement des devis en quelques minutes

Déposer une annonce gratuite

Offres pour ce projet :

Offre déposée le 31/10/2018 à 23h17
Offre déposée le 31/10/2018 à 23h27
Offre déposée le 01/11/2018 à 01h12
Offre déposée le 31/10/2018 à 23h17
Offre déposée le 01/11/2018 à 09h39
Offre déposée le 31/10/2018 à 23h17
Offre déposée le 31/10/2018 à 23h17
Offre déposée le 01/11/2018 à 10h12
1 jour Montant privé
Offre déposée le 01/11/2018 à 11h18
1 jour Montant privé
Déposez un projet similaire
Publication 100% gratuite
Recevez 10 devis en moyenne
Pas de commission à payer

Vous êtes prestataire et vous cherchez des missions ?

Remplissez rapidement votre carnet de commandes en utilisant Codeur.com pour contacter des nouveaux clients.

Créer un compte gratuitement

Gérer mon projet

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients

En utilisant ce site, vous acceptez l'utilisation de cookies. permettant de vous proposer des contenus et des services adaptés à vos centres d'intérêts.

Vous utilisez actuellement Internet Explorer. Pour profiter pleinement de Codeur.com, veuillez utiliser un des navigateurs suivant :