mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 02:45:33 +08:00
148 lines
5.3 KiB
PHP
148 lines
5.3 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
class taoguaniostockorder_mdl_diff extends dbeav_model
|
|
{
|
|
public $diff_status = array(
|
|
1 => '未处理',
|
|
2 => '部分处理',
|
|
3 => '全部处理',
|
|
4 => '取消',
|
|
);
|
|
/**
|
|
* 差异单审核
|
|
* @param $data
|
|
* @param $err_msg
|
|
* @return bool
|
|
*/
|
|
public function stockAdjustment($data, &$err_msg)
|
|
{
|
|
if ($data['check_status'] == '2') {
|
|
$err_msg = '单据已经审核,不能再审核';
|
|
return false;
|
|
}
|
|
$groupItems = array();
|
|
foreach ($data['items'] as $k => $v) {
|
|
$key = $v['diff_reason'] . '_' . $v['responsible'];
|
|
$groupItems[$key][] = $v;
|
|
}
|
|
unset($data['items']);//删除原明细数据
|
|
$success = true;
|
|
$errArr = [];
|
|
foreach ($groupItems as $k => $items) {
|
|
list($shift_data, $rule) = $this->diffParameter($data, $items);
|
|
$diffProcessLib = kernel::single('taoguaniostockorder_diff_process', $rule);
|
|
list($status, $errmsg) = $diffProcessLib->rulerule($shift_data);
|
|
//循环结束在做返回
|
|
if (!$status) {
|
|
$success = false;
|
|
$errArr[] = $errmsg;
|
|
}
|
|
}
|
|
if (!$success) {
|
|
$err_msg = implode(';', $errArr);
|
|
return false;
|
|
}
|
|
//最后处理主表状态
|
|
$diffMdl = app::get('taoguaniostockorder')->model('diff');
|
|
$res = $diffMdl->update(array('diff_status' => '3', 'check_status' => '2'), array('diff_id' => $data['diff_id']));
|
|
if (!$res) {
|
|
$err_msg = '审核失败';
|
|
return false;
|
|
}
|
|
return true;
|
|
|
|
}
|
|
|
|
/**
|
|
* 责任数据整合
|
|
* @param $data
|
|
* @param $items
|
|
* @return array[]
|
|
*/
|
|
public function diffParameter($data, $items)
|
|
{
|
|
$branchMdl = app::get('ome')->model('branch');
|
|
$shift_data = array(
|
|
'items' => $items,
|
|
'diff_bn' => $data['diff_bn'],
|
|
'diff_id' => $data['diff_id'],
|
|
);
|
|
|
|
$branch_id = $data['branch_id'];
|
|
$extrabranch_id = $data['extrabranch_id'];
|
|
|
|
$reason = $items[0]['diff_reason'];
|
|
$responsible = $items[0]['responsible'];
|
|
//判断责任方仓库
|
|
$save_branch_id = '';
|
|
if ($responsible == '2') {
|
|
//发货方责任
|
|
$save_branch_id = $extrabranch_id;
|
|
} elseif ($responsible == '3') {
|
|
//收货方责任
|
|
$save_branch_id = $branch_id;
|
|
} elseif ($responsible == '4') {
|
|
//物流方责任
|
|
$save_branch_id = $this->getLogisticsShop()['branch_id'];
|
|
}
|
|
$shift_data['branch_id'] = $save_branch_id;
|
|
|
|
//根据type_id 判断责任方 是仓库 还是店铺
|
|
$branchInfo = $branchMdl->db_dump(array('branch_id' => $save_branch_id, 'check_permission' => 'false'), 'b_type');
|
|
$responsibleValue = '';
|
|
if ($branchInfo['b_type'] == '1') {
|
|
$responsibleValue = 'branch';
|
|
} elseif (in_array($branchInfo['b_type'], ['2', '3'])) {
|
|
$responsibleValue = 'store';
|
|
} elseif ($responsible == '4') {
|
|
$responsibleValue = 'logistics';
|
|
}
|
|
|
|
//获取流程 判断流程
|
|
$flow = '';
|
|
$branchInfo = $branchMdl->db_dump(array('branch_id' => $branch_id, 'check_permission' => 'false'), 'branch_id,b_type');
|
|
$extrabranchInfo = $branchMdl->db_dump(array('branch_id' => $extrabranch_id, 'check_permission' => 'false'), 'branch_id,b_type');
|
|
|
|
if ($branchInfo['b_type'] == '1' && in_array($extrabranchInfo['b_type'], ['2', '3'])) {
|
|
//仓到店
|
|
$flow = 'b2s';
|
|
} elseif (in_array($branchInfo['b_type'], ['2', '3']) && $extrabranchInfo['b_type'] == '1') {
|
|
//店到仓
|
|
$flow = 's2b';
|
|
} elseif (in_array($branchInfo['b_type'], ['2', '3']) && in_array($extrabranchInfo['b_type'], ['2', '3'])) {
|
|
//店转店
|
|
$flow = 's2s';
|
|
} elseif (in_array($branchInfo['b_type'], ['1']) && in_array($extrabranchInfo['b_type'], ['1'])) {
|
|
//店转店
|
|
$flow = 'b2b';
|
|
}
|
|
|
|
$rule = array('flow' => $flow, 'reason' => $reason, 'responsible' => $responsibleValue);
|
|
return [$shift_data, $rule];
|
|
}
|
|
|
|
/**
|
|
* 获取LogisticsShop
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function getLogisticsShop()
|
|
{
|
|
//需要新增一个物流方责任仓
|
|
return app::get('ome')->model('branch')->db_dump(['branch_bn' => '0', 'check_permission' => 'false']);
|
|
}
|
|
} |