Arnaud06 Posted October 15, 2009 Share Posted October 15, 2009 Bonjour,J'ai la sensation qu'il y a un problème dans les stats "meilleurs produits/catégories"1/ les ventes annulées ne semble pas être déduite des stats2/ le ca est calculé sans le prix de vente après déduction de la promotionanecdotique vous me direz, mais bon moi j'ai 90% de mon catalogue en prix réduit, donc c'est tout faux... :-(Pouvez vous me confirmer ? je en sais pas où sont les formules qui font marcher la bêtes...Merci,Arnaud Link to comment Share on other sites More sharing options...
Arnaud06 Posted October 19, 2009 Author Share Posted October 19, 2009 Bonjour,Avez-vous le même problème que moi sur les stats ?L'équipe Presta peut-elle communiquer sur la "formule" de calcul employée ? je ne sais pas si c'est aussi simple que sur excel, mais il semble qu'il y ait une erreur, ou plutôt l'absence de prise en compte de particularité (commande annulée, promotion)(non ce n'est pas dans le bug tracker)Merci pour votre aide,Arnaud Link to comment Share on other sites More sharing options...
Comptoirs-fermiers Posted November 24, 2009 Share Posted November 24, 2009 Bonjour,pour ceux qui souhaitent avoir les stats de produits vendus y compris les produits mis en inactifs, voici les modifs à effectuer sur le fichier /modules/statsbestproducts/statsbestproducts.php public function getTotalCount($dateBetween) { $result = Db::getInstance()->GetRow(' SELECT COUNT(DISTINCT p.`id_product`) totalCount FROM `'._DB_PREFIX_.'product` p LEFT JOIN '._DB_PREFIX_.'order_detail od ON od.product_id = p.id_product LEFT JOIN '._DB_PREFIX_.'orders o ON od.id_order = o.id_order/* WHERE p.active = 1 AND o.valid = 1 */ WHERE o.valid = 1 AND o.invoice_date BETWEEN '.$dateBetween); return $result['totalCount']; } public function getData() { $dateBetween = $this->getDate(); $arrayDateBetween = explode(' AND ', $dateBetween); $this->_totalCount = $this->getTotalCount($dateBetween); $this->_query = ' SELECT p.reference, p.id_product, pl.name, ROUND(AVG(od.product_price / c.conversion_rate), 2) as avgPriceSold, (p.quantity + IFNULL((SELECT SUM(pa.quantity) FROM '._DB_PREFIX_.'product_attribute pa WHERE pa.id_product = p.id_product GROUP BY pa.id_product), 0)) as quantity, IFNULL(SUM(od.product_quantity), 0) AS totalQuantitySold, ROUND(IFNULL(IFNULL(SUM(od.product_quantity), 0) / (1 + LEAST(TO_DAYS('.$arrayDateBetween[1].'), TO_DAYS(NOW())) - GREATEST(TO_DAYS('.$arrayDateBetween[0].'), TO_DAYS(p.date_add))), 0), 2) as averageQuantitySold, ROUND(IFNULL(SUM((od.product_price * od.product_quantity) / c.conversion_rate), 0), 2) AS totalPriceSold, ( SELECT IFNULL(SUM(pv.counter), 0) FROM '._DB_PREFIX_.'page pa LEFT JOIN '._DB_PREFIX_.'page_viewed pv ON pa.id_page = pv.id_page LEFT JOIN '._DB_PREFIX_.'date_range dr ON pv.id_date_range = dr.id_date_range WHERE pa.id_object = p.id_product AND pa.id_page_type = 1 AND dr.time_start BETWEEN '.$dateBetween.' AND dr.time_end BETWEEN '.$dateBetween.' ) AS totalPageViewed FROM '._DB_PREFIX_.'product p LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.intval($this->getLang()).') LEFT JOIN '._DB_PREFIX_.'order_detail od ON od.product_id = p.id_product LEFT JOIN '._DB_PREFIX_.'orders o ON od.id_order = o.id_order LEFT JOIN '._DB_PREFIX_.'currency c ON o.id_currency = c.id_currency/* WHERE p.active = 1 AND o.valid = 1 */ WHERE o.valid = 1 AND o.invoice_date BETWEEN '.$dateBetween.' GROUP BY od.product_id'; Link to comment Share on other sites More sharing options...
Arnaud06 Posted November 24, 2009 Author Share Posted November 24, 2009 Top,Peux-tu mettre en gras les modifations ?Merci bcp !Arnaud Link to comment Share on other sites More sharing options...
Comptoirs-fermiers Posted November 28, 2009 Share Posted November 28, 2009 Il y a juste à enlever : p.active = 1 dans les 2 requètes SQL Link to comment Share on other sites More sharing options...
Arnaud06 Posted December 1, 2009 Author Share Posted December 1, 2009 Bonjour,Merci poru ton retour, mais je ne suis pas certain que cela réponde à la question, mais si les modifications sont certainement à faire dans ce fichier... mon problème est :1/ les commandes annulées ne semble pas être déduites des stats2/ le CA est calculé avec le prix de vente avant réduction..=> anecdotique vous me direz, mais bon moi j’ai 90% de mon catalogue en prix réduit avec réduction, donc c’est tout faux… :-(Merci,AP Link to comment Share on other sites More sharing options...
Comptoirs-fermiers Posted December 1, 2009 Share Posted December 1, 2009 Bonjour,Concernant les commandes annulées, normalement elles ne sont pas prises en compte dans les stats. On a bien dans la requête : o.valid = 1 qui signifie que les commandes sont valides.Pour le CA, celui affiché est issu de ce qui est enregistré dans la commande, donc cela devrait normalement correspondre au prix y compris les remises éventuelles. Link to comment Share on other sites More sharing options...
Arnaud06 Posted December 1, 2009 Author Share Posted December 1, 2009 Bah dans les 2 cas, je ne pense pas, en tt cas, moi ce n'est pas ce que j'ai... peut être qqn de Prestashop pourrait nous éclairer...Merciii Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now