Files
OMS/app/ome/controller/admin/reship.php
2025-12-28 23:13:25 +08:00

299 lines
12 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
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class ome_ctl_admin_reship extends desktop_controller{
var $name = "退货单";
var $workground = "invoice_center";
function index(){
$this->finder('ome_mdl_reship',array(
'title' => '退货单管理',
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>false,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
'use_buildin_filter'=>true,
));
}
/**
* @sunjing@shopex.cn
* @DateTime 2017-12-20T09:57:40+0800
*
* 换货订单生成
* @return
*/
function create_change_order($reship_id){
$reshipobj = app::get('ome')->model('reship');
$reship_detail = $reshipobj->dump(array('reship_id'=>$reship_id,'is_check'=>'1','return_type'=>'change','change_order_id'=>0),'change_order_id,return_id,reship_bn,reship_id');
//$tmall_detail = kernel::single('ome_service_aftersale')->get_return_type(array('return_id'=>$reship_detail['return_id']));
//if ($tmall_detail && $reship_detail && $tmall_detail['refund_type'] == 'change'){
//check
if ($reship_detail){
$this->pagedata['reship_detail'] = $reship_detail;
$this->pagedata['reship_id'] = $reship_detail['reship_id'];
unset($reship_detail);
$this->display('admin/return_product/rchange/create_change_order.html');
}else{
echo '无换货订单需要生成!';exit;
}
}
/**
* 生成换货订单
*
*/
public function do_create_change_order($reship_id){
$reshipObj= app::get('ome')->model('reship');
$orderObj = app::get('ome')->model('orders');
$reshipLib = kernel::single('ome_reship');
$oOperation_log = $this->app->model('operation_log');
$reship_detail = $reshipObj->dump(array('reship_id'=>$reship_id,'change_order_id'=>0),'*');
$order_detail = $orderObj->dump(array('order_id'=>$reship_detail['order_id']),'order_bn');
$result = array('rsp'=>'fail','msg'=>'创建失败!');
if ($reship_detail){
$rs = $reshipObj->create_order($reship_detail);
if ($rs){
//kernel::single('console_reship')->change_freezeproduct($reship_id,'-',$reship_detail['changebranch_id']);//生成订单后释放库存
//库存管控 生成订单后释放库存
kernel::single('console_reship')->releaseChangeFreeze($reship_id);
$oOperation_log->write_log('reship@ome',$reship_id,'新建换货订单,换货订单号:'.$rs['order_bn']);
$order = array(
'order_id' => $rs['order_id'],
'shop_id' => $reship_detail['shop_id'],
'pay_status' => '1',
'pay_money' => $rs['total_amount'],
'currency' => 'CNY',
'reship_order_bn' => $order_detail['order_bn'],
);
$reshipLib->payChangeOrder($order);
$result = array('rsp'=>'succ','msg'=>'换货订单创建成功');
}
}
echo json_encode($result);
}
/**
* 退货拒绝留言.
* @param
* @return
* @access public
* @author sunjing@shopex.cn
*/
function refuse_message($reship_id=null)
{
set_time_limit(0);
if ($_POST) {
$this->begin();
$reshipObj = $this->app->model('reship');
$refuse_message = $_POST['refuse_message'];
$return_id = $_POST['return_id'];
$reship_id = $_POST['reship_id'];
if ($_FILES['refuse_proof']['size']<=0) {
$this->end(false,'请上传凭证图片!');
}
$return_model = $this->app->model('return_product_tmall');
$return_tmall = $return_model->dump(array('return_id' => $return_id));
if($_FILES['refuse_proof']['size'] != 0){
if ($_FILES ['refuse_proof'] ['size'] > 512000) {
$this->end(false,'上传文件不能超过500K!');
}
$type = $type = array ('gif','jpg','png');
$imgext = strtolower ( $this->fileext ( $_FILES ['refuse_proof'] ['name'] ) );
if ($_FILES['refuse_proof'] ['name'])
if (! in_array ( $imgext, $type )) {
$text = implode ( ",", $type );
$this->end(false,"您只能上传以下类型文件{$text}!");
}
$ss = kernel::single ( 'base_storager' );
$id = $ss->save_upload ( $_FILES ['refuse_proof'], "file", "", $msg ); //返回file_id;
$refuse_memo['image'] = $ss->getUrl ( $id, "file" );
$rh = fopen($_FILES['refuse_proof']['tmp_name'],'rb');
$imagebinary = fread($rh, filesize($_FILES['refuse_proof']['tmp_name']));
fclose($rh);
$imagebinary = base64_encode($imagebinary);
}
$aftersale_service = kernel::single('ome_service_aftersale');
$data = array(
'leave_message' => $refuse_message,
'leave_message_pics'=> $imagebinary,
'dispute_id' => $return_tmall['return_bn'],
'seller_refuse_reason_id'=>$_POST['seller_refuse_reason_id'],
);
$rs = $aftersale_service->returngoods_refuse($data);
$reship_detail = $reshipObj->dump(array('reship_id'=>$reship_id),'reship_bn,return_type,is_check,branch_id,changebranch_id,reship_id');
if ($reship_detail['is_check'] == '1'){
$wms_id = kernel::single('ome_branch')->getWmsIdById($reship_detail['branch_id']);
$branch = kernel::single('ome_branch')->getBranchInfo($reship_detail['branch_id'], 'branch_bn,storage_code,owner_code');
$data = array(
'reship_bn' => $reship_detail['reship_bn'],
'branch_bn' => $branch['branch_bn'],
'reship_id' => $reship_detail['reship_id'],
);
$result = kernel::single('console_event_trigger_reship')->cancel($wms_id, $data, true);
}
$oOperation_log = app::get('ome')->model('operation_log');//写日志
if (!$rs || $rs['rsp'] == 'fail' || ($result &&$result['rsp']=='fail')) {
$oOperation_log->write_log('return@ome',$return_id,'拒绝确认收货失败,原因:'.$rs['msg']);
$this->end(false,$rs['msg']);
}
//更新退货单状态
$reshipObj->update(array('is_check'=>'5','t_end'=>time()),array('reship_id'=>$reship_id));
//判断是否是已确认拒绝如果是需要释放冻结库存
kernel::single('console_reship')->releaseChangeFreeze($reship_id);
$memo = '拒绝确认收货';
if($return_id){
$oOperation_log->write_log('return@ome',$return_id,$memo);
$data = array ('return_id' => $return_id, 'status' => '5', 'last_modified' => time () );
$oProduct = app::get('ome')->model ( 'return_product' );
$oProduct->update_status ( $data );
}
$oOperation_log->write_log('reship@ome',$reship_id,$memo);
$this->end(true,'成功');
}
$reshipObj = app::get('ome')->model('reship');
$reship_detail = $reshipObj->dump(array('reship_id'=>$reship_id),'return_id');
$return_id = $reship_detail['return_id'];
$aftersaleObj = kernel::single('ome_service_aftersale');
$return_tmall_detail =$aftersaleObj->get_return_type(array('return_id' => $return_id));
if ($return_tmall_detail['refund_type'] == 'change'){
//$refuse_reason = $return_tmall_detail['refusereason'];
if ($refuse_reason){
$refuse_reason = json_decode($refuse_reason,true);
}else{
$refuse_reason = $aftersaleObj->refuse_reason($return_id);
}
$this->pagedata['refuse_reason'] = $refuse_reason;
}
$this->pagedata['reship_id'] = $reship_id;
$this->pagedata['return_id'] = $return_id;
$this->pagedata['finder_id'] = $_GET['finder_id'];
$this->display('admin/reship/refuse_message.html');
}
function fileext($filename) {
return substr ( strrchr ( $filename, '.' ), 1 );
}
/**
* @sunjing@shopex.cn
* @DateTime 2017-12-28T18:44:46+0800
* @return
*/
public function force_refuse($reship_id){
if(!$reship_id)
die("单据号传递错误!");
$reshipObj = app::get('ome')->model('reship');
$reship = $reshipObj->dump(array('reship_id'=>$reship_id),'reship_bn,return_id,return_type,changebranch_id,is_check,change_status,reship_id');
if($reship){
console_reship::cancel($reship,'强制取消');
$oOperation_log = app::get('ome')->model('operation_log');//写日志
if($reship['return_id']){
$oOperation_log->write_log('return@ome',$reship['return_id'],$memo);
$data = array ('return_id' => $reship['return_id'], 'status' => '5', 'last_modified' => time () );
$oProduct = app::get('ome')->model ( 'return_product' );
$oProduct->update_status ( $data );
}
}
}
/**
* 关闭换货订单状态
* @author: <sunjing@shopex.cn>
* @Date:2018-05-03
* @return bool
*/
function close_change($reship_id){
$this->begin('javascript:finderGroup["'.$_GET['finder_id'].'"].refresh();');
$reship_id = intval($reship_id);
$reshipObj = app::get('ome')->model('reship');
$finder_id = $_GET['finder_id'];
$oOperation_log = app::get('ome')->model('operation_log');//写日志
$result = $reshipObj->update(array('change_status'=>'2'),array('reship_id'=>$reship_id,'change_status'=>'0'));
$oOperation_log->write_log('reship@ome',$reship_id,'关闭换货单生成');
if($result){
$res = kernel::single('console_reship')->releaseChangeFreeze($reship_id);
if ($res[0]) {
$oOperation_log->write_log('reship@ome', $reship_id, '关闭换货单生成后释放预占');
$this->end(true,'关闭换货单成功!');
} else {
$this->end(false,'关闭换货单失败:'.$res[1]['msg']);
}
}else{
$this->end(false,'关闭换货单失败');
}
}
/**
* 添加memo
* @param mixed $reship_id ID
* @return mixed 返回值
*/
public function addmemo($reship_id){
$this->pagedata['reship_id'] = $reship_id;
$this->display('admin/reship/memo.html');
}
/**
* doaddmemo
* @return mixed 返回值
*/
public function doaddmemo(){
$this->begin('javascript:finderGroup["'.$_GET['finder_id'].'"].refresh();');
$reship_id = intval($_POST['reship_id']);
$reshipObj = app::get('ome')->model('reship');
$logMdl = app::get('ome')->model('operation_log');//写日志
$memo = $_POST['memo'];
$result = $reshipObj->update(array('memo'=>$_POST['memo']),array('reship_id'=>$reship_id));
$logMdl->write_log('reship@ome',$reship_id,'添加退货备注:'.$memo.'');
$this->end(true,'备注添加成功!');
}
}
?>