上次给大家修复了一个dt商城的逻辑问题,后来修改为付款后,就减去库存。
这次客户又发现了一个问题,客户反馈的问题如下:
是否在支付时检查一下卖家的实际库存是否大于要支付的库存。
卖家在商城上实际库存90吨的情况下,出现总计大于90吨的订单,请测试一下如下情况:
购买过程中,设定ABC三个角色,A是卖家,BC是买家,卖家A发布100吨库存,已售出10吨,现余90吨库存,买家B下单买了10吨,卖家A进行了确认,但是B未进行付款,买家C下单买了90吨,卖家A进行了确认,买家C付款后,买家B限于也进行了付款,卖家待发货订单中出现了网上这两个买家支付前库存剩余90吨,支付后待发货90吨+10吨,如何规避这种情况
这个问题,我测试后发现,确实是真实存在的,修改的方法就是在客户的付款页面做一个判断,如果客户购买的商品数量大于库存的时候,就提示客户不能付款,反之则能付款。
修改方法如下:
打开\template\default\member\trade.htm
在订单的付款页面,大约是470行添加代码
<!–{php $tags=tag(“moduleid=16&condition=itemid=$mallid&template=null”);}–>
{loop $tags $t}
{if $td[number]>$t[amount]}
不能付款
{else}
可以付款
{/if}
{/loop}
上面就是代码的具体写法,第一步是根据客户购买的商品的id获取当前商品的库存,然后跟客户的购买数量进行对比,我使用的代码是
<!–{php $tags=tag(“moduleid=16&condition=itemid=$mallid&template=null”);}–>
{loop $tags $t}
{if $td[number]>$t[amount]}
<tr id=”payword” style=”display:none;”>
<td class=”tl”><span class=”f_red”>*</span> 无法付款</td>
<td class=”tr”>对不起,您付款晚了一步,没有足够的库存给您发货了!</td>
</tr>
{else}
<tr id=”payword” style=”display:none;”>
<td class=”tl”><span class=”f_red”>*</span> 支付密码</td>
<td class=”tr”>{template ‘password’, ‘chip’} <span id=”dpassword” class=”f_red”></span><a href=”/member/send.php?action=payword”><font color=”#FF0000″>修改支付密码</font></a></td>
</tr>
{/if}
{/loop}
这样基本保存了原来的风格。截图如下
团购那边,应该都是一个方法,但是因为表结构不同,所以还是贴一下代码吧
修改的文件\template\default\member\group.htm
<!–{php $tags=tag(“moduleid=17&condition=itemid=$gid&template=null”);}–>
{loop $tags $t}
{if $td[number]>($t[amount]-$t[sales])}
<tr id=”payword” style=”display:none;”>
<td class=”tl”><span class=”f_red”>*</span> 无法付款</td>
<td class=”tr”>对不起,您付款晚了一步,没有足够的库存给您发货了! </td>
</tr>
{else}
<tr id=”payword” style=”display:none;”>
<td class=”tl”><span class=”f_red”>*</span> 支付密码</td>
<td class=”tr”>{template ‘password’, ‘chip’} <span id=”dpassword” class=”f_red”></span><a href=”/member/send.php?action=payword”><font color=”#FF0000″>修改支付密码</font></td>
</tr>
{/if}
{/loop}
区别在于团购商品的id为 gid,而且模块编号为17.而且计算库存,使用的是$t[amount]-$t[sales] 商品添加时候库存减去销量得出的实际库存。