Les meilleurs développeurs e-commerce freelances sont sur Codeur.com

Prestashop Formule SQL pour joindre les emails

 Terminé·Moins de 500 €·6 offres·1025 vues·10 interactions


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 €

Publication : 31 octobre 2018 à 22h11

Profils recherchés : Développeur e-commerce freelance, Développeur Prestashop freelance, Développeur PHP freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

6 freelances ont répondu à ce projet

5 propositions de devis en moins de 2h

Publier un projet similaire

Projet réalisé par CAD

CAD
Saint yrieix sur charente, 16710

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

Votre navigateur Web n’est plus à jour. Il ne permet pas d’afficher correctement le site Codeur.com.
Nous vous invitons à mettre à jour votre navigateur ou à utiliser un autre navigateur plus récent.