Jump to content

Nástěnka záporný čistý zisk


Recommended Posts

Mám problém s nástěnkou a počítáním čistého zisku. Od začátku instalace se špatně počítá.

Verze PrestaShopu: 1.7.7.5

Verze MySQL: 5.5.54-log

Verze PHP: 7.2.34

V obchodě jsou dvě měny, dva jazyky (CZK a EUR). DEMO režim vypnut, začínalo se z čisté instalace. Dělalo to od začátku. Nastavení marže v modulu nástěnky je na 35%, ale stejně to nemá vliv, všechny další nastavení modulu jsou na 0 (tedy vypnuto). U všeho zboží je nastavena nákupní cena v hlavní měně (CZK).

Nemáte někdo prosím podobný problém? Nějaký nápad?

 Prolezl jsem snad všechno co by se týkalo Dashboard a Net profit, ale nic.

Díky, Tomáš

268864372_Dashboardnetprofit.thumb.jpg.852952077240e26ea876ee875cae14ad.jpg

Dashboard.thumb.jpg.59ffb41897c123b851db39903d30f745.jpg

Share this post


Link to post
Share on other sites

Tohle je chyba přímo v modulu nástěnky. 

Když počítá marži, počítá to např. Jako x = ((y - (z * v)/100) a výsledek v php je -x.

Stačí najít podmínku, kde dochází k výpočtu a před to napsat abs.

Takže by to mělo být x = abs(((y -(z * v)/100)).

Výsledek pak bude kladný. 

 

Share this post


Link to post
Share on other sites

35 minutes ago, knacky said:

Tohle je chyba přímo v modulu nástěnky. 

Když počítá marži, počítá to např. Jako x = ((y - (z * v)/100) a výsledek v php je -x.

Stačí najít podmínku, kde dochází k výpočtu a před to napsat abs.

Takže by to mělo být x = abs(((y -(z * v)/100)).

Výsledek pak bude kladný. 

 

Děkuj za odpověď, ale moc mi to smysl nedává. Nevím, kde by ten výpočet měl být? Podle mého názoru se to počítá v AdminStatsController.php a je to dost složitý SQL dotaz. Můžeš přesněji specifikovat co máš na mysli?

Share this post


Link to post
Share on other sites

./modules/dashtrends/dashtrends.php

Najít funkci:

hookDashboardData($params)

a v ní změnit:

Tools::displayPrice($this->dashboard_data_sum['net_profits'], $this->currency) .

na

Tools::displayPrice(abs($this->dashboard_data_sum['net_profits']), $this->currency) .

 

Share this post


Link to post
Share on other sites

23 minutes ago, knacky said:

./modules/dashtrends/dashtrends.php

Najít funkci:

hookDashboardData($params)

a v ní změnit:

Tools::displayPrice($this->dashboard_data_sum['net_profits'], $this->currency) .

na

Tools::displayPrice(abs($this->dashboard_data_sum['net_profits']), $this->currency) .

 

Děkuji za upřesnění. Provedl jsem navrhovanou změnu. Bohužel to vedlo pouze k tomu, že v řádku s výsledky to číslo net_profitu převedlo z -403977 na 403977. Což je spíše kosmetická úprava - znaménko před číslem bych si dokázal odmyslet. Větší problém je, že při prodeji cca 52tisíc nemohu mít net_profit 403tisíc. Také graf net_profitu je stále stejně divný.

Share this post


Link to post
Share on other sites

Změnu přineslo to, když jsem ve funkci "protected function refineData($date_from, $date_to, $gross_data)" vypustil:

            if (isset($gross_data['total_purchases'][$date])) {
                $refined_data['net_profits'][$date] -= $gross_data['total_purchases'][$date];
            }

Po vypuštění je net_profit stejný jako prodeje, takže problém je ve výpočtu $gross_data['total_purchases'][$date]

To má vliv jak na číslo v řádku s výsledky, tak i graf, takže to je správná cesta, ale co dál?

 

Share this post


Link to post
Share on other sites

No, pořád to vypadá, že připočítává kurz euro.

((52 899,85 * 35) / 100) * kurz euro cca. 21,85 = 404 543,96

Bohužel nemám verzi 1.7.5 k dispozici.

Share this post


Link to post
Share on other sites

Tak vyřešeno!

Bylo to v modulu  AdminStatsController.php tento modul připravuje data, která se používají ve vlastním modulu nástěnky.

Problém je v tom, že si presta ukládá záznam o každém řádku objednávky, kde je mimo jiné cena a počet kusů. Modul nástěnky si myslí, že je cena uložena v ceně objednávky (např. EUR) ale ve skutečnosti se ukládá v základní ceně obchodu, v mém případě CZK.

Soubor: AdminStatsController.php

metoda:    public static function getPurchases($date_from, $date_to, $granularity = false)

Původní formulace:                     od.`purchase_supplier_price` / `conversion_rate`,

Nová formulace:                     od.`purchase_supplier_price`,

je to tam na dvou místech.

 

Napadá někoho proč tento problém vznikl? Je to vážně chyba presty? Nějaké nápady?

Je mi divné, že to řeším jenom já, ale problém by měl být obecný u obchodu s více měnami .....

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More