Jump to content

Tableau de Bord Back Office Prestashop 1.4


mat250

Recommended Posts

Bonjour à tous,

Tout d'abord, bravo à toute la PrestaTeam pour cette nouvelle version de Prestation qui est vraiment excellente !

Une question concernant le tableau de bord de l'admin : est-il possible de configurer un affichage à la journée et non au mois ou à la semaine tel que c'est actuellement le cas ?

Dans l'ancienne version, le fait de pouvoir sélectionner une durée et d'avoir le CA en question directement sur la page d'accueil était fort pratique. Est-ce que le passage à la nouvelle version l'a totalement perdu ?

Merci de vos réponses et encore bravo à toute l'équipe de Prestashop !

Mat.

Link to comment
Share on other sites

Finalement, j'ai modifié moi même le code pour avoir les stats du jour.

Voila le code pour ceux qui souhaiterais avoir le stats du jour sur votre page d'accueil de votre back office :

Modifier le fichier admin/tabs/AdminHome.php (autour de la ligne 220) :

$resultDay = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT SUM(o.`total_paid_real` / o.conversion_rate) as total_sales, COUNT(*) as total_orders
           FROM `'._DB_PREFIX_.'orders` o
           WHERE o.`date_add` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\' ');
           $result2Day = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT COUNT(`id_customer`) AS total_registrations
           FROM `'._DB_PREFIX_.'customer` c
           WHERE c.`date_add` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'');
           $result3Day = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT SUM(pv.`counter`) AS total_viewed
           FROM `'._DB_PREFIX_.'page_viewed` pv
           LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range`
           LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page`
           LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`
           WHERE pt.`name` = \'product.php\'
           AND dr.`time_start` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'
           AND dr.`time_end` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'');
           $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT SUM(o.`total_paid_real` / o.conversion_rate) as total_sales, COUNT(*) as total_orders
           FROM `'._DB_PREFIX_.'orders` o
           WHERE o.valid = 1
           AND o.`invoice_date` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\' ');
           $result2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT COUNT(`id_customer`) AS total_registrations
           FROM `'._DB_PREFIX_.'customer` c
           WHERE c.`date_add` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'');
           $result3 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
           SELECT SUM(pv.`counter`) AS total_viewed
           FROM `'._DB_PREFIX_.'page_viewed` pv
           LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range`
           LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page`
           LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`
           WHERE pt.`name` = \'product.php\'
           AND dr.`time_start` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'
           AND dr.`time_end` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'');
           $results = array_merge($result, array_merge($result2, $result3));
           $resultsDay = array_merge($resultDay, array_merge($result2Day, $result3Day));



Et rajouter juste en dessous ça pour afficher le bloc :

echo '

'.$this->l('View more').' Stats du Jour 

                       '.$this->l('Sales').'

                           '.Tools::displayPrice($resultsDay['total_sales'], $currency).'

                           '.$this->l('Total registrations').'

                           '.(int)($resultsDay['total_registrations']).'

                           '.$this->l('Total orders').'

                           '.(int)($resultsDay['total_orders']).'

                           '.$this->l('Product pages viewed').'

                           '.(int)($resultsDay['total_viewed']).'


           ';

Link to comment
Share on other sites

  • 2 months later...

Bonsoir à toi Mat et merci pour cette astuce.
Elle marche trés bien à part une alerte de sécurité " Clé de sécurité invalide " sur fond rouge quand on clique sur le lien "voir plus" du bloc. Mais rien de méchant...
Je ne comprend toujours pas pourquoi la team a supprimé cette fonction qui m'évitait de devoir aller dans la page commande et la page client pour voir les évolutions...???

Link to comment
Share on other sites

  • 4 weeks later...

Merci pour la solution.. pour la clef de sécurité j'ai repris le lien des autres module qui renvoie dans les stats et il n'y a plus de problème de sécurité..

Par contre ce n'est pas possible d'adapter cette astuce directement dans le tableaux de bord ?

Link to comment
Share on other sites

J'ai déjà rajouter le total HT dans le Tableau de bord...

Mais pour pour ce qui concerne d'adapter ton code pour afficher par jour dans le tableau des stats j'ai un gros souci.. sa me sort des chiffres impossible...

