1.发货判断
发货类型:整单发货,拆单发货。
判断:
1.是否订单存在
2.是否是待出库状态
3.获取配送员信息是否可配送
4.订单信息是否已支付
5.登录用户是否有发货权限
2.创建出库单:
1.获取订单,获取订单来源渠道,创建出库单信息,绑定订单号
2.获取订单是否上锁(Threading.ReaderWriterLockSlim.EnterWriteLock),判断订单是否被其他用户占用
3.订单创建出库单流程:(事务在此包裹System.TransactionScope.TransactionScope)
a).选择仓库
b).判断订单状态是否可创建出库单
c).判断订单类型:寄付:到付
d).获取订单收货地址:邮寄:自提
e).修改状态:待创建配送单,状态为待配送,发票在第一张出库单上
f).计算出库单实际销售金额,计算零售单价,计算折扣金额
1.获取订单明细所有商品信息,折扣信息,判断当前订单明细编号已创建分配出库的出库单明细
2.减去运费后,计算销售金额,折扣金额,毛利金额,需分摊金额
3.循环出库商品,最后一个商品出库时:订单商品数量==已出库商品数
g).出库单主表上添加记录,出库单子表添加记录
h).推送出库信息,数量给WMS,推送成功,更新数据库数量
i).更新订单主表状态为已出库:部分出库,待出库
4.解除锁,将已处理的订单在任务池删除,并写进订单事务日志表
3.创建配送单
1.获取出库单信息,订单信息,商品信息,仓库信息,检查时间戳是否改变,出库单是否被别人改变
2.获取订单所有商品库存信息,库存是否充足
3.修改出库单状态为待拣货,更新库存数量
4.获取订单配送方式,配送单表上添加记录
发货状态:创建配送单号后为已发货。
前端确认发货按钮事件
1.获取仓库信息,配送员信息,配送方式信息,配送单明细
2.判断配送单能否正常,判断快递单号填写是否正确,有无被占用
3.配送单作废会生成出库单对应的入库单,再次将此入库单加入配送,检查此入库单是否已经完成入库
4.创建成功配送单,把物流信息填入订单的物流页面