Les meilleurs développeurs e-commerce freelances sont sur Codeur.com
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
6 freelances ont répondu à ce projet
5 propositions de devis en moins de 2h
Projet réalisé par CAD
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.