multi-store/app/common/service/xlsx/OrderOutbound.php
mkm f9cb852e37 feat(beforehand_order): 添加审批记录功能并优化相关逻辑
- 在 BeforehandOrderLogic 中添加审批记录创建逻辑
- 更新 UserLogic 中的余额和预付款扣减逻辑
- 新增 BeforehandOrderRecord 模型用于存储审批记录
- 修改订单导出功能,调整预收金额和合计预收的显示逻辑
- 新增审批页面模板,支持审批操作和下载表格功能
2024-11-06 15:46:53 +08:00

135 lines
5.6 KiB
PHP

<?php
namespace app\common\service\xlsx;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
/**
* 订单出库
*/
class OrderOutbound
{
public function export($data,$order,$other_data)
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 合并单元格A1到K1
$sheet->mergeCells('A1:I1');
$sheet->mergeCells('D2:E2');
$sheet->mergeCells('H2:I2');
$sheet->mergeCells('G2:I2');
$sheet->mergeCells('H3:I3');
$sheet->setCellValue('A1', '供 投 里 海 农 特 产 品 出 库 结 算 单');
$sheet->setCellValue('A2', '姓名:');
$sheet->setCellValue('B2', $other_data->nickname??'');
$sheet->getColumnDimension('B')->setWidth(16);
$sheet->getColumnDimension('H')->setAutoSize(true);
$sheet->setCellValue('C2', '电话:');
$sheet->setCellValue('D2', $other_data->phone??'');
$sheet->setCellValue('F2', '订单编号:');
$sheet->setCellValue('G2', $order['order_id']??'');
$sheet->setCellValue('A3', '编号');
$sheet->setCellValue('B3', '品名');
$sheet->setCellValue('C3', '单位');
$sheet->setCellValue('D3', '净重(约)');
$sheet->setCellValue('E3', '数量');
$sheet->setCellValue('F3', '单价');
$sheet->setCellValue('G3', '金额');
$sheet->setCellValue('H3', '备注');
// 设置默认的单元格样式
$defaultStyle = [
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER,
],
];
// 应用默认样式到整个工作表
$spreadsheet->getDefaultStyle()->applyFromArray($defaultStyle);
foreach ($data as $k => $v) {
$sheet->setCellValue('A' . ($k + 4), $v['product_id']);
$sheet->setCellValue('B' . ($k + 4), $v['store_name']);
$sheet->setCellValue('C' . ($k + 4), $v['unit_name']);
$sheet->setCellValue('D' . ($k + 4), $v['gross_weight']);
$sheet->setCellValue('E' . ($k + 4), $v['accept_num']==0 ? $v['cart_num'] : $v['accept_num']);
$sheet->setCellValue('F' . ($k + 4), $v['price']);
$sheet->setCellValue('G' . ($k + 4), $v['pay_price']==0 ? $v['total_price'] : $v['pay_price']);
$sheet->mergeCells('H' . ($k + 4) . ':I' . $k + 4);
$sheet->setCellValue('H' . ($k + 4), $v['mark']);
}
$count = count($data);
$sheet->setCellValue('A' . ($count + 4),'合计');
$sheet->setCellValue('B' . ($count + 4),$count);
$sheet->setCellValue('A' . ($count + 5),'累计接单:');
$sheet->setCellValue('C' . ($count + 5),'预收金额:');
$sheet->setCellValue('D' . ($count + 5),$order['total_price']);
$sheet->setCellValue('E' . ($count + 5),'预收押金:');
$sheet->setCellValue('G' . ($count + 5),'合计预收:');
$sheet->setCellValue('H' . ($count + 5),$order['total_price']);
$sheet->setCellValue('A' . ($count + 6),'出库合计:');
$sheet->setCellValue('C' . ($count + 6),'出库金额:');
$sheet->setCellValue('D' . ($count + 6),$order['pay_price']==0?$order['total_price']:$order['pay_price']);
$sheet->setCellValue('E' . ($count + 6),'实收押金:');
$sheet->setCellValue('G' . ($count + 6),'合计:');
$sheet->setCellValue('H' . ($count + 6),$order['pay_price']==0?$order['total_price']:$order['pay_price']);
$sheet->setCellValue('A' . ($count + 7),'应收:');
$sheet->setCellValue('B' . ($count + 7),$order['pay_price']==0?$order['total_price']:$order['pay_price']);
$sheet->setCellValue('C' . ($count + 7),'应退:');
$sheet->setCellValue('F' . ($count + 7),'门店:');
$sheet->mergeCells('G' . ($count + 7) . ':I' . $count + 7);
$sheet->setCellValue('G' . ($count + 7),$order['system_store_name']);
$sheet->mergeCells('B' . ($count + 8) . ':I' . $count + 8);
$sheet->setCellValue('A'. ($count + 8), '收货地址:');
$sheet->setCellValue('B'. ($count + 8), $other_data->address??'');
$sheet->mergeCells('B' . ($count + 9) . ':E' . $count + 9);
$sheet->setCellValue('A' . $count + 9, '销售地址:',);
$sheet->setCellValue('B' . $count + 9, '泸州市海吉星农产品商贸物流园122栋',);
$sheet->setCellValue('F' . $count + 9, '电话:',);
$sheet->setCellValue('G' . $count + 9, '08302669767',);
$sheet->setCellValue('H' . $count + 9, '签收:',);
// 设置单元格的样式
$styleArray = [
'font' => [
'bold' => true,
'size' => 16,
],
];
$sheet->getStyle('A1')->applyFromArray($styleArray);
// 定义线框样式
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN, // 线框样式
'color' => ['argb' => '000000'], // 线框颜色
],
],
];
$sheet->getStyle('A1:I' . ($count + 9))->applyFromArray($styleArray);
// 保存文件到 public 下
$writer = new Xlsx($spreadsheet);
$url = '/export/' . date('Y-m') . '/' .'供投里海农特产品出库结算单-'.date('Y-m-d H:i') . '.xlsx';
$file_path = public_path() . $url;
// 保存文件到 public 下
$writer->save($file_path);
return getenv('APP_URL').$url;
}
}