mirror of
https://gitee.com/ShopeX/OMS
synced 2026-04-19 03:35:28 +08:00
1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数 3. 【优化】盘点申请单确认 4. 【修复】采购退货单模拟出库失败问题 5. 【新增】订单金额客户实付与结算金额 6. 【优化】仓库发货统计报表物料名称显示 7. 【优化】自有仓储虚拟发货逻辑 8. 【修复】基础物料分类管理问题
This commit is contained in:
94
app/ome/lib/event/trigger/reshipping/delivery.php
Normal file
94
app/ome/lib/event/trigger/reshipping/delivery.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* 补寄发货Event Trigger
|
||||
* 监听发货完成事件,自动提交补寄发货接口
|
||||
*/
|
||||
class ome_event_trigger_reshipping_delivery
|
||||
{
|
||||
/**
|
||||
* 发货完成后的处理
|
||||
* 在发货完成事件中调用此方法
|
||||
*
|
||||
* @param array $deliveryData 发货单数据
|
||||
* @return array
|
||||
*/
|
||||
public function afterDelivery($deliveryId)
|
||||
{
|
||||
$deliveryModel = app::get('ome')->model('delivery');
|
||||
$orderModel = app::get('ome')->model('orders');
|
||||
$reshippingModel = app::get('ome')->model('return_reshipping');
|
||||
// 获取发货单信息
|
||||
$delivery = $deliveryModel->db_dump(array('delivery_id' => $deliveryId), 'delivery_id,delivery_bn,logi_no,logi_id,logi_name');
|
||||
if (empty($delivery)) {
|
||||
return array('rsp' => 'fail', 'msg' => '发货单不存在');
|
||||
}
|
||||
// 通过 delivery_bn 获取 delivery_id,并从 delivery_order 表获取 order_id
|
||||
$deliveryOrderModel = app::get('ome')->model('delivery_order');
|
||||
$delivery_order = $deliveryOrderModel->db_dump(array('delivery_id' => $delivery['delivery_id']), 'order_id');
|
||||
if (empty($delivery_order) || empty($delivery_order['order_id'])) {
|
||||
return array('rsp' => 'fail', 'msg' => '未找到对应订单ID');
|
||||
}
|
||||
$delivery['order_id'] = $delivery_order['order_id'];
|
||||
// 获取订单信息
|
||||
$order = $orderModel->db_dump($delivery['order_id'], 'order_id,order_bn,order_type');
|
||||
if (empty($order)) {
|
||||
return array('rsp' => 'fail', 'msg' => '订单不存在');
|
||||
}
|
||||
|
||||
// 判断是否为补寄订单(order_type=bufa)
|
||||
if ($order['order_type'] != 'bufa') {
|
||||
return array('rsp' => 'succ', 'msg' => '不是补寄订单,无需处理');
|
||||
}
|
||||
|
||||
// 通过订单号查找补寄申请单(订单号使用补寄申请单号)
|
||||
$reshipping = $reshippingModel->db_dump(array('reshipping_bn' => $order['order_bn']), 'reshipping_id,reshipping_bn,shop_id,status,logi_no');
|
||||
if (empty($reshipping)) {
|
||||
return array('rsp' => 'fail', 'msg' => '补寄申请单不存在');
|
||||
}
|
||||
|
||||
// 检查状态(只有等待卖家发货状态才能发货)
|
||||
if (!in_array($reshipping['status'], array('1', '2'))) {
|
||||
return array('rsp' => 'succ', 'msg' => '补寄申请单状态不正确,无需处理');
|
||||
}
|
||||
|
||||
// 获取物流公司信息
|
||||
$logiModel = app::get('ome')->model('dly_corp');
|
||||
$logi = $logiModel->db_dump(array('corp_id' => $delivery['logi_id']), 'corp_id,type,name');
|
||||
|
||||
// 调用补寄发货接口
|
||||
$apiParams = array(
|
||||
'dispute_id' => $reshipping['reshipping_bn'],
|
||||
'logistics_no' => $delivery['logi_no'],
|
||||
'logistics_type' => '200', // 200表示快递
|
||||
'company_name' => $logi ? $logi['name'] : $delivery['logi_name'],
|
||||
'company_code' => $logi ? $logi['type'] : '',
|
||||
'order_id' => $order['order_id'],
|
||||
'order_bn' => $order['order_bn'],
|
||||
);
|
||||
if(empty($reshipping['logi_no'])) {
|
||||
// 更新补寄申请单字段
|
||||
$updateData = array(
|
||||
'status' => '2', // 等待买家收货
|
||||
'logi_name' => $apiParams['company_name'],
|
||||
'logi_no' => $apiParams['logistics_no'],
|
||||
'logi_id' => $delivery['logi_id'],
|
||||
);
|
||||
$rs = $reshippingModel->update($updateData, array('reshipping_id' => $reshipping['reshipping_id'], 'status' => ['1', '2']));
|
||||
if(!is_bool($rs)) {
|
||||
// 记录操作日志
|
||||
$operationLogModel = app::get('ome')->model('operation_log');
|
||||
$memo = '补寄发货,物流单号:' . $apiParams['logistics_no'];
|
||||
$operationLogModel->write_log('return_reshipping@ome', $reshipping['reshipping_id'], $memo);
|
||||
}
|
||||
}
|
||||
|
||||
$apiResult = kernel::single('erpapi_router_request')->set('shop', $reshipping['shop_id'])->reshipping_consigngoods($apiParams);
|
||||
|
||||
if ($apiResult['rsp'] == 'fail') {
|
||||
return array('rsp' => 'fail', 'msg' => $memo);
|
||||
}
|
||||
|
||||
return array('rsp' => 'succ', 'msg' => '补寄发货成功');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user