B??d gdy klient nie zako?czy zam?wienia

Tutaj można zgłaszać wszelkie wykryte błędy w Opencart, wraz z ewentualnym opisem ich naprawienia. W tytule posta warto podać wersję, której dany błąd dotyczy.

[ROZWIĄZANIE] Błąd gdy klient nie zakończy zamówienia

Postprzez lukon » 24 sty 2015, o 19:31

Problem rozwiązany, dziwne że tylko kilka linii wymagało zmiany 8-)
Aby tylko przycisk w kroku 6 - 'Potwierdź zamówienie' dodawał zamówienie do bazy danych trzeba zmienić:

1. W pliku /catalog/controller/checkout/confirm.php:

od 326 linii usunąć:
Kod: Zaznacz cały
$this->load->model('checkout/order');
$this->session->data['order_id'] = $this->model_checkout_order->addOrder($data);

zamiast nich dodać:
Kod: Zaznacz cały
$this->session->data['order_data'] = $data;

2. W używanych plikach płatności /catalog/controller/payment/cod.php, bank_transfer.php, cop.php, free_transfer.pl,itd...:

ok. 17 linii funkcja:
Kod: Zaznacz cały
public function confirm() {      
      // ta linia powinna być w każdej metodzie płatności:
      $this->load->model('checkout/order');      
      
      // nowa linia - dodająca zamówienie do bazy danych:
      $this->session->data['order_id'] = $this->model_checkout_order->addOrder($this->session->data['order_data']);
      
      // podobna linia jest w każdej metodzie płatności - potwierdzenie zamówienia:
      $this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('cod_order_status_id'));
      
      // nowa linia - zwalnienie zmiennej z danymi zamówienia:
      unset($this->session->data['order_data']);
}


Dobrze, żeby ktoś jeszcze przetestował ten sposób. U mnie jak na razie wszystko działa i nie tworzy "śmieciowych" zamówień :D
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

Re: Błąd gdy klient nie zakończy zamówienia

Postprzez jang1200 » 11 lut 2015, o 22:09

gadas napisał(a):Cześć jang1200 witaj po latach.
Ano Witaj :D dobry ludziku ;) , Ty tu jeszcze zaglądasz ?
S? trzy rodzaje bia?ej ?mierci ? s?l ? cukier i ? lekarz pierwszego kontaktu.
jang1200
 
Posty: 274
Dołączył(a): 6 mar 2010, o 19:17

Re: Błąd gdy klient nie zakończy zamówienia

Postprzez lukon » 23 lut 2015, o 16:35

Znalazłem błąd, który pojawia się gdy jednocześnie dwie osoby robią i zatwierdzają zamówienie.
W dzienniku błędów pojawia się:
Kod: Zaznacz cały
2015-02-23 12:59:11 - PHP Notice:  Undefined index: order_data in /catalog/controller/payment/bank_transfer.php on line 39
2015-02-23 12:59:11 - PHP Warning:  Invalid argument supplied for foreach() in /vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 8
2015-02-23 12:59:11 - PHP Warning:  Invalid argument supplied for foreach() in /vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 22
2015-02-23 12:59:11 - PHP Warning:  Invalid argument supplied for foreach() in /vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 26
2015-02-23 12:59:11 - PHP Notice:  Error: Could not load language ! in /vqmod/vqcache/vq2-system_library_language.php on line 39
2015-02-23 12:59:12 - PHP Notice:  Error: E-Mail to required! in /system/library/mail.php on line 51
2015-02-23 12:59:12 - PHP Notice:  Undefined index: order_data in /catalog/controller/payment/bank_transfer.php on line 39
2015-02-23 12:59:12 - PHP Warning:  Invalid argument supplied for foreach() in/vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 8
2015-02-23 12:59:12 - PHP Warning:  Invalid argument supplied for foreach() in/vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 22
2015-02-23 12:59:12 - PHP Warning:  Invalid argument supplied for foreach() in /vqmod/vqcache/vq2-catalog_model_checkout_order.php on line 26
2015-02-23 12:59:12 - PHP Notice:  Error: Could not load language ! in /vqmod/vqcache/vq2-system_library_language.php on line 39
2015-02-23 12:59:12 - PHP Notice:  Error: E-Mail to required! in /system/library/mail.php on line 51

W bazie danych pojawiają się też, obok dwóch zamówień prawidłowych, dwa puste zamówienia z pustymi polami i zerami.
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

Re: B??d gdy klient nie zako?czy zam?wienia

Postprzez folkasert » 9 minut temu

W Twojej wersji OpenCart 1.5.6 tworzenie zamówienia faktycznie następuje już na etapie wyboru metody płatności, czyli w kroku 5, co skutkuje pojawianiem się w bazie „porzuconych” zamówień, jeśli klient nie dokończy procesu. To standardowy mechanizm tej wersji, jednak może być problematyczny, gdyż powoduje zwiększanie numeracji zamówień i zaśmiecanie bazy niepełnymi danymi.

Aby zmienić ten proces i przesunąć zapis zamówienia do momentu kliknięcia „Potwierdź zamówienie” w kroku 6, trzeba zmodyfikować zarówno front-end (JavaScript obsługujący przyciski), jak i kontrolery po stronie serwera, przenosząc wywołanie funkcji tworzącej zamówienie z etapu kroku 5 do kroku 6. Wymaga to ingerencji w pliki kontrolerów (np. checkout/payment_method.php i checkout/confirm.php) oraz powiązanych modeli, aby ostatecznie danych było zatwierdzane dopiero po potwierdzeniu zamówienia. To nie jest zmiana trywialna i może wymagać głębszej znajomości działania OpenCart, dlatego warto też rozważyć czyszczenie niepełnych zamówień lub aktualizację do nowszej wersji systemu, gdzie ten proces jest lepiej rozwiązany. Jeśli potrzebujesz, mogę pomóc wskazać konkretne miejsca do modyfikacji.



________________________
https://www.medipakiet.pl/blog/kolejka- ... sprawdzic/
folkasert
 
Posty: 1
Dołączył(a): 10 cze 2022, o 12:41

Poprzednia strona

Powrót do Zgłaszanie błędów w Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości