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; } ); ?>
Rozliczenia do zamknięcia (widok zbiorczy)
Klienci
Nierozliczone zadania
Suma czasu
Suma do zapłaty
Klient Zadania Czas Kwota Szczegóły
pokaż zadania
Miesiąc Zadanie Czas Kwota Akcja
zamknij zadanie
Brak zadań oczekujących na rozliczenie.