关于opencart 1.5.6商店信用的问题

时间:2014-10-26 15:13:38

标签: php opencart

我想在管理中为客户创建订单。客户有一定的信用(让我们说200美元)。订单总计的计算方式与order total - customer's credit = new order total相同。

问题是客户的信用额度在创建订单后没有变化。

例如:

  • 订单总额为:$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()");

    }
}

在结账过程中调用它来重新计算客户的贷方余额。但是我还没有在后端找到这样的代码。

1 个答案:

答案 0 :(得分: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索引)并计算订单总额(例如:小计,贷记,运费,总计)。在此请求之后,页面中的订单总数将被刷新

湾保存订单时,最终将调用(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.您无需更改admin / model / sale / order.php deleteOrder方法      因为它删除了所有总计,所以在数据表oc_customer_transaction

中包含item 事情已经完成了!