saleRefundId ?? 0;
$refund = self::getById($saleRefundId, true);
if (empty($refund)) {
return false;
}
if ($refund->status != 0) {
return false;
}
$orderSn = $refund->orderSn ?? '';
$relateOrderSn = $refund->relateOrderSn ?? '';
$shopId = $refund->shopId ?? 0;
$refundPrice = $refund->refundPrice ?? 0;
$shop = ShopClass::getById($shopId, true);
$sjId = $shop->sjId ?? 0;
$sj = SjClass::getById($sjId, true);
$sjName = $sj->name ?? '';
$shopName = $shop->shopName ?? '';
$currentName = $shopName == '首店' ? $sjName : $sjName . ' ' . $shopName;
$content = "" . $currentName . "";
$content .= "退款信息
";
$content .= '--------------------------------
';
$content .= '订单号
';
$content .= '' . $relateOrderSn . '
';
$content .= '--------------------------------
';
$content .= '买家信息:
';
$content .= '' . $refund->customName . '
';
$content .= '' . $refund->customMobile . '
';
$content .= '--------------------------------
';
$content .= "
";
$itemList = RefundOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null);
if (!empty($itemList)) {
foreach ($itemList as $itemInfo) {
$name = $itemInfo['name'] ?? '';
$num = $itemInfo['xhNum'] ?? 0;
$unitName = $itemInfo['xhUnitName'] ?? '扎';
$content .= "" . $name . ' 退' . $num . $unitName . "
";
}
}
$content .= '--------------------------------
';
$content .= "
";
$content .= "
";
$content .= "金额:{$refundPrice}
";
$content .= "
";
$content .= "状态:待审核
";
$content .= "
";
$content .= '';
$ext = ShopExtClass::getByCondition(['shopId' => $shopId]);
$printSn = $ext['printSn'] ?? '';
if (!empty($printSn)) {
$p = new printUtil($printSn);
$p->printMsg($content, $shop, $orderSn);
}
}
//审核通过 ssh 20230811
public static function passRefund($refund, $order)
{
if ($refund->status == 1) {
util::fail('已通过');
}
if ($refund->status == 2) {
util::fail('已驳回');
}
if ($refund->status == 3) {
util::fail('已取消');
}
$refund->status = 1;
$refund->save();
$order->refund = OrderClass::REFUND_YES;
$order->save();
//退货并退款的售后,需要减少订单的总成本
$reduceCost = 0;
$orderSn = $order->orderSn ?? '';
$onlinePay = $order->onlinePay ?? 1;
$shopId = $order->shopId ?? 0;
$mainId = $order->mainId ?? 0;
$sjId = $order->sjId ?? 0;
$payWay = $order->payWay;
$customName = $order->customName ?? '';
$refundSn = $refund->orderSn ?? '';
$refundPrice = $refund->refundPrice ?? 0;
$refundType = $refund->refundType ?? 1;
if ($refundType == RefundOrderClass::REFUND_TYPE_MONEY_GOOD) {
$refundItemList = RefundOrderItemClass::getAllByCondition(['orderSn' => $refundSn], null, '*', null, true);
if (empty($refundItemList)) {
util::fail('没有找到售后订单的花材');
}
$refundData = [];
foreach ($refundItemList as $key => $val) {
$val->status = 1;
$val->save();
$orderItemId = $val->orderItemId ?? 0;
if (empty($orderItemId)) {
util::fail('旧订单无法售后,请联系管理员');
}
$refundData[$orderItemId] = $val;
}
$refundItemList = OrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
if (empty($refundItemList)) {
util::fail('订单花材错误呢');
}
foreach ($refundItemList as $oneKey => $oneItem) {
$oneItemId = $oneItem->id;
$productId = $oneItem->productId ?? 0;
$ptItemId = $oneItem->itemId ?? 0;
$itemName = $oneItem->name ?? '';
$cost = $oneItem->cost ?? 0;
$orderItemNum = $oneItem->xhNum ?? 0;
$refundNum = $oneItem->refundNum ?? 0;
$remainNum = bcsub($orderItemNum, $refundNum);
if (isset($refundData[$oneItemId])) {
$refundSingle = $refundData[$oneItemId];
$num = $refundSingle->xhNum ?? 0;
if ($num > $remainNum) {
util::fail("{$itemName} 超过可退数量");
}
$oneItem->refundNum = bcadd($refundNum, $num);
$oneItem->save();
$currentCost = bcmul($cost, $num, 2);
$reduceCost = bcadd($currentCost, $reduceCost, 2);
if ($refundSingle->xhUnitType == 1) {
$smallNum = $num;
$bigNum = 0;
} else {
$smallNum = 0;
$bigNum = $num;
}
$itemNum = $refundSingle->itemNum;
//大单位退款才变库存,小单位不变化库存!!
if ($bigNum > 0 || $smallNum > 0) {
//退货加库存
$stockInfo = ProductClass::addStock($productId, $bigNum, $smallNum);
ProductClass::tryRecoverLimitBuyWhenStockRollbackFromZero($productId, $stockInfo['oldStock']);
$oldStock = $stockInfo['oldStock'] ?? 0;
$newStock = $stockInfo['newStock'] ?? 0;
//库存变动记录
$recordData = [];
$recordData['relateName'] = $customName;
$recordData['itemNum'] = $itemNum;
$recordData['sjId'] = $sjId;
$recordData['shopId'] = $shopId;
$recordData['mainId'] = $mainId;
$recordData['orderSn'] = $orderSn;
$recordData['itemId'] = $ptItemId;
$recordData['oldStock'] = $oldStock; //当时库存
$recordData['productId'] = $productId;
$recordData['newStock'] = $newStock;// 最新库存
$recordData['io'] = 1;
StockRecordClass::ghsRefundAddRecord($recordData);
$refundSingle->itemStock = $oldStock;
$refundSingle->newStock = $newStock;
$refundSingle->save();
}
}
}
}
$refundPackCost = $refund->refundPackCost ?? 0;
$reduceCost = bcadd($reduceCost, $refundPackCost, 2);
$refundSendCost = $refund->refundSendCost ?? 0;
$reduceCost = bcadd($reduceCost, $refundSendCost, 2);
//售后减掉订单的成本
if ($order->remainCost > $reduceCost) {
$order->remainCost = bcsub($order->remainCost, $reduceCost, 2);
} else {
$order->remainCost = 0;
}
$order->save();
$shop = ShopClass::getLockById($shopId);
if (empty($shop)) {
util::fail('没有找到门店73');
}
$main = MainClass::getLockById($mainId);
if (empty($main)) {
util::fail('没有main信息32');
}
//总支出增加
$currentTotalExpend = bcadd($main->totalExpend, $refundPrice, 2);
$main->totalExpend = $currentTotalExpend;
$totalRefund = bcadd($main->totalRefund, $refundPrice, 2);
$main->totalRefund = $totalRefund;
$main->save();
//记录总的退款金额
$currentTkPrice = bcadd($order->tkPrice, $refundPrice, 2);
$order->tkPrice = $currentTkPrice;
$order->refund = OrderClass::REFUND_YES;
$order->save();
$customId = $order->customId;
$custom = CustomClass::getLockById($customId);
if (empty($custom)) {
util::fail('没有找到客户');
}
// 根据 $refundPrice 更新累计消费 buyAmount
$buyAmount = bcsub($custom->buyAmount, $refundPrice, 2);
$custom->buyAmount = $buyAmount;
$custom->save();
if ($onlinePay == dict::getDict('onlinePay', 'yes')) {
//退款流程
if ($payWay == dict::getDict('payWay', 'wxPay') || $payWay == dict::getDict('payWay', 'alipay')) {
$order->refundPrice = $refundPrice;
$currentActPrice = bcsub($order->actPrice, $refundPrice, 2);
if ($currentActPrice < 0) {
util::fail('可退款金额不足');
}
$order->actPrice = $currentActPrice;
$currentRealPrice = bcsub($order->realPrice, $refundPrice, 2);
if ($currentRealPrice < 0) {
util::fail('可退款金额不足哦');
}
$order->realPrice = $currentRealPrice;
$order->save();
//门店余额减少
ShopClass::saleRefundReduceBalance($main, $shop, $refund, $refundPrice);
} else {
util::fail('此支付方式暂不支持退款哦');
}
} else {
if ($payWay == dict::getDict('payWay', 'debtPay')) {
$clearId = $order->clearId;
if (!empty($clearId)) {
util::fail('订单已结账,无法发起退款');
}
//门店应收款减少
$currentMayGathering = bcsub($main->mayGathering, $refundPrice, 2);
if ($currentMayGathering < 0) {
noticeUtil::push("应付款有问题 {$main->mayGathering} {$refundPrice}", '15280215347');
util::fail('应付款有问题哦');
}
$main->mayGathering = $currentMayGathering;
$main->save();
$order->refundPrice = $refundPrice;
$currentActPrice = bcsub($order->actPrice, $refundPrice, 2);
if ($currentActPrice < 0) {
util::fail('可退款金额不足');
}
$order->actPrice = $currentActPrice;
$currentRealPrice = bcsub($order->realPrice, $refundPrice, 2);
if ($currentRealPrice < 0) {
util::fail('可退款金额不足哈');
}
$order->realPrice = $currentRealPrice;
$currentRemainDebt = bcsub($order->remainDebtPrice, $refundPrice, 2);
if ($currentRemainDebt < 0) {
util::fail('退款金额有问题');
}
if ($currentRemainDebt == 0) {
$order->debt = OrderClass::DEBT_NO;
}
$order->remainDebtPrice = $currentRemainDebt;
$order->save();
//客户欠款金额减少
CustomClass::refundDebtAmountReduce($custom, $refund, $order);
} elseif ($payWay == dict::getDict('payWay', 'balancePay')) {
$order->refundPrice = $refundPrice;
$currentActPrice = bcsub($order->actPrice, $refundPrice, 2);
if ($currentActPrice < 0) {
util::fail('可退款金额已不足了');
}
$currentRealPrice = bcsub($order->realPrice, $refundPrice, 2);
if ($currentRealPrice < 0) {
util::fail('可退款金额已不足');
}
$order->actPrice = $currentActPrice;
$order->realPrice = $currentRealPrice;
$order->save();
// 花店采购余额付:扣款在 xhGhsCustom/xhGhs 成对账户,不走 ghs 门店 main 余额
$pair = GhsRechargeSettleService::lockAccountPair($custom);
CustomClass::refundBalancePayToPair($pair['custom'], $pair['ghs'], $refund, $order);
} elseif ($payWay == dict::getDict('payWay', 'cash')) {
$moneyData = [
'shopId' => $shopId,
'amount' => $refundPrice,
'orderSn' => $order->orderSn,
'mainId' => $mainId,
];
ShopMoneyClass::ghsRefundHdOutAmount($moneyData, $main);
$order->refundPrice = $refundPrice;
$currentActPrice = bcsub($order->actPrice, $refundPrice, 2);
if ($currentActPrice < 0) {
util::fail('可退款金额已不足。');
}
$order->actPrice = $currentActPrice;
$currentRealPrice = bcsub($order->realPrice, $refundPrice, 2);
if ($currentRealPrice < 0) {
util::fail('可退款金额不足那');
}
$order->realPrice = $currentRealPrice;
$order->save();
} else {
//其它线下退款直接完成
$order->refundPrice = $refundPrice;
$currentActPrice = bcsub($order->actPrice, $refundPrice, 2);
if ($currentActPrice < 0) {
util::fail('可退款金额已不足。');
}
$order->actPrice = $currentActPrice;
$currentRealPrice = bcsub($order->realPrice, $refundPrice, 2);
if ($currentRealPrice < 0) {
util::fail('可退款金额不足那');
}
$order->realPrice = $currentRealPrice;
$order->save();
}
}
}
public static function rejectRefund($refund, $rejectReason)
{
if ($refund->status == 1) {
util::fail('已通过');
}
if ($refund->status == 2) {
util::fail('已驳回');
}
if ($refund->status == 3) {
util::fail('已取消');
}
$refund->status = 2;
$refund->rejectReason = $rejectReason;
$refund->save();
$cgRefundId = $refund->cgRefundId ?? 0;
$cgRefund = CgRefundClass::getById($cgRefundId, true);
if (empty($cgRefund)) {
util::fail('售后信息不完整');
}
CgRefundClass::reject($cgRefund, $rejectReason);
return true;
}
public static function cancelRefund($refund)
{
if ($refund->status == self::STATUS_COMPLETE) {
util::fail('退款已通过');
}
if ($refund->status == self::STATUS_REJECT) {
util::fail('退款已驳回');
}
if ($refund->status == self::STATUS_CANCEL) {
util::fail('退款已取消');
}
$refund->status = self::STATUS_CANCEL;
$refund->save();
}
//验证信息 ssh 20220401
public static function valid($refund, $mainId)
{
if (empty($refund)) {
util::fail('没有找到退款信息');
}
if (isset($refund->mainId) == false || $refund->mainId != $mainId) {
util::fail('无法操作');
}
return true;
}
// 订单列表
public static function getOrderList($where)
{
$data = self::getList('*', $where, 'addTime DESC');
$totalRefundPrice = self::sum($where, 'refundPrice');
$data['totalRefundPrice'] = $totalRefundPrice;
$list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
if (empty($list)) {
return $data;
}
$data['list'] = $list;
return $data;
}
//2021.1.23 lqh 订单详情
public static function getOrderDetail($orderSn, $shopId)
{
$orderData = self::orderExist(['orderSn' => $orderSn, 'shopId' => $shopId]);
$refundInfo = RefundOrderItemClass::getOrderItemDetail($orderSn);
$itemData = [];
if ($refundInfo) {
foreach ($refundInfo as $v) {
$info = json_decode($v['itemInfo'], true);
$tmp = $info;
$tmp['itemCover'] = self::groupImg($info['itemCover']);
unset($v['itemInfo']);
//兼容 旧数据,没有 rank (花材等级 默认给B)
if (!isset($tmp['rank'])) {
$tmp['rank'] = 'B';
}
$tmp = array_merge($tmp, $v);
$itemData[] = $tmp;
}
}
//下面注释放开前,员工id要用shopAdminId
//$orderData = self::groupAdmin($orderData);
$orderData['itemInfo'] = $itemData;
return $orderData;
}
//2021.1.23 lqh 判断定时是否存在
public static function orderExist($where)
{
$orderData = self::getByCondition($where);
if (!$orderData) {
util::fail('订单不存在');
}
return $orderData;
}
// 组装 orderItem lqh 2021.1.25
public static function groupOrderItem($ghsItemInfo, $refundOrderSn, $preOrderItem)
{
$productIds = array_column($ghsItemInfo, 'productId');
$productData = ProductClass::getByIds($productIds, null, 'id');
//写入详情表
$batchData = [];
foreach ($ghsItemInfo as $v) {
$tmp = [];
$productId = $v['productId'];
$itemId = $productData[$productId]['itemId'];
$name = $productData[$productId]['name'] ?? '';//花材名称
$rank = $productData[$productId]['rank'] ?? 'B';// 花材级别
$tmp['orderSn'] = $refundOrderSn;
$tmp['itemId'] = $itemId;
$tmp['name'] = $name;
$tmp['productId'] = $v['productId'];
$unitNum = $productData[$productId]['ratio'] ?? 0;
$tmp['itemStock'] = $v['oldStock'];//当时库存
$tmp['newStock'] = $v['newStock'];//当时库存
$tmp['itemNum'] = ProductClass::mergeItemNum($v['bigNum'], $v['smallNum'], $unitNum);// 数量
$tmp['itemPrice'] = $preOrderItem[$productId]['unitPrice'] ?? 0;//当时售卖的价格
$tmp['itemCost'] = $preOrderItem[$productId]['cost'] ?? 0;//当时成本价
$stockFormat = ProductClass::formatStock($tmp['itemStock'], $unitNum); // 库存总单位数量转大小单位的数量
$sjId = $productData[$productId]['sjId'] ?? 0;
$shopId = $productData[$productId]['shopId'] ?? 0;
$tmp['sjId'] = $sjId;
$tmp['shopId'] = $shopId;
$itemInfo = [
'itemName' => $name,
'itemCover' => $productData[$productId]['cover'] ?? '',
'bigNum' => $v['bigNum'] ?? 0,//数量(大单位)
'smallNum' => $v['smallNum'] ?? 0,//数量(小单位)
'bigNumStock' => $stockFormat['bigNum'],// 当时库存大单位数
'smallNumStock' => $stockFormat['smallNum'],//当时库存 小单位数
'itemUnit' => $unitNum ? 2 : 1,
'ratio' => $unitNum,
'rank' => $rank,
'bigUnit' => $productData[$productId]['bigUnit'],
'smallUnit' => $productData[$productId]['smallUnit'],
];
$tmp['itemInfo'] = json_encode($itemInfo);
$batchData[] = $tmp;
}
return $batchData;
}
//2021.1.23 lqh 订单详情
public static function getOrderDetailByRelateOrder($orderSn, $shopId)
{
$orderData = self::orderExist(['relateOrderSn' => $orderSn, 'shopId' => $shopId]);
$refundInfo = RefundOrderItemClass::getOrderItemDetail($orderData['orderSn']);
$itemData = [];
if ($refundInfo) {
foreach ($refundInfo as $v) {
$info = json_decode($v['itemInfo'], true);
$tmp = $info;
$tmp['itemCover'] = self::groupImg($info['itemCover']);
unset($v['itemInfo']);
//兼容 旧数据,没有 rank (花材等级 默认给B)
if (!isset($tmp['rank'])) {
$tmp['rank'] = 'B';
}
$tmp = array_merge($tmp, $v);
$itemData[] = $tmp;
}
}
$orderData['itemInfo'] = $itemData;
$kdOrder = OrderClass::getByOrderSn($orderSn);
$orderData['orderInfo'] = $kdOrder;
return $orderData;
}
public static function exportRefundData($respond, $mainId)
{
$refundList = $respond['list'] ?? [];
if (empty($refundList)) {
util::fail('没有数据');
}
$orderSnList = array_column($refundList, 'orderSn');
$refundItemData = RefundOrderItemClass::getAllByCondition(['orderSn' => ['in', $orderSnList]], null, '*');
$refundItemList = [];
$pIds = [];
if (!empty($refundItemData)) {
foreach ($refundItemData as $itemInfo) {
$orderSn = $itemInfo['orderSn'] ?? '';
$refundItemList[$orderSn][] = $itemInfo;
$productId = $itemInfo['productId'] ?? 0;
$pIds[] = $productId;
}
}
foreach ($refundList as $key => $refundInfo) {
$orderSn = $refundInfo['orderSn'] ?? '';
$itemList = $refundItemList[$orderSn] ?? [];
$refundList[$key]['itemList'] = $itemList;
}
$pIds = array_unique($pIds);
$pIds = array_filter($pIds);
$productList = ProductClass::getAllByCondition(['id' => ['in', $pIds]], null, '*', null);
$classList = ItemClassClass::getAllByCondition(['mainId' => $mainId], null, '*', 'id');
$classMap = [];
if (!empty($productList)) {
foreach ($productList as $product) {
$productId = $product['id'] ?? 0;
$classId = $product['classId'];
$class = $classList[$classId] ?? [];
$className = $class['name'] ?? '未分类';
$classMap[$productId] = ['name' => $className, 'classId' => $classId];
}
}
$phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
require_once($phpExcelFile . 'Classes/PHPExcel.php');
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Document")
->setSubject("Office 2007 XLSX Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("file");
$ghsTitle = '供货商';
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
$objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
$objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', '退款单号');
$objPHPExcel->getActiveSheet()->setCellValue('B1', '订单日期');
$objPHPExcel->getActiveSheet()->setCellValue('C1', '订单号');
$objPHPExcel->getActiveSheet()->setCellValue('D1', '客户');
$objPHPExcel->getActiveSheet()->setCellValue('E1', '退款金额');
$objPHPExcel->getActiveSheet()->setCellValue('F1', '售后类型');
$objPHPExcel->getActiveSheet()->setCellValue('G1', '类型');
$objPHPExcel->getActiveSheet()->setCellValue('H1', '操作人');
$objPHPExcel->getActiveSheet()->setCellValue('I1', '售后原因');
$objPHPExcel->getActiveSheet()->setCellValue('J1', '驳回原因');
$objPHPExcel->getActiveSheet()->setCellValue('K1', '备注');
$objPHPExcel->getActiveSheet()->setCellValue('L1', '状态');
$objPHPExcel->getActiveSheet()->setCellValue('M1', '申请日期');
$objPHPExcel->getActiveSheet()->setCellValue('N1', '通过日期');
$objPHPExcel->getActiveSheet()->setCellValue('O1', '花材ID');
$objPHPExcel->getActiveSheet()->setCellValue('P1', '花材名称');
$objPHPExcel->getActiveSheet()->setCellValue('Q1', '单价');
$objPHPExcel->getActiveSheet()->setCellValue('R1', '数量');
$objPHPExcel->getActiveSheet()->setCellValue('S1', '金额');
$objPHPExcel->getActiveSheet()->setCellValue('T1', '花材分类');
$objPHPExcel->getActiveSheet()->setCellValue('U1', '售后原因ID');
$objPHPExcel->getActiveSheet()->setCellValue('V1', '售后原因');
//设置宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(16);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(14);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(14);
$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(14);
$objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth(25);
//加粗
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('J1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('K1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('L1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('M1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('N1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('O1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('P1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('Q1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('R1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('S1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('T1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('U1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('V1')->getFont()->setSize(9)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('L1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('M1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('N1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('O1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('P1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('Q1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('R1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('S1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('L1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('M1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('N1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('O1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('P1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('Q1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('R1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('S1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('T1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('U1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('V1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$baseRow = 2;
$x = 0;
foreach ($refundList as $key => $orderData) {
$currentList = $orderData['itemList'] ?? [];
$statusName = '待审核';
if ($orderData['status'] == 1) {
$statusName = '已通过';
}
if ($orderData['status'] == 2) {
$statusName = '已驳回';
}
if ($orderData['status'] == 3) {
$statusName = '已取消';
}
$refundTypeName = $orderData['refundType'] == 1 ? '退货并退款' : '仅退款';
$typeName = $orderData['book'] == 0 ? '常规' : '预订退款';
$caseName = '质量原因';
if ($orderData['cause'] == 1) {
$caseName = '多开错开';
}
if ($orderData['cause'] == 2) {
$caseName = '打包原因';
}
if ($orderData['cause'] == 3) {
$caseName = '物流原因';
}
if (!empty($currentList)) {
foreach ($currentList as $k => $refundInfo) {
$i = $baseRow + $x;
$x++;
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['orderSn']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['orderTime']);
$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $orderData['relateOrderSn']);
$objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['customName']);
$objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['refundPrice']);
$objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $refundTypeName);
$objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $typeName);
$objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $orderData['shopAdminName']);
$objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $caseName);
$objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $orderData['rejectReason']);
$objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $orderData['remark']);
$objPHPExcel->getActiveSheet()->setCellValue('L' . $i, $statusName);
$objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $orderData['addTime']);
$objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $orderData['passTime']);
$objPHPExcel->getActiveSheet()->setCellValue('O' . $i, $refundInfo['productId']);
$objPHPExcel->getActiveSheet()->setCellValue('P' . $i, $refundInfo['name']);
$objPHPExcel->getActiveSheet()->setCellValue('Q' . $i, $refundInfo['xhUnitPrice']);
$objPHPExcel->getActiveSheet()->setCellValue('R' . $i, $refundInfo['xhNum']);
$objPHPExcel->getActiveSheet()->setCellValue('S' . $i, $refundInfo['xhPrice']);
$productId = $refundInfo['productId'];
$classInfo = $classMap[$productId] ?? [];
$className = $classInfo['name'] ?? '未分类';
$objPHPExcel->getActiveSheet()->setCellValue('T' . $i, $className);
$objPHPExcel->getActiveSheet()->setCellValue('U' . $i, $refundInfo['refundOptionId']);
$objPHPExcel->getActiveSheet()->setCellValue('V' . $i, $refundInfo['refundOptionName']);
//居左
$objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('J' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('K' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('L' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('M' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('N' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('O' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('P' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('Q' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('R' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('S' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('T' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('U' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('V' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
} else {
$i = $baseRow + $x;
$x++;
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['orderSn']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['orderTime']);
$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $orderData['relateOrderSn']);
$objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['customName']);
$objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['refundPrice']);
$objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $refundTypeName);
$objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $typeName);
$objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $orderData['shopAdminName']);
$objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $caseName);
$objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $orderData['rejectReason']);
$objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $orderData['remark']);
$objPHPExcel->getActiveSheet()->setCellValue('L' . $i, $statusName);
$objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $orderData['addTime']);
$objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $orderData['passTime']);
$objPHPExcel->getActiveSheet()->setCellValue('O' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('P' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('Q' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('R' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('S' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('T' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('U' . $i, '');
$objPHPExcel->getActiveSheet()->setCellValue('V' . $i, '');
//居左
$objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('J' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('K' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('L' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('M' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('N' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('O' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('P' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('Q' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('R' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('S' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('T' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('U' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('V' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
}
$fileName = '售后记录-' . time();
$objPHPExcel->getActiveSheet()->setTitle($fileName);
$objPHPExcel->setActiveSheetIndex(0);
$dir = './priceTable/' . $mainId;
if (file_exists($dir) == false) {
mkdir($dir, 0777, true);
}
$date = $fileName;
$file = $date . '.xls';
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
if (file_exists($dir . '/' . $file)) {
unlink($dir . '/' . $file);
}
$objWriter->save($dir . '/' . $file);
$fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
util::success(['file' => $fileUrl, 'shortFile' => $file]);
}
}