$format_time = function( $seconds ) { $seconds = (int)$seconds; return sprintf( "%02d%s%02d%s%02d", floor( $seconds / 3600 ), ':', ( $seconds / 60 ) % 60, ':', $seconds % 60 ); }; $round_time_to_quarter = function( $seconds ) { $seconds = (int)$seconds; if ( $seconds <= 0 ) return 0; return (int)( round( $seconds / 900 ) * 900 ); }; $format_amount = function( $amount ) { return number_format( (float)$amount, 0, '.', '' ) . ' zł'; }; $billing_clients = []; $billing_total_amount = 0; $billing_total_time = 0; $billing_total_tasks = 0; foreach ( $this -> work_time_clients as $client ) { if ( !is_array( $client['tasks'] ) or !count( $client['tasks'] ) ) continue; $months = $client['tasks']; krsort( $months ); $summary = [ 'firm' => $client['firm'], 'tasks_count' => 0, 'time' => 0, 'amount' => 0, 'rows' => [] ]; foreach ( $months as $month => $tasks ) { if ( !is_array( $tasks ) or !count( $tasks ) ) continue; foreach ( $tasks as $task ) { $task_time = isset( $task['time'] ) ? (int)$task['time'] : 0; $task_time = $round_time_to_quarter( $task_time ); if ( isset( $task['pay_rate'] ) and $task['pay_rate'] !== null and $task['pay_rate'] !== '' ) $task_amount = round( (float)$task['pay_rate'] ); else $task_amount = round( (float)$this -> settings['hourly_rate'] * ( $task_time / 3600 ) ); $summary['tasks_count']++; $summary['time'] += $task_time; $summary['amount'] += $task_amount; $summary['rows'][] = [ 'month' => $month, 'id' => $task['id'], 'name' => $task['name'], 'time' => $task_time, 'amount' => $task_amount ]; } } if ( !$summary['tasks_count'] ) continue; $billing_total_tasks += $summary['tasks_count']; $billing_total_time += $summary['time']; $billing_total_amount += $summary['amount']; $billing_clients[] = $summary; } usort( $billing_clients, function( $a, $b ) { if ( $a['amount'] == $b['amount'] ) return strcmp( $a['firm'], $b['firm'] ); return $a['amount'] < $b['amount'] ? 1 : -1; } ); ?>
| Klient | Zadania | Czas | Kwota | Szczegóły | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| = $summary['firm'];?> | = $summary['tasks_count'];?> | = $format_time( $summary['time'] );?> | = $format_amount( $summary['amount'] );?> | pokaż zadania | ||||||||||
|
||||||||||||||