Files
OMS/app/ome/lib/event/trigger/reshipping/delivery.php
chenping 61783b7d01 1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数

3. 【优化】盘点申请单确认

4. 【修复】采购退货单模拟出库失败问题

5. 【新增】订单金额客户实付与结算金额

6. 【优化】仓库发货统计报表物料名称显示

7. 【优化】自有仓储虚拟发货逻辑

8. 【修复】基础物料分类管理问题
2026-04-01 11:59:17 +08:00

95 lines
4.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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' => '补寄发货成功');
}
}