我想在管理中为客户创建订单。客户有一定的信用(让我们说200美元)。订单总计的计算方式与order total - customer's credit = new order total
相同。
问题是客户的信用额度在创建订单后没有变化。
例如:
$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 :(得分: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 事情已经完成了!