您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
OpenCart 礼品卡券功能介绍及使用教程 (voucher)及历史订单不显示问题的修复
发布时间:2024-10-21 12:32:54编辑:雪饮阅读()
-
礼品卡券的管理配置
关于opencart的礼品卡券功能,位于Sales=>Gift Vouchers=>Gift Vouchers
这里我们可以编辑一个礼品卡券或新增一个礼品卡券,在Edit Gift Voucher界面
Code是必须的,用于在checkout界面类似优惠券券码那样使用的。
From Name应是发送邮件的时候发发件人名称,From-E-Mail则是对应该发件人的邮箱地址。
To Name则是接收人的收件人,而To E-Mail就是接收人的邮件地址。
这两个暂时还不清楚是干嘛用的。
Theme就是该礼品卡券所属主题,该下拉的值是从Sales=>Gift Vouchers=>Vouchers Themes里面来的。那么我暂时就选择Birthday了。
Message暂时就先不填写了。
Amount就是该礼品券的面值。
到这里我大概是明白了,可能是礼品卡券可以直接通过券码使用,也可以通过系统派发给某个用户吧,想象一个场景,在某些场合里面可以以朋友过生日然后该场合负责人可以允许你给你的朋友点一首歌,然后负责人会通过广播说你好xxx,你的朋友yyy为你点了一首歌曲zzz,为你庆生。
那么这样的话就不难理解上面的收件人和发件人了,正好对应于这里的你朋友和你,而歌曲则是那个礼品卡券。
最后就是status自然是设置为enabled了。然后save了。
礼品卡券的使用
然后我们这里暂时先不尝试上面所说的类似点歌的那种场合(该场合可能只是预设,我发现opencart好像有很多预设但未必就完全实现,例如前面的多规格商品的问题),只说在checkout的时候直接使用券码的情况。
那么我们再来买iphone,来到checkout中在Use Gift Certificate中你可以在Enter your gift certificate code here这里输入刚才的礼品券码。
然后点击Apply Gift Certificate按钮后就可以发现在结账清单里面多了如
Gift Certificate (220807): $-20.00
因为刚才我们的这个220807这个code对应的礼品卡券的面值amount正好是设置的20.
修复历史订单不显示问题
之前有说过可能是之前修改了邮件发送的逻辑导致下单后在opencart前台用户的Account=》Order History里面查看不到订单列表。
那么实际上我排查到这里的实际sql如:
SELECT
o.order_id,
o.firstname,
o.lastname,
os.NAME AS STATUS,
o.date_added,
o.total,
o.currency_code,
o.currency_value
FROM
`oc_order` o
LEFT JOIN oc_order_status os ON ( o.order_status_id = os.order_status_id )
WHERE
o.customer_id = '1'
AND o.store_id = '0'
AND os.language_id = '1'
ORDER BY
o.order_id DESC
LIMIT 0,
10;
这句是关键
o.order_status_id = os.order_status_id
那么我们这里最后实际进行订单确认的最后一步用的支付方式是Free Checkout。
其核心代码位于如
X:\www\wwwroot\www.opencart3039.com\catalog\controller\extension\payment\ free_checkout.php里面的confirm方法的这一句
$this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('payment_free_checkout_order_status_id'));
这里两个参数,第一个参数是订单id,第二个参数是状态id,这个状态是在另外一个表里面存储的,每个状态id都有一个对应的状态描述字段。
这里第二个参数传递的值是1那么我的排查结果是oc_order这个表中的order_status_id的值确并不是1,也就是说,可能是觉得这是0元单就不计入订单列表了?不改状态了,实际的值就是0,所以导致上面的sql没有成功查询到结果。
那么我感觉就是内部的什么逻辑导致这条sql没有被正确执行。
所以我在$this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('payment_free_checkout_order_status_id'));
这句之前增加了
$order_id=$this->session->data['order_id'];
$order_status_id=$this->config->get('payment_free_checkout_order_status_id');
$this->db->query("UPDATE `" . DB_PREFIX . "order` SET order_status_id = '" . (int)$order_status_id . "', date_modified = NOW() WHERE order_id = '" . (int)$order_id . "'");
然后下次进行Free Checkout下单后Order History就ok了,有了订单历史记录了,神奇不神奇。。。
本期词汇
Vouchers 抵用券(voucher 的复数)
Certificate 证明,文凭
关键字词:opencart,礼品卡券,voucher,历史,订单,不显示
相关文章
- OpenCart 优惠券介绍及使用教程 (coupon)
- OpenCart 积分系统介绍及使用方法 (rewards)
- OpenCart 如何安装和配置免运费快递方式 (free shippi
- OpenCart 按商品件数收费配送方式安装配置方法 (item)
- OpenCart 按重量计费发货方式安装配置方法 (weight)
- OpenCart 发货方式之固定运费安装配置方法 (flat)
- OpenCart 如何安装和设置支付宝付款方式 (payment met
- OpenCart 邮件设置及发不出邮件常见问题 (mail)( Pass
- OpenCart 如何开启和设置网站伪静态 (seo rewrite)?
- OpenCart 后台管理员用户和权限设置 (user/permission