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.

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

Postprzez lukon » 21 sty 2015, o 01:03

Witam wszystkich.

Testowałem dzisiaj sklep (na wersji 1.5.6) i zauważyłem, że w bazie danych w tabeli z zamówieniami (oc_order) mam prawie 30 zamówień a w panelu administratora nie widać ich. Poza tym w dwóch powiązanych tabelach też są wpisy - oc_order_product i oc_order_total.
Testowanie polegało na wypełnianiu zamówienia aż do ostatniego, 6-tego kroku, bez zakańczania zamówienia, czyli naciskania na przycisk 'Potwierdź zamówienie'. Zamykałem stronę i robiłem nowe zamówienie, bo nie chciałem, żeby jakieś zamówienia były zapisywane. Tak samo klient może się rozmyślić na ostatnim kroku i wyjść ze sklepu.

Myślę, że to jest poważny błąd, ponieważ w bazie danych może pojawić się sporo niepotrzebnych wpisów, poza tym numer zamówienia się zwiększa.
Z tego co do tej pory ustaliłem, po naciśnięciu przycisku 'Kontynuuj' w kroku 5 (Metoda płatności) Opencart tworzy nowe zamówienie - robi wpis do bazy danych. Moim zdaniem powinno to się odbywać po naciśnięciu na 'Potwierdź zamówienie' w kroku 6.

Zaczęłem szukać w kodu odpowiedzialnego za tą sytuację i znalazłem:
W pliku: /catalog/view/theme/default/template/checkout/payment-method.tpl około 41 linii jest kod:

Kod: Zaznacz cały
<?php if ($text_agree) { ?>
<div class="buttons">
  <div class="right"><?php echo $text_agree; ?>
    <?php if ($agree) { ?>
    <input type="checkbox" name="agree" value="1" checked="checked" />
    <?php } else { ?>
    <input type="checkbox" name="agree" value="1" />
    <?php } ?>
    <input type="button" value="<?php echo $button_continue; ?>" id="button-payment-method" class="button" />
  </div>
</div>
<?php } else { ?>
<div class="buttons">
  <div class="right">
    <input type="button" value="<?php echo $button_continue; ?>" id="button-payment-method" class="button" />
  </div>
</div>
<?php } ?>


i jest powiązany z plikiem: /catalog/view/theme/default/template/checkout/checkout.tpl około 886 linii (javascript):

Kod: Zaznacz cały
$('#button-payment-method').live('click', function() {
   $.ajax({
      url: 'index.php?route=checkout/payment_method/validate',
      type: 'post',
      data: $('#payment-method input[type=\'radio\']:checked, #payment-method input[type=\'checkbox\']:checked, #payment-method textarea'),
         ...
         }
...
}


Nie znam Ajaxa, ale z tego co wyczytałem ta funkcja wskazuje na plik: /catalog/controler/checkout/payment_method.php (adres url)
W linii 157 tego pliku jest funkcja:

Kod: Zaznacz cały
public function validate() {....}


która prawdopodobnie dodaje wpis do bazy danych. Sprawdzałem dalej i zapytania SQL do bazy danych związane z zamówieniami są w pliku /catalog/model/chceckout/order.php

Teraz pytanie jak sprawić, żeby przycisk 'Potwierdź zamówienie' z kroku 6 przejął działanie 'Kontynuuj' z kroku 5 ?
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

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

Postprzez jang1200 » 21 sty 2015, o 07:44

Kod: Zaznacz cały
Błąd gdy klient nie zakończy zamówienia
- w/g "tfurcy" to nie jest błąd...

Tak to już jest w tym skrypciku od 1000 i jednej wersji...
Jego prawa ręka (ten gościu od wgmod'a) próbował to już w wersjach 1.3.x poprawiać ale nic jak widać nie wskurał...
To co znalazłeś ($text_agree) to jest potwierdzenie , że klint przeczytał regulamin.
To następne jest od potwierdzenia płatności a ostatnie od sprawdzania poprawności wprowadzonych przez klienta danych tzn. np. czy email jest poprawny, długość imienia , nazwiska i takie tam...

Jeśli nie jesteś informatykiem a chcesz to koniecznie mieć poprawione to musisz sobie takowego poszukać. Obawiam się, że tak poprzez forum nikt Ci nie poprawi połowy tego skryptu.

Jeśli chodzi o panel admina (wersji 1.5.x nigdy nie używałem) więc nie powiem Ci dokładnie gdzie to ale sprawdź - Sprzedaż - zamówienia i powinna być lista rozwijana Status - Brakujące zamówienia (inaczej możesz mieć przetłumaczone ale tak było w v. 1.4.x) i tam są te zamówienia.
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 » 21 sty 2015, o 13:52

Sprawdziłem i są brakujące zamówienia w:
'Sprzedaż' - 'Zamówienia' - w kolumnie 'Status' wybrać z listy 'Brakujące zamówienia' a potem przycisk 'Filtruj'.

Dobrze, że uwzględnili taką sytuację, przynajmniej są widoczne te zamówienia :-) Skryptu nie będę przerabiał, bo za dużo kodu do przeanalizowania, trzebaby dobrze opencarta znać. Myślałem ewentualnie o jakimś dodatku typu 'one page checkout', który nie będzie miał tego rozwiązania.

Dzięki za pomoc, pozdrawiam Lukon.
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

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

Postprzez lukon » 21 sty 2015, o 16:18

Jeszcze trochę testowałem tworzenie zamówienia.
Dotarłem do kroku 6 i przypomniałem, że muszę zmienić płatność w kroku 5 wciskając 'Modyfikuj'. Zrobiłem tak kilka razy i zamówienie potwierdziłem ostatecznie przyciskiem 'Potwierdź zamówienie'. Miało ono numer 4, a wcześniejsze trzy były w bazie danych jako bezużyteczne. Zauważyłem też, że mają one 'order_status_id' = 0.
Moim zdaniem to jest poważny błąd, dziwne że to tak zostawili. Ciekawe czy w wersji 2.x już go zlikwidowali.
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

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

Postprzez jang1200 » 21 sty 2015, o 23:11

lukon napisał(a):Ciekawe czy w wersji 2.x już go zlikwidowali.

Cóż pomarzyć piękna rzecz :lol:
http://demo.opencart.com/admin/ demo - demo
wchodzisz w orders i wybierasz ... jak myślisz co ? ... -> "Missing orders" :roll:
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 gadas » 24 sty 2015, o 11:45

jang1200 napisał(a):
lukon napisał(a):Ciekawe czy w wersji 2.x już go zlikwidowali.

Cóż pomarzyć piękna rzecz :lol:
http://demo.opencart.com/admin/ demo - demo
wchodzisz w orders i wybierasz ... jak myślisz co ? ... -> "Missing orders" :roll:

Cześć jang1200 witaj po latach.
gadas
 
Posty: 240
Dołączył(a): 13 maja 2010, o 17:03

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

Postprzez lukon » 24 sty 2015, o 17:14

jang1200 napisał(a):Cóż pomarzyć piękna rzecz
http://demo.opencart.com/admin/ demo - demo
wchodzisz w orders i wybierasz ... jak myślisz co ? ... -> "Missing orders"


Jak oni mogli to tak zostawić :evil:
Ja się nie poddaję, próbuję dalej. Jestem na dobrej drodze, żeby rozwiązać ten BŁĄD :)
lukon
 
Posty: 6
Dołączył(a): 14 sty 2015, o 12:05

Następna 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

cron