2 <% $cgi->redirect(popurl(2). "timeworked.html?". $cgi->query_string) %>
4 <% $cgi->redirect(popurl(3). "search/timeworked.html?begin=$begin;end=$end") %>
9 unless $FS::CurrentUser::CurrentUser->access_right('Time queue');
11 my($begin, $end) = FS::UI::Web::parse_beginning_ending($cgi);
13 my @acct_rt_transaction;
14 foreach my $transaction (
15 map { /^transactionid(\d+)$/; $1; } grep /^transactionid\d+$/, $cgi->param
17 my $s = "multiplier${transaction}_";
18 my %multipliers = map { /^$s(\d+)$/; $1 => $cgi->param("$s$1"); }
19 grep /^$s\d+$/, $cgi->param;
21 foreach(values %multipliers) {$msum += $_};
23 my $seconds = $cgi->param("seconds$transaction");
25 map { $_ => sprintf("%.0f", $seconds * $multipliers{$_} / $msum) }
29 foreach (values %seconds) {
34 #fudge in some time if we're close
35 if (abs($seconds-$sum) <= $count) {
36 my $adjustment = $seconds-$sum;
37 foreach (keys %seconds) { # explicitly choose one?
38 $seconds{$_} += $adjustment;
42 die "unexpectedly cannot apportion time";
45 foreach my $customer ( grep {$seconds{$_}} keys %seconds ) {
46 push @acct_rt_transaction, new FS::acct_rt_transaction {
47 'custnum' => $customer,
48 'transaction_id' => $transaction,
49 'seconds' => $seconds{$customer},
50 'support' => int( $seconds{$customer} * $msum ),
56 my $error = FS::acct_rt_transaction->batch_insert(@acct_rt_transaction);
57 $cgi->param('error', $error) if $error;