mirror of
https://gitee.com/ShopeX/OMS
synced 2026-04-26 10:45:43 +08:00
1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数 3. 【优化】盘点申请单确认 4. 【修复】采购退货单模拟出库失败问题 5. 【新增】订单金额客户实付与结算金额 6. 【优化】仓库发货统计报表物料名称显示 7. 【优化】自有仓储虚拟发货逻辑 8. 【修复】基础物料分类管理问题
This commit is contained in:
142
app/monitor/lib/notice/refund/apply.php
Normal file
142
app/monitor/lib/notice/refund/apply.php
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
class monitor_notice_refund_apply
|
||||
{
|
||||
public function erpapi_create($refundApplyId) {
|
||||
$refundApplyModel = app::get('ome')->model('refund_apply');
|
||||
$refundApply = $refundApplyModel->db_dump($refundApplyId, 'order_id, refund_apply_bn, money,product_data');
|
||||
if (!$refundApply) return [false, ['msg' => '退款申请单不存在']];
|
||||
|
||||
$orderModel = app::get('ome')->model('orders');
|
||||
$order = $orderModel->db_dump($refundApply['order_id'], 'order_id, order_bn, ship_status');
|
||||
if (!$order) return [false, ['msg' => '订单不存在']];
|
||||
$notifyData = [
|
||||
'order_bn' => $order['order_bn'],
|
||||
'refund_apply_bn' => $refundApply['refund_apply_bn'],
|
||||
'refund_fee' => $refundApply['money']
|
||||
];
|
||||
if ($order['ship_status'] == '1') {
|
||||
kernel::single('monitor_event_notify')->addNotify('order_ship_refund_apply', $notifyData);
|
||||
return [true, ['msg' => '订单已发货退款发起申请']];
|
||||
}
|
||||
|
||||
$deliveryOrderModel = app::get('ome')->model('delivery_order');
|
||||
$deliverys = $deliveryOrderModel->getList('delivery_id', array('order_id' => $order['order_id']));
|
||||
|
||||
if (empty($deliverys)) {
|
||||
kernel::single('monitor_event_notify')->addNotify('order_unship_refund_apply', $notifyData);
|
||||
return [false, ['msg' => '没有发货单']];
|
||||
}
|
||||
$arrProduct = unserialize($refundApply['product_data']);
|
||||
$order_item_id = is_array($arrProduct) ? array_column($arrProduct, 'order_item_id') : [];
|
||||
$deliveryModel = app::get('ome')->model('delivery');
|
||||
$deliveryList = $deliveryModel->getList('delivery_id,delivery_bn, sync_msg, status', array('delivery_id' => array_column($deliverys, 'delivery_id'), 'parent_id'=>0));
|
||||
$didItems = app::get('ome')->model('delivery_items_detail')->getList('delivery_id,order_id,order_item_id', ['delivery_id'=>array_column($deliveryList, 'delivery_id')]);
|
||||
|
||||
foreach ($deliveryList as $delivery) {
|
||||
$needBack = false;
|
||||
if($order_item_id) {
|
||||
foreach ($didItems as $didItem) {
|
||||
if ($didItem['delivery_id'] == $delivery['delivery_id'] && in_array($didItem['order_item_id'], $order_item_id)) {
|
||||
$needBack = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$needBack = true;
|
||||
}
|
||||
if(!$needBack) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($delivery['status'], ['ready','progress'])) {
|
||||
$failureMsg = $delivery['sync_msg'] ?: '未知原因';
|
||||
kernel::single('monitor_event_notify')->addNotify('order_refund_apply_reback_fail', array_merge($notifyData, [
|
||||
'msg' => $failureMsg,
|
||||
'delivery_bn' => $delivery['delivery_bn']
|
||||
]));
|
||||
return [false, ['msg' => '发货单撤销失败']];
|
||||
}
|
||||
if (in_array($delivery['status'], ['succ'])) {
|
||||
kernel::single('monitor_event_notify')->addNotify('order_part_ship_refund_apply', array_merge($notifyData, [
|
||||
'delivery_bn' => $delivery['delivery_bn']
|
||||
]));
|
||||
return [false, ['msg' => '发货单部分发货']];
|
||||
}
|
||||
}
|
||||
|
||||
kernel::single('monitor_event_notify')->addNotify('order_refund_apply_reback_succ', $notifyData);
|
||||
return [true, ['msg' => '发货单撤销成功']];
|
||||
}
|
||||
|
||||
public function erpapi_refund($refundApplyId) {
|
||||
$refundApplyModel = app::get('ome')->model('refund_apply');
|
||||
$refundApply = $refundApplyModel->db_dump($refundApplyId, 'order_id, refund_apply_bn, money, product_data');
|
||||
if (!$refundApply) return [false, ['msg' => '退款申请单不存在']];
|
||||
|
||||
$orderModel = app::get('ome')->model('orders');
|
||||
$order = $orderModel->db_dump($refundApply['order_id'], 'order_id, order_bn, ship_status');
|
||||
if (!$order) return [false, ['msg' => '订单不存在']];
|
||||
|
||||
$notifyData = [
|
||||
'order_bn' => $order['order_bn'],
|
||||
'refund_apply_bn' => $refundApply['refund_apply_bn'],
|
||||
'refund_fee' => $refundApply['money']
|
||||
];
|
||||
|
||||
// 获取订单关联的发货单
|
||||
$deliveryOrderModel = app::get('ome')->model('delivery_order');
|
||||
$deliverys = $deliveryOrderModel->getList('delivery_id', array('order_id' => $order['order_id']));
|
||||
|
||||
if (empty($deliverys)) {
|
||||
return [true, ['msg' => '没有发货单']];
|
||||
}
|
||||
|
||||
// 解析退款申请的商品数据,获取 order_item_id
|
||||
$arrProduct = unserialize($refundApply['product_data']);
|
||||
$order_item_id = is_array($arrProduct) ? array_column($arrProduct, 'order_item_id') : [];
|
||||
|
||||
// 获取发货单详细信息
|
||||
$deliveryModel = app::get('ome')->model('delivery');
|
||||
$deliveryList = $deliveryModel->getList('delivery_id, delivery_bn, sync_msg, status', array(
|
||||
'delivery_id' => array_column($deliverys, 'delivery_id'),
|
||||
'parent_id' => 0
|
||||
));
|
||||
|
||||
// 获取发货单明细信息
|
||||
$didItems = app::get('ome')->model('delivery_items_detail')->getList('delivery_id, order_id, order_item_id', [
|
||||
'delivery_id' => array_column($deliveryList, 'delivery_id')
|
||||
]);
|
||||
|
||||
// 仅检查 ready 和 progress 状态的发货单
|
||||
foreach ($deliveryList as $delivery) {
|
||||
if (!in_array($delivery['status'], ['ready', 'progress', 'succ'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$needBack = false;
|
||||
|
||||
// 优先使用 order_item_id 匹配
|
||||
if ($order_item_id) {
|
||||
foreach ($didItems as $didItem) {
|
||||
if ($didItem['delivery_id'] == $delivery['delivery_id'] && in_array($didItem['order_item_id'], $order_item_id)) {
|
||||
$needBack = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 如果没有 order_item_id,则匹配所有发货单
|
||||
$needBack = true;
|
||||
}
|
||||
|
||||
if ($needBack) {
|
||||
$failureMsg = $delivery['sync_msg'] ?: ($delivery['status'] == 'succ' ? '发货单已发货' : '未知原因');
|
||||
kernel::single('monitor_event_notify')->addNotify('order_refund_apply_reback_fail', array_merge($notifyData, [
|
||||
'msg' => $failureMsg,
|
||||
'delivery_bn' => $delivery['delivery_bn']
|
||||
]));
|
||||
return [false, ['msg' => '发货单撤销失败']];
|
||||
}
|
||||
}
|
||||
return [true, ['msg' => '发货单撤销成功']];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user