Files
OMS/app/sales/model/reship.php
2025-12-28 23:13:25 +08:00

526 lines
16 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 sales_mdl_reship extends dbeav_model{
var $export_name = '商品销售退货明细';
function __construct($app){
parent::__construct(app::get('ome'));
}
/**
* 搜索Options
* @return mixed 返回值
*/
public function searchOptions(){
$Options = array(
'return_bn'=>'售后申请单号',
'order_bn'=>'订单号',
'reship_bn'=>'退换货单号',
'bn'=>'货号',
);
return $Options;
}
/**
* io_title
* @param mixed $ioType ioType
* @return mixed 返回值
*/
public function io_title( $ioType='csv' ){
switch( $ioType ){
case 'csv':
default:
$this->oSchema['csv']['reship'] = array(
'*:店铺'=>'shop_id',
'*:售后申请单号'=>'return_bn',
'*:申请时间'=>'add_time',
'*:订单号'=>'order_id',
'*:货号'=>'bn',
'*:数量'=>'num',
'*:售后类型'=>'return_type',
'*:退款金额'=>'refundmoney',
'*:商品名称'=>'name',
'*:退换货单号'=>'reship_id',
'*:商品品牌'=>'brand_id',
'*:商品类型'=>'type_id',
'*:收货时间'=>'reship_time',
'*:收货仓库'=>'branch_id',
);
}
$this->ioTitle[$ioType]['reship'] = array_keys( $this->oSchema[$ioType]['reship'] );
return $this->ioTitle[$ioType]['reship'];
}
/**
* fgetlist_csv
* @param mixed $data 数据
* @param mixed $filter filter
* @param mixed $offset offset
* @param mixed $exportType exportType
* @return mixed 返回值
*/
public function fgetlist_csv( &$data,$filter,$offset,$exportType = 1 ){
if( !$data['title'] ){
$title = array();
foreach( $this->io_title() as $k => $v ){
$title[] = $v;
}
$data['title'] = '"'.implode('","',$title).'"';
}
$limit = 100;
if(!$list = $this->getList('*',$filter,$offset*$limit,$limit)){
return false;
}
foreach ($list as $aFilter) {
foreach ($this->oSchema['csv']['reship'] as $kk => $v) {
switch($v){
case 'shop_id':
$shop = $this->db->selectrow('select name from sdb_ome_shop where shop_id="'.$aFilter['shop_id'].'"');
$aFilter['shop_id'] = $shop['name'];
break;
case 'refundmoney':
$aFilter['refundmoney'] = $aFilter['refundmoney']?$aFilter['refundmoney']:0.00;
break;
case 'order_id':
$order = $this->db->selectrow('select order_bn from sdb_ome_orders where order_id="'.$aFilter['order_id'].'"');
$aFilter['order_id'] = '="'.$order['order_bn'].'"';
break;
case 'branch_id':
$branch = $this->db->selectrow('select name from sdb_ome_branch where branch_id='.$aFilter['branch_id']);
$aFilter['branch_id'] = $branch['name'];
break;
case 'reship_id':
$branch = $this->db->selectrow('select reship_bn from sdb_ome_reship where reship_id='.$aFilter['reship_id']);
$aFilter['reship_id'] = ' '.$branch['reship_bn'];
break;
case 'brand_id':
$branch = $this->db->selectrow('select brand_name from sdb_ome_brand where brand_id='.$aFilter['brand_id']);
$aFilter['brand_id'] = $branch['brand_name'];
break;
case 'type_id':
$branch = $this->db->selectrow('select name from sdb_ome_goods_type where type_id='.$aFilter['type_id']);
$aFilter['type_id'] = $branch['name'];
break;
case 'add_time':
$aFilter['add_time'] = date('Y-m-d H:i:s',$aFilter['add_time']);
break;
case 'reship_time':
$aFilter['reship_time'] = date('Y-m-d H:i:s',$aFilter['reship_time']);
break;
}
$reshipRow[$kk] = $aFilter[$v];
}
$data['contents'][] = '"'.implode('","',$reshipRow).'"';
}
return true;
}
/**
* count
* @param mixed $filter filter
* @return mixed 返回值
*/
public function count( $filter = null ){
return count($this->getList($filter));
}
public function getList($cols = '*',$filter = array(),$offset = 0,$limit = 1,$orderType = null){
$sql = 'select rp.return_id,reship.reship_id,reship.order_id,reship.return_type,rp.refundmoney,rp.member_id,reship.ship_mobile,rp.shop_id,ra.apply_id as return_apply_id,rp.add_time,reship.t_begin as check_time,ra.create_time as refundtime,reship.op_id as check_op_id,ri.op_id,ra.apply_op_id as refund_op_id,reship.is_check from sdb_ome_return_product rp left join sdb_ome_reship reship on rp.return_id = reship.return_id left join sdb_ome_refund_apply ra on rp.return_id = ra.return_id left join sdb_ome_reship_items ri on reship.reship_id = ri.reship_id where '.$this->_filter($filter);
if($orderType)$sql.=' ORDER BY '.(is_array($orderType)?implode($orderType,' '):$orderType);
$data = $this->db->selectLimit($sql,$limit,$offset);
#echo "<pre>";
#print_r($data);exit;
foreach($data as $k=>$v){
if(!empty($v['reship_id'])){
$sql = 'select acttime from sdb_ome_return_process_items where reship_id='.$v['reship_id'];
$Oreturn_process = $this->db->selectrow($sql);
$data[$k]['acttime'] = $Oreturn_process['acttime'];
if(!empty($v['return_id'])){
$id = 'return_'.$v['return_id'];
}elseif (!empty($v['reship_id'])) {
$id = 'reship_'.$v['reship_id'];
}else{
$id = 'apply_'.$v['return_apply_id'];
}
$data[$k]['id'] = $id;
}
}
return $data;
}
/**
* _filter
* @param mixed $filter filter
* @param mixed $tableAlias tableAlias
* @param mixed $baseWhere baseWhere
* @return mixed 返回值
*/
public function _filter($filter,$tableAlias=null,$baseWhere=null){
$where = '1 ';
if(isset($filter['order_bn'])){
$orders = array(0);
$Oorder = $this->app->model("orders");
$order = $Oorder->getList('order_id',array('order_bn|head'=>$filter['order_bn']));
foreach ($order as $v) {
$orders[] = $v['order_id'];
}
$where .= 'and pi.order_id in ('.implode(',',$orders).')';
unset($filter['order_bn']);
}
if(isset($filter['reship_bn'])){
$reships = array(0);
$Oreship = $this->app->model("reship");
$reship = $Oreship->getList('reship_id',array('reship_bn|head'=>$filter['reship_bn']));
foreach ($reship as $v) {
$reships[] = $v['reship_id'];
}
$where .= ' and pi.reship_id in ('.implode(',',$reships).')';
unset($filter['reship_bn']);
}
if(isset($filter['item_id'])){
if(is_array($filter['item_id'])){
$where .= ' and ri.item_id in ('.implode(',',$filter['item_id']).')';
}else{
$where .= ' and ri.item_id = '.$filter['item_id'];
}
unset($filter['item_id']);
}
if(isset($filter['bn'])){
$products = array(0);
if(is_array($filter['bn'])){
$_where = 'bn in ("'.implode('","',$filter['bn']).'")';
}else{
$_where = 'bn like \''.$filter['bn'].'%\'';
}
$sql = 'SELECT product_id FROM sdb_ome_reship_items WHERE '.$_where;
$product = kernel::database()->select($sql);
foreach ($product as $v) {
$products[] = $v['product_id'];
}
$where .= ' and ri.product_id in ('.implode(',',$products).')';
unset($filter['bn']);
}
if(isset($filter['return_bn'])){
$return_products = array(0);
$Oreturn = $this->app->model("return_product");
$return_product = $Oreturn->getList('return_id',array('return_bn|head'=>$filter['return_bn']));
foreach ($return_product as $v) {
$return_products[] = $v['return_id'];
}
$where .= ' and rp.return_id in ('.implode(',',$return_products).')';
unset($filter['return_bn']);
}
return $where.' and '.parent::_filter($filter,$tableAlias,$baseWhere);
}
function get_schema(){
$schema = array(
'columns' => array (
'id' => array (
'type' => 'varchar(32)',
'pkey' => true,
'label' => 'ID',
'editable' => false,
'in_list' => false,
'default_in_list' => false,
),
'shop_id' => array (
'type' => 'table:shop@ome',
'label' => '店铺',
'width' => 120,
'searchtype' => 'has',
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'filtertype' => 'normal',
'filterdefault' => true,
'order'=>1,
),
'order_id' => array (
'type' => 'table:orders@ome',
'label' => '订单号',
'width' => 140,
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'filtertype' => 'normal',
'filterdefault' => true,
'order'=>2,
),
'return_type' => array (
'type' =>
array (
'return' => '退货',
'change' => '换货',
),
'label' => '售后类型',
'width' => 95,
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'filtertype' => 'normal',
'filterdefault' => true,
'order'=>3,
),
'refundmoney' => array (
'type' => 'money',
'label' => '退款金额',
'width' => 75,
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'order'=>4,
),
'member_id' =>
array (
'type' => 'table:members@ome',
'required' => false,
'editable' => false,
'label' => '用户名',
'in_list' => true,
'default_in_list' => true,
'order' => 5,
'filtertype' => 'normal',
'filterdefault' => true,
'width' => 130,
),
'ship_mobile' =>
array (
'type' => 'table:reship@ome',
'required' => false,
'editable' => false,
'label' => '手机号',
'in_list' => false,
'default_in_list' => false,
'filtertype' => 'normal',
'filterdefault' => true,
'order' => 6,
'width' => 130,
),
'return_id' => array (
'type' => 'table:return_product@ome',
'label' => '售后申请单号',
'editable' => false,
'in_list' => false,
'default_in_list' => false,
'order'=>7,
'filtertype' => 'normal',
'filterdefault' => true,
),
'reship_id' => array (
'type' => 'table:reship@ome',
'label' => '退换货单号',
'width' => 140,
'searchtype' => 'has',
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'order'=>8,
'filtertype' => 'normal',
'filterdefault' => true,
),
'return_apply_id' => array (
'type' => 'table:refund_apply@ome',
'label' => '退款申请单号',
'width' => 140,
'searchtype' => 'has',
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'order'=>9,
'filtertype' => 'normal',
'filterdefault' => true,
),
'add_time' => array (
'type' => 'time',
'label' => '售后申请时间',
'width' => 130,
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'filtertype' => 'time',
'filterdefault' => true,
'order'=>10,
),
'check_time' => array (
'type' => 'time',
'label' => '审核时间',
'width' => 130,
'editable' => false,
'in_list' => true,
'default_in_list' => true,
'filtertype' => 'time',
'filterdefault' => true,
'order'=>11,
),
'acttime' =>
array (
'type' => 'time',
'required' => false,
'editable' => false,
'label' => '质检时间',
'filterdefault' => true,
'filtertype' => 'time',
'in_list' => true,
'default_in_list' => true,
'order' => 12,
'width' => 130,
),
'refundtime' =>
array (
'type' => 'time',
'required' => false,
'editable' => false,
'label' => '退款时间',
'filterdefault' => true,
'filtertype' => 'time',
'in_list' => true,
'default_in_list' => true,
'order' => 13,
'width' => 130,
),
'check_op_id' =>
array (
'type' => 'table:account@pam',
'required' => false,
'editable' => false,
'label' => '审核人',
'in_list' => true,
'filterdefault' => true,
'filtertype' => 'yes',
'default_in_list' => true,
'order' => 14,
'width' => 130,
),
'op_id' =>
array (
'type' => 'table:account@pam',
'required' => false,
'editable' => false,
'label' => '质检人',
'in_list' => true,
'filterdefault' => true,
'filtertype' => 'yes',
'default_in_list' => true,
'order' => 15,
'width' => 130,
),
'refund_op_id' =>
array (
'type' => 'table:account@pam',
'required' => false,
'editable' => false,
'label' => '退款人',
'in_list' => true,
'filterdefault' => true,
'filtertype' => 'yes',
'default_in_list' => true,
'order' => 16,
'width' => 130,
),
'is_check' =>
array (
'type' => array(
0 => '未审核',
1 => '审核成功',
2 => '审核失败',
3 => '收货成功',
4 => '拒绝收货',
5 => '拒绝',
6 => '补差价',
7 => '完成',
8 => '质检通过',
9 => '拒绝质检',
10 => '质检异常',
),
'required' => false,
'editable' => false,
'label' => '状态',
'in_list' => false,
'default_in_list' => false,
'filtertype' => 'normal',
'filterdefault' => true,
'order' => 17,
'width' => 130,
),
),
'idColumn' => 'id',
'in_list' => array (
0 => 'shop_id',
1 => 'order_id',
2 => 'return_type',
3 => 'refundmoney',
4 => 'member_id',
5 => 'ship_mobile',
6 => 'return_id',
7 => 'reship_id',
8 => 'return_apply_id',
9 => 'add_time',
10 => 'check_time',
11 => 'acttime',
12 => 'refundtime',
13 => 'check_op_id',
14 => 'op_id',
15 => 'refund_op_id',
16 => 'is_check',
),
'default_in_list' => array (
0 => 'shop_id',
1 => 'order_id',
2 => 'return_type',
3 => 'refundmoney',
4 => 'member_id',
5 => 'ship_mobile',
6 => 'return_id',
7 => 'reship_id',
8 => 'return_apply_id',
9 => 'add_time',
10 => 'check_time',
11 => 'acttime',
12 => 'refundtime',
13 => 'check_op_id',
14 => 'op_id',
15 => 'refund_op_id',
16 => 'is_check',
),
);
return $schema;
}
}