| Server IP : 188.114.96.3 / Your IP : 216.73.216.143 Web Server : Apache System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64 User : ( 3194769) PHP Version : 8.5.12 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /polana/admin/ |
Upload File : |
<?php
declare(strict_types=1);
require_once dirname(__DIR__).'/includes/functions.php';
$user=require_tips_access();ensure_tips_schema();
$month=trim((string)($_GET['month']??date('Y-m')));if(!preg_match('/^\d{4}-\d{2}$/',$month))$month=date('Y-m');
$from=$month.'-01';$to=(new DateTimeImmutable($from))->modify('last day of this month')->format('Y-m-d');
$where=['p.tip_date BETWEEN ? AND ?'];$params=[$from,$to];$isManager=in_array((string)$user['role'],tips_manager_roles(),true);
if(!$isManager){$where[]='pp.user_id=?';$params[]=(int)$user['id'];}
$stmt=db()->prepare("SELECT p.tip_date,p.status,p.source_type,pp.share_amount,pp.payout_status,pp.paid_at,u.username,u.name,u.role FROM tip_pool_participants pp JOIN tip_pools p ON p.id=pp.pool_id JOIN users u ON u.id=pp.user_id WHERE ".implode(' AND ',$where)." ORDER BY p.tip_date,p.id,FIELD(u.role,'waiter','kitchen'),COALESCE(u.name,u.username)");$stmt->execute($params);$rows=$stmt->fetchAll();
$filename='napiwki-'.$month.($isManager?'-wszyscy':'-moje').'.csv';header('Content-Type:text/csv; charset=UTF-8');header('Content-Disposition:attachment; filename="'.$filename.'"');header('Cache-Control:no-store');$out=fopen('php://output','wb');fwrite($out,"\xEF\xBB\xBF");fputcsv($out,['Data','Osoba','Rola','Udział','Rozliczenie','Wypłata','Źródło'],';');foreach($rows as $r){fputcsv($out,[$r['tip_date'],$r['name']?:$r['username'],tip_role_label($r['role']),number_format((float)$r['share_amount'],2,',',''),$r['status']==='settled'?'Zamknięte':'Otwarte',$r['payout_status']==='paid'?'Wypłacono':'Do wypłaty',$r['source_type']],';');}fclose($out);exit;