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

@@ -24,29 +24,12 @@ class ome_ctl_admin_consign extends desktop_controller{
$mdl_order = $this->app->model('orders');
//未发货分两部分sync=none+线上店铺 OR ship_status=0+线下店铺
$shops = $this->app->model('shop')->getList('shop_id,node_id');
$bindShop = $unbindShop = array();
foreach ($shops as $key=>$shop) {
if ($shop['node_id']) {
$bindShop[] = $shop['shop_id'];
} else {
$unbindShop[] = $shop['shop_id'];
}
}
$sync_none_filter = array('ship_status' => '0');
if ($bindShop && $unbindShop) {
$sync_none_filter['filter_sql'] = '(({table}sync="none" AND {table}shop_id in("'.implode('","',$bindShop).'"))'.' OR '.'({table}ship_status="0" AND shop_id in("'.implode('","',$unbindShop).'")))';
} elseif ($bindShop) {
$sync_none_filter['filter_sql'] = '{table}sync="none" AND {table}shop_id in("'.implode('","',$bindShop).'")';
} elseif ($unbindShop) {
$sync_none_filter['filter_sql'] = '{table}ship_status="0" AND {table}shop_id in("'.implode('","',$unbindShop).'")';
}
$base_filter = $this->getFilters();
$sub_menu[0] = array('label' => app::get('base')->_('发货失败'), 'filter' => array_merge($base_filter, array('createway'=>'matrix','sync' => 'fail')), 'optional' => false,'addon' => '_FILTER_POINT_');
//$sub_menu[1] = array('label' => app::get('base')->_('待发货'), 'filter' => array_merge($base_filter, $sync_none_filter), 'optional' => false);
$sub_menu[1] = array('label' => app::get('base')->_('换货订单回写失败'),'filter' => array_merge($base_filter, array('createway' => array('after'),'sync'=>'fail','order_type'=>'normal')),'optional' => false);
$sub_menu[2] = array('label' => app::get('base')->_('回写未发起'),'filter' => array_merge($base_filter,array('createway' => 'matrix','sync' => 'none' ,'ship_status' => '1')),'optional' => false);
$sub_menu[3] = array('label' => app::get('base')->_('发货中'), 'filter' => array_merge($base_filter, array('createway'=>'matrix','sync' => 'run')), 'optional' => false);
$sub_menu[4] = array('label' => app::get('base')->_('全部'), 'filter' => $base_filter, 'optional' => false);
@@ -55,13 +38,14 @@ class ome_ctl_admin_consign extends desktop_controller{
//$sub_menu[7] = array('label' => app::get('base')->_('前端已发货'), 'filter' => array_merge($base_filter, array('createway' => 'matrix','sync' => 'fail','sync_fail_type' => 'shipped')), 'optional' => false);
$sub_menu[8] = array('label' => app::get('base')->_('发货成功'), 'filter' => array_merge($base_filter, array('createway' => 'matrix','sync' => 'succ')), 'optional' => false);
$sub_menu[9] = array('label' => app::get('base')->_('不予回写'),'filter' => array_merge($base_filter, array('createway' => array('local','import'))),'optional' => false);
$sub_menu[10] = array('label' => app::get('base')->_('换货订单回写失败'),'filter' => array_merge($base_filter, array('createway' => array('after'),'sync'=>'fail')),'optional' => false);
$sub_menu[11] = array('label' => app::get('base')->_('物流错误'), 'filter' => array_merge($base_filter, array('createway'=>'matrix', 'sync'=>'fail', 'sync_fail_type'=>'logistics')), 'optional'=>false);
$sub_menu[12] = array('label' => app::get('base')->_('补寄申请单发货失败'), 'filter' => array_merge($base_filter, array('createway'=>'after', 'sync'=>'fail', 'order_type'=>'bufa')), 'optional'=>false);
foreach ($sub_menu as $k => $v) {
$sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null;
$sub_menu[$k]['addon'] = $v['addon'] ? $v['addon'] : $mdl_order->viewcount($v['filter']);
$sub_menu[$k]['href'] = 'index.php?app=ome&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&flt=' . $_GET['flt'] . '&view=' . $k . $s;
$sub_menu[$k]['href'] = 'index.php?app=ome&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&flt=' . $_GET['flt'] . '&view=' . $k;
}
return $sub_menu;
@@ -81,9 +65,13 @@ class ome_ctl_admin_consign extends desktop_controller{
case '0':
$action = array(
array('label' => '批量发货', 'submit' => $this->url.'&act=dailog_delivery_confirm','target'=>'dialog::{width:800,height:200,title:\'批量发货\'}"'),
array('label' => '已回写成功', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_sync_succ', 'confirm' => "这些订单系统认为都是在前台(淘宝、京东等)已经发货,请确认这些订单前端已经发货!!!\n\n警告:本操作不会再同步发货状态,并不可恢复,请谨慎使用!!!", 'target' => 'refresh'),
/* array('label' => '不予回写', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_nosync', 'confirm' => "这些订单系统认为不用发货!\n\n警告本操作不会再同步发货状态并不可恢复请谨慎使用", 'target' => 'refresh'),*/
);
break;
case '1':
$action = array(
array('label' => '批量发货', 'submit' => $this->url . 'index.php?app=ome&ctl=admin_consign&act=batch_change_sync', 'confirm' => '你确定要对勾选的订单进行发货操作吗?', 'target' => 'refresh'),
array('label' => '已回写成功', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_sync_succ', 'confirm' => "这些订单系统认为都是在前台(淘宝、京东等)已经发货,请确认这些订单前端已经发货!!!\n\n警告:本操作不会再同步发货状态,并不可恢复,请谨慎使用!!!", 'target' => 'refresh'),
);
break;
case '2':
@@ -98,10 +86,9 @@ class ome_ctl_admin_consign extends desktop_controller{
array('label' => '已回写成功', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_sync_succ', 'confirm' => "这些订单系统认为都是在前台(淘宝、京东等)已经发货,请确认这些订单前端已经发货!!!\n\n警告:本操作不会再同步发货状态,并不可恢复,请谨慎使用!!!", 'target' => 'refresh'),
);
break;
case '10':
case '12':
$action = array(
array('label' => '批量发货', 'submit' => $this->url . 'index.php?app=ome&ctl=admin_consign&act=batch_change_sync', 'confirm' => '你确定要对勾选的订单进行发货操作吗?', 'target' => 'refresh'),
array('label' => '批量重试发货', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_retry_reshipping', 'confirm' => '你确定要对勾选的补寄订单进行重试发货操作吗?', 'target' => 'refresh'),
array('label' => '已回写成功', 'submit' => 'index.php?app=ome&ctl=admin_consign&act=batch_sync_succ', 'confirm' => "这些订单系统认为都是在前台(淘宝、京东等)已经发货,请确认这些订单前端已经发货!!!\n\n警告:本操作不会再同步发货状态,并不可恢复,请谨慎使用!!!", 'target' => 'refresh'),
);
break;
@@ -147,13 +134,12 @@ class ome_ctl_admin_consign extends desktop_controller{
* @return void
*/
function batch_sync_succ() {
// $this->begin('');
$ids = $_REQUEST['order_id'];
if (!empty($ids)) {
$orderObj = $this->app->model('orders');
$data = array('sync'=>'succ','sync_fail_type'=>'none');
$filter = array('order_id'=>$ids,'createway' => 'matrix');
$filter = array('order_id'=>$ids,'createway' => ['matrix', 'after']);
$orderObj->update($data,$filter);
//记录日志
@@ -173,7 +159,7 @@ class ome_ctl_admin_consign extends desktop_controller{
$this->begin('');
$ids = $_REQUEST['order_id'];
$deliveryObj = app::get('ome')->model('delivery');
if (!empty($ids)) {
kernel::single('ome_event_trigger_shop_delivery')->delivery_confirm_retry($ids);
@@ -187,18 +173,6 @@ class ome_ctl_admin_consign extends desktop_controller{
$base_filter['status'] = array('active', 'finish');
$base_filter['order_confirm_filter'] = "sdb_ome_orders.ship_status IN('1', '2') AND logi_no <> ''";
//$base_filter['order_confirm_filter'] = "(sdb_ome_orders.op_id is not null OR sdb_ome_orders.group_id is not null ) AND (sdb_ome_orders.is_cod='true' OR sdb_ome_orders.pay_status='1' OR sdb_ome_orders.pay_status='4' OR sdb_ome_orders.pay_status='5') and logi_no <> ''";
//$base_filter['process_status'] = array('splited', 'confirmed', 'splitting');
/***
//拆单配置_订单确认状态加入"余单撤消"
$orderSplitLib = kernel::single('ome_order_split');
$split_seting = $orderSplitLib->get_delivery_seting();
if($split_seting){
$base_filter['process_status'] = array('splited', 'confirmed', 'splitting', 'remain_cancel');
}
***/
//check shop permission
$organization_permissions = kernel::single('desktop_user')->get_organization_permission();
if($organization_permissions){
@@ -214,12 +188,9 @@ class ome_ctl_admin_consign extends desktop_controller{
* @return
*/
public function batch_change_sync(){
// $this->begin('');
$ids = $_REQUEST['order_id'];
if (!empty($ids)) {
foreach($ids as $order_id){
kernel::single('ome_service_aftersale')->exchange_consigngoods($order_id);
}
@@ -440,4 +411,45 @@ class ome_ctl_admin_consign extends desktop_controller{
}
$this->end(true, '命令已经被成功发送!');
}
/**
* 批量重试补寄发货
* 参考换货订单回写失败的重试方式
*
* @param void
* @return void
*/
public function batch_retry_reshipping() {
$ids = $_REQUEST['order_id'];
if (empty($ids)) {
$this->splash('error', null, '请选择要重试的订单');
}
$orderObj = $this->app->model('orders');
$trigger = kernel::single('ome_event_trigger_reshipping_delivery');
// 获取补寄订单信息
$orders = $orderObj->getList('order_id,order_bn', array('order_id' => $ids, 'order_type' => 'bufa'));
if (empty($orders)) {
$this->splash('error', null, '未找到补寄订单');
}
foreach ($orders as $order) {
// 获取发货单ID参考 exchange_consigngoods 的实现方式)
$sql = "SELECT d.delivery_id FROM sdb_ome_delivery_order AS dord
LEFT JOIN sdb_ome_delivery AS d ON(dord.delivery_id=d.delivery_id)
WHERE dord.order_id=" . $order['order_id'] . " AND (d.parent_id=0 OR d.is_bind='true') AND d.disabled='false' AND d.status IN('succ')";
$delivery_detail = $orderObj->db->selectrow($sql);
if (empty($delivery_detail) || empty($delivery_detail['delivery_id'])) {
continue;
}
// 调用 afterDelivery 方法重试
$trigger->afterDelivery($delivery_detail['delivery_id']);
}
$this->splash('success', null, '命令已经被成功发送!!');
}
}