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

839 lines
34 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_aftersale extends dbeav_model{
//是否有导出配置
var $has_export_cnf = true;
var $export_name = '售后单';
var $defaultOrder = array('aftersale_time DESC');
var $has_many = array(
'aftersale_items' => 'aftersale_items'
);
var $return_type = array(
'return' => '退货',
'change' => '换货',
'refund' => '退款',
'refuse' => '拒绝收货',
'refunded' => '退款',
);
var $pay_type = array(
'online' => '在线支付',
'offline' => '线下支付',
'deposit' => '预存款支付',
);
var $common_type = array(
'0'=>'common',
'1'=>'return',
'2'=>'change',
'3'=>'refund',
);
public $appendCols = 'order_id';
/**
* 搜索Options
* @return mixed 返回值
*/
public function searchOptions(){
$ext_columns = array(
'order_bn'=>$this->app->_('订单号'),
'reship_bn'=>$this->app->_('退换货单号'),
'return_apply_bn'=>$this->app->_('退款申请单号'),
);
return $ext_columns;
}
/**
* io_title
* @param mixed $filter filter
* @param mixed $ioType ioType
* @param mixed $return_type return_type
* @return mixed 返回值
*/
public function io_title( $filter=null,$ioType='csv',$return_type ){
switch( $ioType ){
case 'csv':
default:
$this->oSchema['csv']['aftersale'] = $this->get_return_type('aftersale',$return_type);
$this->oSchema['csv']['aftersale_items'] = $this->get_return_type('aftersale_items',$return_type);
break;
}
$this->ioTitle[$ioType]['aftersale'] = array_keys( $this->oSchema[$ioType]['aftersale'] );
$this->ioTitle[$ioType]['aftersale_items'] = array_keys( $this->oSchema[$ioType]['aftersale_items'] );
return $this->ioTitle[$ioType][$filter];
}
/**
* 导出title方法 根据传入type类型,显示相应的title信息
* @return void
* @param main aftersale 主表字段 aftersale_items 明细字段
* @param type 1 退货单(return) 2 换货单(change) 3 拒收退货单(refuse) 4 退款单(refund)
* @author
* */
public function get_return_type($main,$type){
return kernel::single('sales_export_aftersale')->io_title($main,$this->common_type[$type]);
}
//csv导出
public function fgetlist_csv( &$data,$filter,$offset,$exportType = 1 ){
$type = $_GET['view']?$_GET['view']:'0';
if( !$data['title']['aftersale'] ){
$title = array();
foreach( $this->io_title('aftersale','csv',$type) as $k => $v ){
$title[] = $this->charset->utf2local($v);
}
$data['title']['aftersale'] = '"'.implode('","',$title).'"';
}
$limit = 100;
if(!$list = $this->getList('*',$filter,$offset*$limit,$limit)) return false;
foreach ($list as $v) {
$aftersaleIds[] = $v['aftersale_id'];
$orderIds[] = $v['order_id'];
$memberIds[] = $v['member_id'];
$shopIds[] = $v['shop_id'];
$returnIds[] = $v['return_id'];
$reshipIds[] = $v['reship_id'];
$returnapplyIds[] = $v['return_apply_id'];
}
$Oshop = app::get('ome')->model('shop');
$Oorder = app::get('ome')->model('orders');
$Oreturn_products = app::get('ome')->model('return_product');
$Oreship = app::get('ome')->model('reship');
$Orefund_apply = app::get('ome')->model('refund_apply');
$Oaccount = app::get('pam')->model('account');
$Oaftersale_items = $this->app->model('aftersale_items');
$Omembers = app::get('ome')->model('members');
$payment_cfgObj = app::get('ome')->model('payment_cfg');
$Obranch = app::get('ome')->model('branch');
#店铺信息
$shop = $Oshop->getList('name,shop_id',array('shop_id'=>$shopIds));
foreach ($shop as $v) {
$shops[$v['shop_id']] = $v['name'];
}
#仓库信息
$branch = $Obranch->getList('name,branch_id');
foreach ($branch as $v) {
$branchs[$v['branch_id']] = $v['name'];
}
#订单信息
$order = $Oorder->getList('order_bn,order_id',array('order_id'=>$orderIds));
foreach ($order as $v) {
$orders[$v['order_id']] = $v['order_bn'];
}
#售后申请信息
$return_product = $Oreturn_products->getList('return_bn,return_id',array('return_id'=>$returnIds));
foreach ($return_product as $v) {
$return_products[$v['return_id']] = $v['return_bn'];
}
#退换货信息
$reship = $Oreship->getList('reship_bn,reship_id',array('reship_id'=>$reshipIds));
foreach ($reship as $v) {
$reships[$v['reship_id']] = $v['reship_bn'];
}
#退款申请信息
$refund_apply = $Orefund_apply->getList('refund_apply_bn,apply_id',array('apply_id'=>$returnapplyIds));
foreach ($refund_apply as $v) {
$refund_applys[$v['apply_id']] = $v['refund_apply_bn'];
}
#操作员信息
$account = $Oaccount->getList('login_name,account_id');
foreach ($account as $v) {
$accounts[$v['account_id']] = $v['login_name'];
}
#会员信息
$member = $Omembers->getList('uname,member_id',array('member_id'=>$memberIds));
foreach ($member as $v) {
$members[$v['member_id']] = $v['uname'];
}
#支付方式信息
$payment_cfg = $payment_cfgObj->getList('id,custom_name');
foreach ($payment_cfg as $v) {
$payment_cfgs[$v['id']] = $v['custom_name'];
}
//所有的子售后单据数据
$rs = $Oaftersale_items->getList('*',array('aftersale_id'=>$aftersaleIds));
foreach($rs as $v) {
$sales_items[$v['aftersale_id']][] = $v;
}
foreach( $list as $aFilter ){
$aOrderRow = array();
$check_op_id = $accounts[$aFilter['check_op_id']];
$op_id = $accounts[$aFilter['op_id']];
$refund_op_id = $accounts[$aFilter['refund_op_id']];
$rows = array(
'shop_id' => $shops[$aFilter['shop_id']],
'order_id' => "=\"\"".$orders[$aFilter['order_id']]."\"\"",
'aftersale_bn' => $aFilter['aftersale_bn']."\t",
'return_id' => $return_products[$aFilter['return_id']]."\t",
'reship_id' => "=\"\"".$reships[$aFilter['reship_id']]."\"\"",
'diff_order_bn' => $aFilter['diff_order_bn']."\t",
'change_order_bn' => $aFilter['change_order_bn']."\t",
'return_apply_id' => $refund_applys[$aFilter['return_apply_id']]."\t",
'return_type' => $this->return_type[$aFilter['return_type']],
'refundmoney' => $aFilter['refundmoney']?$aFilter['refundmoney']:'-',
'paymethod' => $aFilter['paymethod']?$aFilter['paymethod']:'-',
'refund_apply_money' => $aFilter['refund_apply_money']?$aFilter['refund_apply_money']:'-',
'member_id' => $members[$aFilter['member_id']],
'ship_mobile' => $aFilter['ship_mobile']?$aFilter['ship_mobile']:'-',
'pay_type' => $aFilter['pay_type']?$this->pay_type[$aFilter['pay_type']]:'-',
'account' => $aFilter['account']?$aFilter['account']:'-',
'bank' => $aFilter['bank']?$aFilter['bank']:'-',
'pay_account' => $aFilter['pay_account']?$aFilter['pay_account']:'-',
'refund_apply_time' => !empty($aFilter['refund_apply_time'])?date('Y-m-d H:i:s',$aFilter['refund_apply_time']):'-',
'check_op_id' => $check_op_id?$check_op_id:'-',
'op_id' => $op_id?$op_id:'-',
'refund_op_id' => $refund_op_id?$refund_op_id:'-',
'add_time' => !empty($aFilter['add_time'])?date('Y-m-d H:i:s',$aFilter['add_time']):'-',
'check_time' => !empty($aFilter['check_time'])?date('Y-m-d H:i:s',$aFilter['check_time']):'-',
'acttime' => !empty($aFilter['acttime'])?date('Y-m-d H:i:s',$aFilter['acttime']):'-',
'refundtime' => !empty($aFilter['refundtime'])?date('Y-m-d H:i:s',$aFilter['refundtime']):'-',
'aftersale_time' => !empty($aFilter['aftersale_time'])?date('Y-m-d H:i:s',$aFilter['aftersale_time']):'-',
);
$aOrderRow = kernel::single('sales_export_aftersale')->io_contents('aftersale',$this->common_type[$type],$rows);
$data['content']['aftersale'][] = $this->charset->utf2local('"'.implode( '","', $aOrderRow ).'"');
$objects = $sales_items[$aFilter['aftersale_id']];
if ($objects){
if( !$data['title']['aftersale_items'] ){
$title = array();
foreach( $this->io_title('aftersale_items','csv',$type) as $k => $v ){
$title[] = $this->charset->utf2local($v);
}
$data['title']['aftersale_items'] = '"'.implode('","',$title).'"';
}
foreach ($objects as $obj){
$orderObjRow = array();
if($obj['return_type'] == 'refunded'){
$pay_type = $this->pay_type[$obj['pay_type']];
$num = $price = '-';
}else{
$num = $obj['num']?$obj['num']:'-';
$price = $obj['price']?$obj['price']:'-';
$pay_type = '-';
}
$branch_id = $obj['branch_id'];
$rowsobj = array(
'aftersale_bn' => $aFilter['aftersale_bn']."\t",
'pay_type' => $pay_type,
'account' => $obj['account']?$obj['account']:'-',
'bank' => $obj['bank']?$obj['bank']:'-',
'pay_account' => $obj['pay_account']?$obj['pay_account']:'-',
'money' => $obj['money']?$obj['money']:'-',
'refunded' => $obj['refunded']?$obj['refunded']:'-',
'payment' => $obj['payment']?$payment_cfgs[$obj['payment']]:'-',
'create_time' => !empty($obj['create_time'])?date('Y-m-d H:i:s',$obj['create_time']):'-',
'last_modified' => !empty($obj['last_modified'])?date('Y-m-d H:i:s',$obj['last_modified']):'-',
'bn' => $obj['bn']?$obj['bn']:'-',
'product_name' => $obj['product_name']?$obj['product_name']:'-',
'num' => $num,
'price' => $price,
'branch_id' => $branchs[$obj['branch_id']],
'return_type' => $this->return_type[$obj['return_type']],
);
$orderObjRow = kernel::single('sales_export_aftersale')->io_contents('aftersale_items',$this->common_type[$type],$rowsobj);
$data['content']['aftersale_items'][] = $this->charset->utf2local('"'.implode( '","', $orderObjRow ).'"');
}
}
}
$data['name'] = 'aftersale'.date("YmdHis");
return true;
}
/**
* export_csv
* @param mixed $data 数据
* @param mixed $exportType exportType
* @return mixed 返回值
*/
public function export_csv($data,$exportType = 1 ){
$output = array();
foreach( $data['title'] as $k => $val ){
$output[] = $val."\n".implode("\n",(array)$data['content'][$k]);
}
echo implode("\n",$output);
}
/**
* _filter
* @param mixed $filter filter
* @param mixed $tableAlias tableAlias
* @param mixed $baseWhere baseWhere
* @return mixed 返回值
*/
public function _filter($filter,$tableAlias=null,$baseWhere=null){
$Obj = app::get('ome');
$where = '1 ';
if(isset($filter['order_bn'])){
$orders = array(0);
$Oorder = $Obj->model("orders");
$order = $Oorder->getList('order_id',array('order_bn|head'=>$filter['order_bn']));
foreach ($order as $v) {
$orders[] = $v['order_id'];
}
$archive_ordObj = kernel::single('archive_interface_orders');
$archiveorder =$archive_ordObj->getOrders(array('order_bn'=>$filter['order_bn']),'order_id');
if ($archiveorder){
$orders[] = $archiveorder['order_id'];
}
$where .= 'and order_id in ('.implode(',',$orders).')';
unset($filter['order_bn']);
}
if(isset($filter['reship_bn'])){
$reships = array(0);
$Oreship = $Obj->model("reship");
$reship = $Oreship->getList('reship_id',array('reship_bn|head'=>$filter['reship_bn']));
foreach ($reship as $v) {
$reships[] = $v['reship_id'];
}
$where .= ' and reship_id in ('.implode(',',$reships).')';
unset($filter['reship_bn']);
}
if(isset($filter['member_uname'])){
$members = array(0);
$Omember = $Obj->model("members");
$member = $Omember->getList('member_id',array('uname|head'=>$filter['member_uname']));
foreach ($member as $v) {
$members[] = $v['member_id'];
}
$where .= ' and member_id in ('.implode(',',$members).')';
unset($filter['member_uname']);
}
if(isset($filter['ship_mobile'])){
$reships = array(0);
$Oreship = $Obj->model("reship");
$reship = $Oreship->getList('reship_id',array('ship_mobile|head'=>$filter['ship_mobile']));
foreach ($reship as $v) {
$reships[] = $v['member_id'];
}
$where .= ' and reship_id in ('.implode(',',$reships).')';
unset($filter['ship_mobile']);
}
if(isset($filter['return_bn'])){
$return_products = array(0);
$Oreturn = $Obj->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 return_id in ('.implode(',',$return_products).')';
unset($filter['return_bn']);
}
if(isset($filter['payment'])){
$payment_cfgObj = app::get('ome')->model('payment_cfg');
$payment_cfg = $payment_cfgObj->dump(array('id'=>$filter['payment']), 'custom_name');
$where .= ' and paymethod = "'.$payment_cfg['custom_name'].'"';
unset($filter['payment']);
}
if(isset($filter['problem_id'])){
$problemObj = app::get('ome')->model('return_product_problem');
$problemdata = $problemObj->dump(array('problem_id'=>$filter['problem_id']), 'problem_name');
$where .= ' and problem_name = "'.$problemdata['problem_name'].'"';
unset($filter['problem_id']);
}
return $where.' and '.parent::_filter($filter,$tableAlias,$baseWhere);
}
/**
* 得到唯一的aftersale id
* @params null
* @return string aftersale id
*/
public function get_aftersale_bn()
{
/***
$i = rand(0,9999);
do{
if(9999==$i){
$i=0;
}
$i++;
$aftersale_bn = 'A'.time().str_pad($i,4,'0',STR_PAD_LEFT);
$row = $this->dump($aftersale_bn, 'aftersale_bn');
}while($row);
return $aftersale_bn;
***/
//防止并发同分同秒生成同样的售后单号
$prefix = 'A' . date('ymd', time());
$aftersale_bn = kernel::single('eccommon_guid')->incId('aftersale', $prefix, 7, true);
return $aftersale_bn;
}
/**
* 获得日志类型(non-PHPdoc)
* @see dbeav_model::getLogType()
*/
public function getLogType($logParams) {
$type = $logParams['type'];
$logType = 'none';
if ($type == 'export') {
$logType = $this->exportLogType($logParams);
}
elseif ($type == 'import') {
$logType = $this->importLogType($logParams);
}
return $logType;
}
/**
* 导出日志类型
* @param Array $logParams 日志参数
*/
public function exportLogType($logParams) {
$params = $logParams['params'];
$type = 'bill';
if ($logParams['app'] == 'sales' && $logParams['ctl'] == 'admin_aftersale') {
$type .= '_salesBill_afterSales';
}
$type .= '_export';
return $type;
}
/**
* 导入操作日志类型
* @param Array $logParams 日志参数
*/
public function importLogType($logParams) {
$params = $logParams['params'];
$type = 'bill';
if ($logParams['app'] == 'sales' && $logParams['ctl'] == 'admin_aftersale') {
$type .= '_salesBill_afterSales';
}
$type .= '_import';
return $type;
}
/**
* 来源
* @param
* @return string
* @access public
* @author cyyr24@sina.cn
*/
function modifier_archive($row)
{
if($row == '1'){
$row = sprintf("<div style='background-color:%s;float:left;'><span alt='%s' title='%s' style='color:#eeeeee;'>&nbsp;%s&nbsp;</span></div>", 'red', '归档', '归档', '归档');
}else{
$row = '-';
}
return $row;
}
//获取导出明细数据
/**
* 获取exportdetail
* @param mixed $fields fields
* @param mixed $filter filter
* @param mixed $offset offset
* @param mixed $limit limit
* @param mixed $has_title has_title
* @return mixed 返回结果
*/
public function getexportdetail($fields,$filter,$offset=0,$limit=1,$has_title=false){
$mdl_sa = app::get('sales')->model('aftersale');
$mdl_sai = app::get('sales')->model('aftersale_items');
$payment_cfgObj = app::get('ome')->model('payment_cfg');
$payment_cfg = $payment_cfgObj->getList('id,custom_name'); //获取支付方式信息
foreach ($payment_cfg as $v) {
$payment_cfgs[$v['id']] = $v['custom_name'];
}
$Obranch = app::get('ome')->model('branch');
$branch = $Obranch->getList('name,branch_id'); //获取仓库信息
foreach ($branch as $v) {
$branchs[$v['branch_id']] = $v['name'];
}
$aftersale_arr = $mdl_sa->getList('aftersale_bn,aftersale_id', array('aftersale_id' => $filter['aftersale_id']), 0, -1);
$aftersale_bn = array();
foreach($aftersale_arr as $var_aftersale){
$aftersale_bn[$var_aftersale["aftersale_id"]] = $var_aftersale["aftersale_bn"];
}
$aftersale_items_arr = $mdl_sai->getList('*',array('aftersale_id'=>$filter['aftersale_id']), 0, -1,"aftersale_id desc");
$row_num = 1;
if($aftersale_items_arr){
foreach ($aftersale_items_arr as $key => $aftersale_item){
//这里参照原有的fgetlist_csv获取明细数据方法
if($aftersale_item['return_type'] == 'refunded'){
$pay_type = $this->pay_type[$aftersale_item['pay_type']];
$apply_num = $num = $price = $normal_num = $defective_num = '-';
}else{
$pay_type = '-';
$apply_num = $aftersale_item['apply_num'] ? $aftersale_item['apply_num'] : '-';
$num = $aftersale_item['num'] ? $aftersale_item['num'] : '-';
$price = $aftersale_item['price'] ? $aftersale_item['price'] : '-';
$normal_num = $aftersale_item['normal_num'];
$defective_num = $aftersale_item['defective_num'];
}
// $current_aftersale_bn = mb_convert_encoding($aftersale_bn[$aftersale_item['aftersale_id']], 'GBK', 'UTF-8');
// $aftersaleItemRow['*:销售单号'] = $current_aftersale_bn;
$aftersaleItemRow['pay_type'] = $pay_type;
$aftersaleItemRow['account'] = $aftersale_item['account'] ? : '-';
$aftersaleItemRow['bank'] = $aftersale_item['bank'] ? : '-';
$aftersaleItemRow['pay_account'] = $aftersale_item['pay_account'] ? : '-';
$aftersaleItemRow['money'] = $aftersale_item['money'] ? : '-';
$aftersaleItemRow['refunded'] = $aftersale_item['refunded'] ? : '-';
$payment = $aftersale_item['payment'];
if($payment){
$payment = $payment_cfgs[$payment];
}
$aftersaleItemRow['payment'] = $payment ? $payment : '-';
$aftersaleItemRow['create_time'] = !empty($aftersale_item['create_time'])?date('Y-m-d H:i:s',$aftersale_item['create_time']):'-';
$aftersaleItemRow['last_modified'] = !empty($aftersale_item['last_modified'])?date('Y-m-d H:i:s',$aftersale_item['last_modified']):'-';
$aftersaleItemRow['bn'] = $aftersale_item["bn"] ? : '-';
$aftersaleItemRow['product_name'] = $aftersale_item["product_name"] ? $aftersale_item["product_name"] : '-';
$aftersaleItemRow['num'] = $num;
$aftersaleItemRow['apply_num'] = $apply_num;
$aftersaleItemRow['price'] = $price;
//销售金额
$aftersaleItemRow['saleprice'] = $aftersale_item['saleprice'];
$aftersaleItemRow['branch_id'] = $branchs[$aftersale_item['branch_id']];
$aftersaleItemRow['item_return_type'] = $this->return_type[$aftersale_item['return_type']];
$aftersaleItemRow['normal_num'] = $normal_num;
$aftersaleItemRow['defective_num'] = $defective_num;
$aftersaleItemRow['settlement_amount'] = $aftersale_item['settlement_amount'];
$aftersaleItemRow['platform_amount'] = $aftersale_item['platform_amount'];
$aftersaleItemRow['actually_amount'] = $aftersale_item['actually_amount'];
$aftersaleItemRow['platform_pay_amount'] = $aftersale_item['platform_pay_amount'];
$data[$aftersale_item['aftersale_id']][] = $aftersaleItemRow;
$row_num++;
}
}
//明细标题处理
if($data && $has_title){
$title = array(
'*:售后单号',
'*:支付类型',
'*:退款帐号',
'*:退款银行',
'*:收款帐号',
'*:申请退款金额',
'*:已退款金额',
'*:付款方式',
'*:退款申请时间',
'*:退款完成时间',
'*:货品',
'*:货品名称',
'*:数量',
'*:单价',
'*:销售价',
'*:仓库名称',
'*:售后类型',
);
foreach ((array)$title as $key => $value) {
$title[$key] = mb_convert_encoding($value, 'GBK', 'UTF-8');
}
$data[0] = implode(',', $title);
}
if($data){
ksort($data);
}
return $data;
}
/**
* 根据查询条件获取导出数据
* @Author: xueding
* @Vsersion: 2022/5/25 上午10:35
* @param $fields
* @param $filter
* @param $has_detail
* @param $curr_sheet
* @param $start
* @param $end
* @param $op_id
*/
public function getExportDataByCustom($fields, $filter, $has_detail, $curr_sheet, $start, $end, $op_id)
{
$params = [
'fields' => $fields,
'filter' => $filter,
'has_detail' => $has_detail,
'curr_sheet' => $curr_sheet,
'op_id' => $op_id,
];
$aftersalesListData = kernel::single('ome_func')->exportDataMain(__CLASS__,$params);
if (!$aftersalesListData) {
return false;
}
//根据选择的字段定义导出的第一行标题
if ($curr_sheet == 1) {
$data['content']['main'][] = $this->getCustomExportTitle($aftersalesListData['title']);
}
$aftersales_items_value = array_values($this->aftersalesItemsExportTitle());
$main_columns = array_values($aftersalesListData['title']);
$aftersaleIds = array_column($aftersalesListData['content'],'aftersale_id');
//所有的子售后单据数据
$aftersalesItems = $this->getexportdetail('', array('aftersale_id' => $aftersaleIds));
$aftersaleList = $aftersalesListData['content'];
foreach ($aftersaleList as $aftersaleRow) {
$aftersaleRow['order_id'] = $aftersaleRow['order_id'] . "\t";
$aftersaleRow['return_id'] = $aftersaleRow['return_id'] . "\t";
$aftersaleRow['reship_id'] = $aftersaleRow['reship_id'] . "\t";
$aftersaleRow['return_apply_id'] = $aftersaleRow['return_apply_id'] . "\t";
$aftersaleRow['refundmoney'] = $aftersaleRow['refundmoney'] ? $aftersaleRow['refundmoney'] : '-';
$aftersaleRow['paymethod'] = $aftersaleRow['paymethod'] ? $aftersaleRow['paymethod'] : '-';
$aftersaleRow['refund_apply_money'] = $aftersaleRow['refund_apply_money'] ? $aftersaleRow['refund_apply_money'] : '-';
$aftersaleRow['ship_mobile'] = $aftersaleRow['ship_mobile'] ? $aftersaleRow['ship_mobile'] : '-';
$aftersaleRow['pay_type'] = $aftersaleRow['pay_type'] ? $aftersaleRow['pay_type'] : '-';
$aftersaleRow['account'] = $aftersaleRow['account'] ? $aftersaleRow['account'] : '-';
$aftersaleRow['bank'] = $aftersaleRow['bank'] ? $aftersaleRow['bank'] : '-';
$aftersaleRow['pay_account'] = $aftersaleRow['pay_account'] ? $aftersaleRow['pay_account'] : '-';
$aftersaleRow['check_op_id'] = $aftersaleRow['check_op_id'] ? $aftersaleRow['check_op_id'] : '-';
$aftersaleRow['op_id'] = $aftersaleRow['op_id'] ? $aftersaleRow['op_id'] : '-';
$aftersaleRow['refund_op_id'] = $aftersaleRow['refund_op_id'] ? $aftersaleRow['refund_op_id'] : '-';
$objects = $aftersalesItems[$aftersaleRow['aftersale_id']];
//title
$items_fields = implode(',', $aftersales_items_value);
$all_fields = implode(',', $main_columns) . ',' . $items_fields;
//没有退款商品明细,直接输出售后单主信息
if(empty($objects)){
$aftersalesDataRow = $aftersaleRow;
$exptmp_data = array();
foreach (explode(',', $all_fields) as $key => $col)
{
if (isset($aftersalesDataRow[$col])) {
$aftersalesDataRow[$col] = mb_convert_encoding($aftersalesDataRow[$col], 'GBK', 'UTF-8');
$exptmp_data[] = $aftersalesDataRow[$col];
} else {
$exptmp_data[] = '';
}
}
$data['content']['main'][] = implode(',', $exptmp_data);
continue;
}
//items
if ($objects) {
foreach ($objects as $obj) {
$aftersalesDataRow = array_merge($aftersaleRow, $obj);
$exptmp_data = [];
foreach (explode(',', $all_fields) as $key => $col) {
if (isset($aftersalesDataRow[$col])) {
$aftersalesDataRow[$col] = mb_convert_encoding($aftersalesDataRow[$col], 'GBK', 'UTF-8');
$exptmp_data[] = $aftersalesDataRow[$col];
} else {
$exptmp_data[] = '';
}
}
$data['content']['main'][] = implode(',', $exptmp_data);
}
}
}
return $data;
}
/**
* 获取CustomExportTitle
* @param mixed $main_title main_title
* @return mixed 返回结果
*/
public function getCustomExportTitle($main_title)
{
$main_title = array_keys($main_title);
$aftersaleItems_title = array_keys($this->aftersalesItemsExportTitle());
$title = array_merge($main_title, $aftersaleItems_title);
return mb_convert_encoding(implode(',', $title), 'GBK', 'UTF-8');
}
/**
* aftersalesItemsExportTitle
* @return mixed 返回值
*/
public function aftersalesItemsExportTitle()
{
$items_title = array(
'详情支付类型' => 'pay_type',
'详情退款帐号' => 'account',
'详情退款银行' => 'bank',
'详情收款帐号' => 'pay_account',
'详情申请退款金额' => 'money',
'详情已退款金额' => 'refunded',
'详情付款方式' => 'payment',
'详情退款申请时间' => 'create_time',
'详情退款完成时间' => 'last_modified',
'详情货号' => 'bn',
'详情货品名称' => 'product_name',
'详情申请数量' => 'apply_num',
'详情数量' => 'num',
'详情单价' => 'price',
'详情销售价' => 'saleprice',
'详情仓库名称' => 'branch_id',
'详情售后类型' => 'item_return_type',
'详情良品' => 'normal_num',
'详情不良品' => 'defective_num',
'平台承担' => 'platform_amount',
'结算金额' => 'settlement_amount',
'客户实付' => 'actually_amount',
'支付优惠金额' => 'platform_pay_amount',
);
return $items_title;
}
/**
* modifier_member_id
* @param mixed $member_id ID
* @param mixed $list list
* @param mixed $row row
* @return mixed 返回值
*/
public function modifier_member_id($member_id, $list, $row)
{
static $get_from_db, $order_list;
if ($get_from_db === true) return $order_list[$row['order_id']]['uname'];
$member_list = array();
foreach ($list as $value) {
$order_list[$value['order_id']]['member_id'] = $value['member_id'];
$member_list[$value['member_id']] = array();
}
if ($mid = array_keys($member_list)) {
$m1Mdl = app::get('ome')->model('members');
foreach ($m1Mdl->getList('uname,member_id', array('member_id' => $mid)) as $value) {
$member_list[$value['member_id']]['uname'] = $value['uname'];
}
}
foreach ($order_list as $order_id => $value) {
$value['uname'] = $member_list[$value['member_id']]['uname'];
if ($this->is_export_data) {
if ('false' != app::get('ome')->getConf('ome.sensitive.exportdata.encrypt')) {
$value['uname'] = kernel::single('ome_view_helper2')->modifier_ciphertext($value['uname'], 'aftersale', 'uname');
}
$order_list[$order_id] = $value;
continue;
}
$is_encrypt = kernel::single('ome_security_hash')->check_encrypt($value['uname']);
if ($value['uname'] && $is_encrypt) {
$encrypt = kernel::single('ome_view_helper2')->modifier_ciphertext($value['uname'], 'aftersale', 'uname');
$value['uname'] = <<<HTML
<a class="data-hide" href="javascript:void(0);" onclick="Ex_Loader('security',function(){new Security({url:'index.php?app=ome&ctl=admin_member&act=showSensitiveData&p[0]={$order_id}',clickElement:\$(event.target)}).desHtml(\$(event.target).getNext()); });"></a><span><span sensitive-field="uname">{$encrypt}</span></span>
HTML;
}
$order_list[$order_id] = $value;
}
$get_from_db = true;
return $order_list[$row['order_id']]['uname'];
}
/**
* modifier_ship_mobile
* @param mixed $mobile mobile
* @param mixed $list list
* @param mixed $row row
* @return mixed 返回值
*/
public function modifier_ship_mobile($mobile, $list, $row)
{
if ($this->is_export_data) return $mobile;
$is_encrypt = kernel::single('ome_security_hash')->check_encrypt($mobile);
if (!$is_encrypt) return $mobile;
$base_url = kernel::base_url(1);
$aftersale_id = $row['aftersale_id'];
$encryptMobile = kernel::single('ome_view_helper2')->modifier_ciphertext($mobile, 'aftersale', 'ship_mobile');
$return = <<<HTML
<a class="data-hide" href="javascript:void(0);" onclick="Ex_Loader('security',function(){new Security({url:'index.php?app=sales&ctl=admin_aftersale&act=showSensitiveData&p[0]={$aftersale_id}',clickElement:\$(event.target)}).desHtml(\$(event.target).getNext()); });"></a><span><span sensitive-field="ship_mobile">{$encryptMobile}</span></span>
HTML;
return $mobile ? $return : $mobile;
}
}