Jump to content
  • 0

PS 1.7.x brak statystyk w BO


kolmen

Question

Nie mam statystyk w BO.

Część udało się naprawić podmieniając wpisy w AdminStatsConrollers.php z invocie_date na date_add.

Jednak mam problem który mi doskwiera bardzo, pomimo poprawnie złożonych zamówień przez klientów w statystykach klientów jak i w samym kliencie jest wpis że wydał w sklepie 0.00 zł - tak ja to widać w załączniku.

Druga rzecz to, że nie zlicza wgl prowizji dla płatności tj. nie odejmuje ich w statystykach (dashboard)

Przeszukałem fora i niestety nic mi nie pomogło... ktoś wie jak to naprawić?

 

s1.JPG

s2.JPG

Edited by kolmen (see edit history)
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Po włączenie faktur w statusach płatności (zahaczona fajka) statystyki działają - faktury w sklepie są wyłączone, a więc faktury są niewidoczne dla klienta ani w emailu ani w panelu konta.

Dziękuje za pomoc. Pozdrawiam - temat sloved

Link to comment
Share on other sites

  • 0

Właściwie to nie podałeś żadnych informacji w sensie nie napisałeś czy masz zainstalowane moduły statystyk czy dla zamówień generujesz faktury no i najważniejsze nie napisałeś jaka dokładnie wersja presty. Poza tym 1.7 jest jeszcze nie do końca "sprawna" i większość osób jej unika dlatego tematy dotyczące tej wersji są bardzo mało interesujące dla użytkowników :)

Link to comment
Share on other sites

  • 0

Zacznijmy od końca - 1.7 jest bardzo sprawne i bardzo ładne - nowe - więc ludzie unikają czytając właśnie komentarze "ze do końca nie jest sprawna" :) poza tym jest to już któreś wydania 1.7 więc trochę kodu już upłyneło od premiery.

--

Aktualnie jestem na 1.7.3.1

PHP 7.1

Moduły standardowe z PS. Faktury oczywiście wyłączone. Na świeżo zainstalowanej statystyki działają prawidłowo pomimo wyłączonych faktur.

 

Link to comment
Share on other sites

  • 0

Nie wiem na jakiej podstawie twierdzisz że jest sprawna (stabilna), generalnie porównując do wersji 1.6 to "siódemka" nie posiada wszystkich tych samych opcji co poprzednia wersja, nie posiada wszystkich darmowych modułów co ma poprzednia wersja, idąc dalej panel admina jest nieatrakcyjnie skonstruowany ponieważ trzeba wejść w zakładkę aby przejść w kolejną zakładkę. Ilość bugów jest znaczna, zdecydowanie większa niż w poprzedniej wersji. Wersja 1.7 właściwie od początku przez team presty jest nazywana jako stabilna i dzisiaj mamy wersje 1.7.3.1 i wersja 1.7.4 już jest na widelcu (z sporym już opóźnieniem czasowym i brakiem póki co obiecanych funkcji które są w 1.6) wciąż nie wydaje się wersją stabilną a tu wersja 1.6.1 od lat stabilna (można powiedzieć że od wersji 1.6.0.9). Więc tak jak widzisz 1.6 z końcówką 1 jest stabilna  a 1.7 z końcówką 3 nie za bardzo. Oczywiście czas i kolejne wersje będą przynosiły poprawę tylko trzeba czekać, cierpliwie ;)

 

Do zliczania zamówień musisz mieć włączone faktury... ale w 1.7 nie jestem pewny :)

Link to comment
Share on other sites

  • 0

Kurde te faktury to też jakiś temat rzeka i nie ma jasno rozpisanego ocb... w 1.6 miałem wyłączone i o dziwo zliczało a też wszyscy pisali że muszą być obowiązkowo...

wgl to jakiś absurd w samych założeniach twórców- że faktury są obowiązkowe żeby PS działał prawidłowo :D 

