[email protected] Posted April 8, 2022 Share Posted April 8, 2022 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áš Link to comment Share on other sites More sharing options...
knacky Posted April 8, 2022 Share Posted April 8, 2022 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ý. Link to comment Share on other sites More sharing options...
[email protected] Posted April 8, 2022 Author Share Posted April 8, 2022 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? Link to comment Share on other sites More sharing options...
knacky Posted April 9, 2022 Share Posted April 9, 2022 ./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) . Link to comment Share on other sites More sharing options...
[email protected] Posted April 9, 2022 Author Share Posted April 9, 2022 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ý. Link to comment Share on other sites More sharing options...
[email protected] Posted April 9, 2022 Author Share Posted April 9, 2022 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? Link to comment Share on other sites More sharing options...
knacky Posted April 9, 2022 Share Posted April 9, 2022 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. Link to comment Share on other sites More sharing options...
[email protected] Posted April 9, 2022 Author Share Posted April 9, 2022 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 ..... 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