1. 【新增】售后单售后原因类型支持搜索

2. 【新增】手工创建订单折扣可输入正数

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

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

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

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

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

8. 【修复】基础物料分类管理问题
This commit is contained in:
chenping
2026-04-01 11:59:17 +08:00
parent 9341122827
commit 61783b7d01
754 changed files with 46179 additions and 5700 deletions

View 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' => '补寄发货成功');
}
}