25 Aralık 2020

opencart 3.x sürümlerinde ücretsiz ödeme ile alınan siparişler hatası

ile Yusuf Sayı

Merhaba arkadaşlar,

Opencart 3.x sürümlerinde varolan bu hata nedeniyle, müşterinize hediye bakiye vermeniz sonucu, 0,00TL ile ödeme yapıp siparişini oluşturduğunda bu sipariş admin paneli siparişler ekranında görünmemektedir. Eksik siparişlerde görünüyor. Bunun nedeni, admin > eklentiler > ödeme metodları > ücretsiz ödeme ayarının belirlediğiniz “sipariş durumunu” kaydetmemesi nedeni. Siz buradan istediğiniz bir sipariş durumunu seçiyorsunuz, kaydediyorsunuz fakat tekrar aynı ayara girdiğinizde kaydetmemiş olarak görünüyor. Sipariş durumunu belirleyemediğiniz için, müşteri ücretsiz ödeme ile sipariş verdiğinde eksik siparişlere düşüyor. Bunu basit bir yöntemle düzeltebilirsiniz. Opencart 3.0.3.2 versiyonunda denedim ve sorunum düzeldi.

Bu düzeltme işlemini denemeden önce veritabanı ve değişiklik yapacağını dosyaları yedeklemeyi unutmayınız.

İşlem aşamaları:

1- Öncelikle admin > eklentiler > ödeme metodlarından “ücretsiz ödemeyi” kaldırınız. Kırmızı butona basarak.

2- FTP yöneticiniz ile admin/controller/extension/payment/free_checkout.php dosyasını notepad++ ile açınız.

3- Aşağıdaki kod kümesini bulunuz:

if (isset($this->request->post['free_checkout_order_status_id'])) { $data['free_checkout_order_status_id'] = $this->request->post['free_checkout_order_status_id']; } else { $data['free_checkout_order_status_id'] = $this->config->get('free_checkout_order_status_id'); }

4- Aşağıdaki kod kümesi ile değiştiriniz ve dosyayı kaydedip kapatınız:

if (isset($this->request->post['payment_free_checkout_order_status_id'])) {
$data['payment_free_checkout_order_status_id'] = $this->request->post['payment_free_checkout_order_status_id'];
} else {
$data['payment_free_checkout_order_status_id'] = $this->config->get('payment_free_checkout_order_status_id');
}

5- admin/view/template/extension/payment/free_checkout.twig dosyasını notepad++ ile açınız.

6- Aşağıdaki kod kümesini bulunuz:

<select name="free_checkout_order_status_id" id="input-order-status" class="form-control">
{% for order_status in order_statuses %}
{% if order_status.order_status_id == free_checkout_order_status_id %}
<option value="{{ order_status.order_status_id }}" selected="selected">{{ order_status.name }}</option>
{% else %}
<option value="{{ order_status.order_status_id }}">{{ order_status.name }}</option>
{% endif %}
{% endfor %}

7- Aşağıdaki kod kümesi ile değiştirip, kaydedip kapatınız:

<select name="payment_free_checkout_order_status_id" id="input-order-status" class="form-control">
{% for order_status in order_statuses %}
{% if order_status.order_status_id == payment_free_checkout_order_status_id %}
<option value="{{ order_status.order_status_id }}" selected="selected">{{ order_status.name }}</option>
{% else %}
<option value="{{ order_status.order_status_id }}">{{ order_status.name }}</option>
{% endif %}
{% endfor %}

8- Eklentiler > modifikasyonları “yenile” yapınız.

9- Admin paneli sağ üst taraftan tema ve sass önbelleğini temizleyiniz.

10- Ödeme metodlarından “ücretsiz ödemeyi” tekrar yükleyiniz.

11- Ödeme metodunuza girip, sipariş durumunu belirleyip kaydedin.

İşlemler sonrasında belirlediğiniz sipariş durumunun sisteme artık kayıt edildiğini göreceksiniz. Varsayılan sipariş durumunuza kaydedin. Artık müşterileriniz hesap bakiyeleri ile ödeme yaptığında admin panelinde siparişler ekranına düşecektir. Kolay gelsin 🙂