2014-10-26 34 views
2

我想爲管理中的客戶創建訂單。客戶有一定的信用(比如說200美元)。訂單總額計算如order total - customer's credit = new order total關於opencart店鋪積分的問題1.5.6

問題是客戶的信用在創建訂單後沒有改變。

例如:

  • 的訂單總額爲:$500
  • 信用是:$200
  • 那麼訂單總額爲:$ 500 - $ $ 200 = $300
  • ,但客戶的信用仍然是: $200

有沒有其他人 一樣的問題?


我嘗試更改該訂單的狀態,包括處理和設置,但它不起作用。

客戶信息頁面中的交易沒有變化。

我檢查了後端代碼 - 沒有代碼可以與oc_customer_transaction表一起運行。


在前端,存在/catalog/model/total/credit.php

public function confirm($order_info, $order_total) { 
    $this->language->load('total/credit'); 
    if ($order_info['customer_id']) { 
      $this->db->query("INSERT INTO " . DB_PREFIX . "customer_transaction SET 
        customer_id = '" . (int)$order_info['customer_id'] . "', 
        order_id = '" . (int)$order_info['order_id'] . "', 
        description = '" . $this->db->escape(
         sprintf($this->language->get('text_order_id'), 
         (int)$order_info['order_id'])) . "', 
        amount = '" . (float)$order_total['value'] . "', 
        date_added = NOW()"); 

    } 
} 

它在結帳過程稱爲重新計算客戶的信貸餘額的功能。但是我在後端沒有找到這樣的代碼。

+0

歡迎來到Stackoverflow。我相信你可以使用一些小的幫助和解釋,它是如何發生在這裏的,因此,如果你會發現幾分鐘閱讀[help section](http://stackoverflow.com/help),或者先參加[tour](http://stackoverflow.com/tour)。對當前問題的小提示:您的帖子包含三個不同的問題,這使得它*太寬泛*並且可能會被關閉。你應該將這些問題分解成單獨的問題(並且將來也會這樣做)。 – shadyyx 2014-10-27 08:37:04

回答

0

我已經解決了這個問題。

代碼:

$this->db->query("INSERT INTO " . DB_PREFIX . "customer_transaction SET 
    customer_id = '" . (int)$order_info['customer_id'] . "', 
    order_id = '" . (int)$order_info['order_id'] . "', 
    description = '" . $this->db->escape(
     sprintf($this->language->get('text_order_id'), 
     (int)$order_info['order_id'])) . "', 
    amount = '" . (float)$order_total['value'] . "', 
    date_added = NOW()"); 

只需添加信用計算代碼時,在下列場所:

1./admin/model/sale/order.php addOrder方法

一個。當您將產品添加到後端的新客戶訂單中時,系統會向前端發送請求(/catalog/checkout/mannual.php索引),並計算訂單總額(例如:小計,貸項,運費,總額)。在此請求後,頁面中的訂單總數將被刷新

b。當您保存訂單時,(admin/model/sale/order.php)addOrder方法將最終被調用。你只需要將上面的代碼添加到該函數。

insert into..... customer_transaction means use the credit 

2./admin/model/sale/order.php editOrder方法

一個。當您編輯訂單時,總計中的每件商品都會更改。所以,您應該先刪除您用於此訂單的所有信用。

刪除*從oc_customer_transaction其中 '的order_id'= $ ORDER_ID

灣由於在步驟1中已經重新計算了每項總計(涉及信貸),所以此方法將收到新的信用額度。只是代碼打擊插入新量

3.you並不需要改變管理/模型/銷售/ order.php deleteOrder方法 因爲它刪除所有總量,包括項目在數據表中oc_customer_transaction

東西完成了!