Завантажити модуль Prestashop
Виникла помилка при роботі іншої функції
Примітка: Trying to get property 'precision' of non-object in /classes/Context.php on line 498
Fatal error: Uncaught TypeError: Argument 1 passed to Notice: Trying to get property 'precision' of non-object in /sites/testsite.com/classes/Context.php on line 498
Fatal error: Uncaught TypeError: Argument 1 passed to PrestaShop\PrestaShop\Core\Localization\CLDR\ComputingPrecision::getPrecision() must be of the type int, null given, called in /sites/testsite.com/classes/Context.php on line 498 and defined in /sites/ikrinka.lv/src/Core/Localization/CLDR/ComputingPrecision.php:41
Станція Stack Trace
#0 /sites/testsite.com/classes/Context.php(498): PrestaShop\PrestaShop\Core\Localization\CLDR\ComputingPrecision->getPrecision(NULL)
#1 /sites/testsite.com/classes/order/Order.php(614): ContextCore->getComputingPrecision()
#2 /sites/testsite.com/classes/order/Order.php(667): OrderCore->setProductPrices(Array)
#3 /sites/testsite.com/modules/dg_productlot/dg_productlot.php(121): OrderCore->getProducts()
#4 /sites/testsite.com/modules/dg_productlot/dg_productlot.php(279): Dg_ProductLot->getOrderProducts(20)
#5 /sites/testsite.com/classes/Hook.php(1007): Dg_ProductLot->hookActionOrderStatusUpdate(Array)
#6 /sites/testsite.com/classes/Hook.php(431): HookCore::coreCallHook(Object(Dg_ProductLot), 'hookActionOrder...', in /sites/testsite.com/src/Core/Localization/CLDR/ComputingPrecision.php on line 41
Після видалення модуля з хука hookActionOrderStatusUpdate робота іншої функції відновлюється
Код модуля в для цього хука
публічна функція hookActionOrderStatusUpdate($params)
{ {
$products_with_lots = ModuleTools::getProductsWithLots();
$newOrderStatus = $params['newOrderStatus'];
$id_order = $params['id_order']
if ($newOrderStatus->id == ConfPL::getConf('STATUS_PROCESS_BUY')
&& !$this->hasOrderStateInOrder($id_order, (int)ConfPL::getConf('STATUS_PROCESS_BUY'))) {
foreach ($this->getOrderProducts($id_order) as $product) {
if (!Pack::isPack($product['product_id'])) {
if (!in_array($product['product_id'], $products_with_lots)) {
продовжувати;
$this->processBuyProduct($product, $product['product_quantity']);
) else {
* * *
* var Product[] $items
* /
$items = Pack::getItems($product['product_id'], $this->context->language->id);
if (is_array($items) && count($items)) {
Foreach ($items as $item) {
$quantity = (int)$product['product_quantity'] * (int)$item->pack_quantity;
$prod = аррей(
'id_order_detail' => (int)$product['id_order_detail'],
'product_id' => (int)$item->id,
'product_attribute_id' => (int)$item->id_pack_product_attribute,
'product_quantity' => $quantity,
'id_order' => (int)$product['id_order']
а)
$this->processBuyProduct($prod, $prod['product_quantity']);
} else if ($newOrderStatus->id == ConfPL::getConf('STATUS_REFUND')
&& !$this->hasOrderStateInOrder($id_order, (int)ConfPL::getConf('STATUS_REFUND'))) {
foreach ($this->getOrderProducts($id_order) as $product) {
if (!in_array($product['id_product'], $products_with_lots)) {
продовжувати;
$this->processRefundProduct ($product) - це процес, який використовується для виготовлення продуктів.
) else {
foreach ($this->getOrderProducts($id_order) as $product) {
if (!in_array($product['id_product'], $products_with_lots)) {
продовжувати;
//$this->processBuyProduct($product, $product['product_quantity']);
$order = new Order ($id_order);
$this->updateQuantityProductsByOrder($order);
в класі /classes/Context.php такий код (жирним рядком 498)
/*** Returns the computing precision according to the current currency return int */
публічна функція getComputingPrecision()
{ if ($this->priceComputingPrecision === null) {
$computingPrecision = new ComputingPrecision();
$this->priceComputingPrecision = $computingPrecision->getPrecision($this->currency->precision);
return $this->priceComputingPrecision
і в /Core/Localization/CLDR/ComputingPrecision.phppublic функція getPrecision(int $displayPrecision) (41 хвилини)
{ {
// the MULTIPLIER attribute is set to 1 for now, so that it matches display precision
$computingPrecision = $displayPrecision * self::MULTIPLIER;
return ($computingPrecision < self::MINIMAL_VALUE) ?self::MINIMAL_VALUE : $computingPrecision;
Після
Можливо в самому модулі якось прописати значення цього параметра, встановивши йому константу в функції для хука?
-
491 15 0 Відповідь на першу помилку нагукнув тут:
https://www.prestashop.com/forums/topic/505618-notice-trying-to-get-property-of-non-object/
Актуальні фриланс-проєкти в категорії PHP
Багатосторінковий HTML-шаблон веб-сайту для онлайн-ставок та парсинг API матчів (
1109 UAH
|
Вирішити проблему навантаження на хостинг сайта на ПресташопСайт з кожним місяцем потребує більше і більше ресурсів. Відповідь хостера:Під час перевірки сервера було зафіксовано підвищене навантаження з боку сервера баз даних MySQL. У моменти виникнення помилки 500 процес MySQL використовує значну частину ресурсів процесора, що може… PHP, Бази даних та SQL ∙ 13 годин 27 хвилин тому ∙ 21 ставка |
Потрібна інтеграція KeyCRM → ПРРО Кашалот |
Сайт на WordPress з використанням теми Kadence та Kadence Blocks.
10 000 UAH
Нам потрібно створити сайт на WordPress з використанням теми Kadence та Kadence Blocks. Інтернет-магазину не буде (хоча, ймовірно, він буде доданий у майбутньому). Потрібна головна сторінка та кілька внутрішніх сторінок. Графіка вже готова, структура макета здебільшого… CMS, PHP ∙ 2 дні тому ∙ 37 ставок |
Розробка 2 SEO-орієнтованих сайтів з продажу запчастин (квадроцикли та спецтехніка)Розробка двох спеціалізованих сайтів з продажу запчастинЗагальна інформація Потрібно розробити два спеціалізовані сайти: Запчастини для квадроциклів, UTV, SSV та іншої подібної техніки. Запчастини для спеціальної техніки. Існуючий сайт компанії: https://kiaparts.com.ua/ Нові… PHP, Веб-програмування ∙ 2 дні 21 година тому ∙ 76 ставок |