This commit is contained in:
Jaybe
2025-03-05 14:02:29 +09:00
commit 247a7808d3
357 changed files with 161196 additions and 0 deletions
@@ -0,0 +1,18 @@
<?php
namespace App\Controllers\Accounting;
use App\Controllers\BaseController;
class TaxController extends BaseController
{
public function tax()
{
return view('accounting/tax/tax');
}
public function taxList()
{
return view('accounting/tax/tax_list');
}
}
@@ -0,0 +1,13 @@
<?php
namespace App\Controllers\Accounting;
use App\Controllers\BaseController;
class UnpaidController extends BaseController
{
public function unpaid()
{
return view('accounting/unpaid/unpaid');
}
}
@@ -0,0 +1,208 @@
<?php
namespace App\Controllers\Accounting;
use App\Controllers\BaseController;
use App\Models\Accounting\WithdrawModel;
use CodeIgniter\API\ResponseTrait;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class WithdrawController extends BaseController
{
use ResponseTrait;
protected $wd;
public function __construct()
{
$this->wd = model(WithdrawModel::class);
}
public function withdraw()
{
return view('accounting/withdraw/withdraw');
}
public function withdrawList()
{
return view('accounting/withdraw/withdraw_list');
}
public function withdrawWrite(){
return view('accounting/withdraw/withdraw_write');
}
public function accountList(){
if ($this->request->isAJAX() && strtolower($this->request->getMethod()) === 'post') {
$data = $this->request->getRawInput();
$result = $this->wd->accountList($data);
return $result;
} else {
return $this->fail("잘못된 요청");
}
}
public function typeList(){
if ($this->request->isAJAX() && strtolower($this->request->getMethod()) === 'get') {
$result = $this->wd->typeList();
return $result;
} else {
return $this->fail("잘못된 요청");
}
}
public function userList(){
if ($this->request->isAJAX() && strtolower($this->request->getMethod()) === 'get') {
$result = $this->wd->userList();
return $result;
} else {
return $this->fail("잘못된 요청");
}
}
public function getList(){
if ($this->request->isAJAX() && strtolower($this->request->getMethod()) === 'post') {
$data = $this->request->getRawInput();
$result = $this->wd->getList($data);
return $result;
} else {
return $this->fail("잘못된 요청");
}
}
public function excelDownload(){
$data = $this->request->getRawInput();
$transformedData = json_decode($this->wd->getList($data),true);
$columns = $this->getColumns();
$fileData = $this->createExcelFile($transformedData, $columns);
$contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$fileExtension = 'xlsx';
return $this->response
->setHeader('Content-Type', $contentType)
->setHeader('Content-Disposition', 'attachment; filename="event_lead_' . date('YmdHis') . '.' . $fileExtension . '"')
->setBody($fileData);
}
private function createExcelFile($data, $columns)
{
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 헤더 설정
$columnIndex = 'A';
$sheet->setCellValue($columnIndex . '1', '#');
$columnIndex++;
foreach ($columns as $key => $header) {
$sheet->setCellValue($columnIndex . '1', $header);
// if (in_array($key, ['addr', 'email', 'add1', 'add2', 'add3', 'add4', 'add5', 'add6'])) {
// $sheet->getColumnDimension($columnIndex)->setAutoSize(true);
// $sheet->getColumnDimension($columnIndex)->setWidth(200 / 7); // 최대 200픽셀로 제한
// } else if ($key === 'name') {
// $sheet->getColumnDimension($columnIndex)->setWidth(100 / 7); // 100픽셀로 설정 (엑셀의 너비 단위는 약 1/7인치)
// } else {
$sheet->getColumnDimension($columnIndex)->setAutoSize(true); // 자동 너비 조정
// }
$columnIndex++;
}
// 필터 설정
$sheet->setAutoFilter($sheet->calculateWorksheetDimension());
// 데이터 삽입
$rowIndex = 2; // 데이터는 2번째 행부터 시작
$totalRows = count($data);
foreach ($data as $row) {
$columnIndex = 'A';
$sheet->setCellValue($columnIndex . $rowIndex, $totalRows); // 역순 카운트
$columnIndex++;
foreach ($columns as $key => $header) {
$value = $row[$key];
if(!isset($row["gwstatus"])){
$row["gwstatus"]="";
}else if(strpos($row["gwstatus"],"http") > -1){
$row["gwstatus"]="완료";
}
// if ($key === 'phone') {
// $value = preg_replace("/([0-9]{3})([0-9]{4})([0-9]{4})/", "$1-$2-$3", $value);
// $sheet->setCellValue($columnIndex . $rowIndex, $value);
// } elseif($key === 'age') {
// $value = $value == 0 ? "" : $value;
// $sheet->setCellValue($columnIndex . $rowIndex, $value);
// } elseif ($key === 'site') {
// $sheet->getCell($columnIndex . $rowIndex)->setValueExplicit($value, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
// } else {
$sheet->setCellValue($columnIndex . $rowIndex, $value);
// }
$columnIndex++;
}
$rowIndex++;
$totalRows--;
}
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$excelData = ob_get_contents();
ob_end_clean();
return $excelData;
}
private function getColumns()
{
$columns = [
'reg_date' => '등록일시',
'nickname' => '이름',
'type' => '구분',
'company_name' => '거래처명(입금주명)',
'bank' => '은행',
'account' => '계좌번호',
'detail' => '내역(자세히)',
'total_price' => '총금액(VAT 포함)',
'memo' => '비고',
'status' => '결과',
'gwstatus'=>'결제현황',
'date' => '출금완료일',
];
// if(auth()->user()->hasPermission('integrate.description')
// || auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
// $columns = array_merge(
// array_slice($columns, 0, 2, true),
// ['description' => '구분'],
// array_slice($columns, 2, null, true)
// );
// }
// if(auth()->user()->hasPermission('integrate.media')
// || auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
// $columns = array_merge(
// array_slice($columns, 0, 2, true),
// ['media' => '매체'],
// array_slice($columns, 2, null, true)
// );
// }
// if(auth()->user()->hasPermission('integrate.advertiser')
// || auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
// $columns = array_merge(
// array_slice($columns, 0, 2, true),
// ['advertiser' => '광고주'],
// array_slice($columns, 2, null, true)
// );
// }
return $columns;
}
}