zencartpro / zencart-german-grundsystem

Zen Cart ist eine kostenlose unter der GPL-Lizenz veröffentlichte Open-Source Shopsoftware. Das System wird in den USA entwickelt. Die deutsche Zen Cart Version ist eine Anpassung der amerikanischen Version an die Bedürfnisse von Onlineshopbetreibern im deutschsprachigen Raum.
https://www.zen-cart-pro.at
GNU General Public License v3.0
6 stars 3 forks source link

Undefined index: customer_id bei Kauf auf Rechnung #17

Closed mh254 closed 1 year ago

mh254 commented 1 year ago

Wenn ein Kunde per Rechnung bezahlt, erhalte ich jedes Mal, wenn ich die Bestellung aktualisiere den folgenden Fehler:

[20-Oct-2022 14:09:40 Europe/Berlin] Request URI: /admin/index.php?cmd=orders&page=1&oID=3&action=update_order&language=de

1 invoice->update_status() called at [/includes/modules/payment/invoice.php:28]

2 invoice->__construct() called at [/admin/orders.php:288]

3 require(/admin/orders.php) called at [/admin/index.php:18]

--> PHP Notice: Undefined index: customer_id in /includes/modules/payment/invoice.php on line 56.

PHP-Version: PHP 7.4.3 (cli) (built: Aug 17 2022 13:29:56) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

webchills commented 1 year ago

Ist eine harmlose NOTICE, siehe https://www.zen-cart-pro.at/knowledgebase/bedeutung-von-notice-warning-und-error-in-den-zen-cart-debug-logs/

Die Abfrage, wieviele Bestellungen der Kunde schon hat, ist nur für das Frontend geeignet und muss wenn das Modul im Adminbereich geladen wird, deaktiviert werden.

Folgende Änderung wird das Logfile mit der NOTICE verschwinden lassen: includes/modules/payment/invoice.php

ca. Zeile 56

ändern von: $customer_id = $_SESSION['customer_id']; $test_query = $db->Execute("select count(*) as total from " . TABLE_ORDERS . " where customers_id='" . $customer_id . "' AND orders_status=3"); if (($total+1) < MODULE_PAYMENT_INVOICE_FROM_ORDER) { $this->enabled = false; }

auf: if (IS_ADMIN_FLAG === false) { $customer_id = $_SESSION['customer_id']; $test_query = $db->Execute("select count(*) as total from " . TABLE_ORDERS . " where customers_id='" . $customer_id . "' AND orders_status=3"); if (($total+1) < MODULE_PAYMENT_INVOICE_FROM_ORDER) { $this->enabled = false; } }

webchills commented 1 year ago

fixed with 60e8bf0