Najgorsze jest to, że nie da tego się odtworzyć na środowisku testowym i nie ma jak tego zaraportować :(

Link to comment
Share on other sites

  • 0

Dla ścisłości - faktury nie muszą być wygenerowane ale zamówienia muszą mieć odpowiednie (w sensie odpowiednio skonfigurowane) statusy aby były zliczane do statystyk.

Z tym, że też nie testowałem więc nie jestem pewien czy w 1.7 nadal tak samo to działa,

Link to comment
Share on other sites

  • 0

Dla 1.6 to np. dostarczone, wysłane, płatność przyjęta/zaakceptowana i chyba przygotowanie w toku - czyli o ile pamiętam te, które mają ustawione Pozwól klientowi pobrać i zobaczyć w fakturę PDF (jak nie wystarczy to sprawdź też ustawienie Ustaw zamówienie jako opłacone).

Link to comment
Share on other sites

  • 0

Rozwiązanie jest tutaj opublikował "skorupa" u mnie na wersji 1.7.4.4 działa nawet z wyłączonymi fakturami

nie trzeba usuwać niczego, trzeba jedynie utworzyć pod adresem: override / controllers / admin / (tu nowy folder) "AdminStatsController.php" I umieść tam kod w nowym dokumencie o tej samej nazwie (AdminStatsController.php), następnie wyczyścić pamięć podręczną i sprawdzić statystyki - działa jak ta lala 🙂

poniżej cały kod:

 

<?php
class AdminStatsController extends AdminStatsControllerCore
{
		public static function getTotalSales($date_from, $date_to, $granularity = false)
    {
        if ($granularity == 'day') {
            $sales = array();
            $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
			SELECT LEFT(`date_add`, 10) as date, SUM(total_paid_tax_excl / o.conversion_rate) as sales
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o').'
			GROUP BY LEFT(`date_add`, 10)');
            foreach ($result as $row) {
                $sales[strtotime($row['date'])] = $row['sales'];
            }
            return $sales;
        } elseif ($granularity == 'month') {
            $sales = array();
            $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
			SELECT LEFT(`date_add`, 7) as date, SUM(total_paid_tax_excl / o.conversion_rate) as sales
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o').'
			GROUP BY LEFT(`date_add`, 7)');
            foreach ($result as $row) {
                $sales[strtotime($row['date'].'-01')] = $row['sales'];
            }
            return $sales;
        } else {
            return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
			SELECT SUM(total_paid_tax_excl / o.conversion_rate)
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o'));
        }
    }
    
    public static function getOrders($date_from, $date_to, $granularity = false)
    {
        if ($granularity == 'day') {
            $orders = array();
            $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
			SELECT LEFT(`date_add`, 10) as date, COUNT(*) as orders
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o').'
			GROUP BY LEFT(`date_add`, 10)');
            foreach ($result as $row) {
                $orders[strtotime($row['date'])] = $row['orders'];
            }
            return $orders;
        } elseif ($granularity == 'month') {
            $orders = array();
            $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
			SELECT LEFT(`date_add`, 7) as date, COUNT(*) as orders
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o').'
			GROUP BY LEFT(`date_add`, 7)');
            foreach ($result as $row) {
                $orders[strtotime($row['date'].'-01')] = $row['orders'];
            }
            return $orders;
        } else {
            $orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
			SELECT COUNT(*) as orders
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o'));
        }

        return $orders;
    }
    
    public static function getPurchases($date_from, $date_to, $granularity = false)
    {
        if ($granularity == 'day') {
            $purchases = array();
            $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
			SELECT
				LEFT(`date_add`, 10) as date,
				SUM(od.`product_quantity` * IF(
					od.`purchase_supplier_price` > 0,
					od.`purchase_supplier_price` / `conversion_rate`,
					od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100
				)) as total_purchase_price
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o').'
			GROUP BY LEFT(`date_add`, 10)');
            foreach ($result as $row) {
                $purchases[strtotime($row['date'])] = $row['total_purchase_price'];
            }
            return $purchases;
        } else {
            return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
			SELECT SUM(od.`product_quantity` * IF(
				od.`purchase_supplier_price` > 0,
				od.`purchase_supplier_price` / `conversion_rate`,
				od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100
			)) as total_purchase_price
			FROM `'._DB_PREFIX_.'orders` o
			LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
			LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
			WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
			'.Shop::addSqlRestriction(false, 'o'));
        }
    }

    public static function getExpenses($date_from, $date_to, $granularity = false)
    {
        $expenses = ($granularity == 'day' ? array() : 0);

        $orders = Db::getInstance()->ExecuteS('
		SELECT
			LEFT(`date_add`, 10) as date,
			total_paid_tax_incl / o.conversion_rate as total_paid_tax_incl,
			total_shipping_tax_excl / o.conversion_rate as total_shipping_tax_excl,
			o.module,
			a.id_country,
			o.id_currency,
			c.id_reference as carrier_reference
		FROM `'._DB_PREFIX_.'orders` o
		LEFT JOIN `'._DB_PREFIX_.'address` a ON o.id_address_delivery = a.id_address
		LEFT JOIN `'._DB_PREFIX_.'carrier` c ON o.id_carrier = c.id_carrier
		LEFT JOIN `'._DB_PREFIX_.'order_state` os ON o.current_state = os.id_order_state
		WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND os.logable = 1
		'.Shop::addSqlRestriction(false, 'o'));
        foreach ($orders as $order) {
            // Add flat fees for this order
            $flat_fees = Configuration::get('CONF_ORDER_FIXED') + (
                $order['id_currency'] == Configuration::get('PS_CURRENCY_DEFAULT')
                    ? Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED')
                    : Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED_FOREIGN')
                );

            // Add variable fees for this order
            $var_fees = $order['total_paid_tax_incl'] * (
                $order['id_currency'] == Configuration::get('PS_CURRENCY_DEFAULT')
                    ? Configuration::get('CONF_'.strtoupper($order['module']).'_VAR')
                    : Configuration::get('CONF_'.strtoupper($order['module']).'_VAR_FOREIGN')
                ) / 100;

            // Add shipping fees for this order
            $shipping_fees = $order['total_shipping_tax_excl'] * (
                $order['id_country'] == Configuration::get('PS_COUNTRY_DEFAULT')
                    ? Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP')
                    : Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP_OVERSEAS')
                ) / 100;

            // Tally up these fees
            if ($granularity == 'day') {
                if (!isset($expenses[strtotime($order['date'])])) {
                    $expenses[strtotime($order['date'])] = 0;
                }
                $expenses[strtotime($order['date'])] += $flat_fees + $var_fees + $shipping_fees;
            } else {
                $expenses += $flat_fees + $var_fees + $shipping_fees;
            }
        }
        return $expenses;
    }
}

sam się z tym męczyłem i mam nadzieję że pomogłem 🙂

edit: właśnie odkryłem że po wprowadzeniu tego rozwiązania jeden moduł przestał mi działać niestety byłem zmuszony usunąć pliki i czekam na rozwiązanie problemu w kolejnych wersjach jednocześnie szukam innych rozwiązań więc jak by ktoś coś to zapraszam do dyskusji i dzielenia się wiedzą.

Edited by prestastream (see edit history)
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...