Le code qui va chercher par jour dans le module de stats et j'ai rajouté en gras

   $result = $db->ExecuteS('
   SELECT
   '.$dateFromGInvoice.' as fix_date,
       COUNT(DISTINCT o.id_order) as countOrders,
       SUM(od.product_quantity) as countProducts,
       SUM(od.product_price * od.product_quantity / o.conversion_rate) as totalProducts,

       Le rajout
       SUM(o.total_paid_real / o.conversion_rate) as total_salesjour

   FROM '._DB_PREFIX_.'orders o
   LEFT JOIN '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order
   LEFT JOIN '._DB_PREFIX_.'product p ON od.product_id = p.id_product
   WHERE o.valid = 1
   AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween().'
   GROUP BY '.$dateFromGInvoice.'
   ORDER BY fix_date', false);



et rajouté dans le tableau dans le : foreach ($dataTable as $row) (ligne 205 du module statsforecast)

    
'.Tools::displayPrice($row['total_salesjour'], $currency).'



mais les résultats sont plutôt surprenant...

Quelqu'un pour m'aider ?

Link to comment
Share on other sites

  • 1 month later...

Le moteur du forum a pété tous les anti-slashes. Voila le bon code (pour copier / coller)

 

$resultDay = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT SUM(o.`total_paid_real` / o.conversion_rate) as total_sales, COUNT(*) as total_orders
		FROM `'._DB_PREFIX_.'orders` o
		WHERE o.`date_add` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\' ');
		$result2Day = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT COUNT(`id_customer`) AS total_registrations
		FROM `'._DB_PREFIX_.'customer` c
		WHERE c.`date_add` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'');
		$result3Day = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT SUM(pv.`counter`) AS total_viewed
		FROM `'._DB_PREFIX_.'page_viewed` pv
		LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range`
		LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page`
		LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`
		WHERE pt.`name` = \'product.php\'
		AND dr.`time_start` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'
		AND dr.`time_end` BETWEEN \''.date('Y-m-d').' 00:00:00\' AND \''.date('Y-m-d').' 23:59:59\'');
		$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT SUM(o.`total_paid_real` / o.conversion_rate) as total_sales, COUNT(*) as total_orders
		FROM `'._DB_PREFIX_.'orders` o
		WHERE o.valid = 1
		AND o.`invoice_date` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\' ');
		$result2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT COUNT(`id_customer`) AS total_registrations
		FROM `'._DB_PREFIX_.'customer` c
		WHERE c.`date_add` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'');
		$result3 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
		SELECT SUM(pv.`counter`) AS total_viewed
		FROM `'._DB_PREFIX_.'page_viewed` pv
		LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range`
		LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page`
		LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`
		WHERE pt.`name` = \'product.php\'
		AND dr.`time_start` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'
		AND dr.`time_end` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\'');
		$results = array_merge($result, array_merge($result2, $result3));
		$resultsDay = array_merge($resultDay, array_merge($result2Day, $result3Day));
		echo '
		<div class="table_info">
			<h5><a href="index.php?tab=AdminStats&token='.Tools::getAdminTokenLite('AdminStats').'">'.$this->l('View more').'</a> Stats du Jour </h5>
			<table class="table_info_details">
				<tr class="tr_odd">
					<td class="td_align_left">
					'.$this->l('Sales').'
					</td>
					<td>
						'.Tools::displayPrice($resultsDay['total_sales'], $currency).'
					</td>
				</tr>
				<tr>
					<td class="td_align_left">
						'.$this->l('Total registrations').'
					</td>
					<td>
						'.(int)($resultsDay['total_registrations']).'
					</td>
				</tr>
				<tr class="tr_odd">
					<td class="td_align_left">
						'.$this->l('Total orders').'
					</td>
					<td>
						'.(int)($resultsDay['total_orders']).'
					</td>
				</tr>
				<tr>
					<td class="td_align_left">
						'.$this->l('Product pages viewed').'
					</td>
					<td>
						'.(int)($resultsDay['total_viewed']).'
					</td>
				</tr>
			</table>
		</div>
		';

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour et A l'aide !

 

Suite à l'installation de la version Prestashop 1.4.4.1, je n'ai plus accès au tableau de bord du back office.

Par contre, j'ai accès à tous les onglets et tout fonctionne normalement.

Simplement, qund je clique sur accueil, le message suivant s'affiche : Tab cannot be found.

J'ai tenté de modifier mon fichier index.php, changer AdminQuickAccesses.php, réinstaller le dossire admin à la racine du site mais rien n'y fait.

J'aimerais quand même avoir accès à cette page même si cela ne met pas en péril le fonctionnement du site.

Alors à l'aide !

Je cherche depuis des jours et des jours :(

Merci d'avcance.

Link to comment
Share on other sites

Bonjour et A l'aide !

 

Suite à l'installation de la version Prestashop 1.4.4.1, je n'ai plus accès au tableau de bord du back office.

Par contre, j'ai accès à tous les onglets et tout fonctionne normalement.

Simplement, qund je clique sur accueil, le message suivant s'affiche : Tab cannot be found.

J'ai tenté de modifier mon fichier index.php, changer AdminQuickAccesses.php, réinstaller le dossire admin à la racine du site mais rien n'y fait.

J'aimerais quand même avoir accès à cette page même si cela ne met pas en péril le fonctionnement du site.

Alors à l'aide !

Je cherche depuis des jours et des jours :(

Merci d'avcance.

 

As-tu essayé de restaurer le fichier AdminHome.php dans admin/tabs ?

Link to comment
Share on other sites

Merci pour ta réponse mat250.

J'ai déjà tenté de restaurer le fichier AdminHome.php. Mais cela ne change rien.

J'ai même supprimé ce fichier mails le message reste le même.

Voilà !

 

Compare le contenu du dossier admin/tab d'une installation propre et de celui sur ton serveur. Un fichier devrait manquer dans ton dossier.

Link to comment
Share on other sites

Merci mat250 pour ton aide !

 

Grâce à toi, j'ai épluché tous les fichiers de l'admin un par un et là je me suis aperçue que le fichier index.php était totalement faux (étrange car il s'agissait du fichier du téléchargement de la dernière version). J'ai donc récupéré le code source ailleurs. Puis dans le back office, j'ai sélectionné Hide optimization tips (oui). Et là tout fonctionne et je suis ravie.

Merciiiiiiiiiiiii :D

Link to comment
Share on other sites

Merci mat250 pour ton aide !

 

Grâce à toi, j'ai épluché tous les fichiers de l'admin un par un et là je me suis aperçue que le fichier index.php était totalement faux (étrange car il s'agissait du fichier du téléchargement de la dernière version). J'ai donc récupéré le code source ailleurs. Puis dans le back office, j'ai sélectionné Hide optimization tips (oui). Et là tout fonctionne et je suis ravie.

Merciiiiiiiiiiiii :D

Ravi que ça ait pu t'aider !

Link to comment
Share on other sites

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