blob: 078d645d1411ff5b7e1ee2ccd3770bb927e86643 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
% if ($error) {
<% $cgi->redirect(popurl(2). "timeworked.html?". $cgi->query_string) %>
% } else {
<% $cgi->redirect(popurl(3). "search/timeworked.html") %>
% }
<%init>
my %multipliers = map { /^custnum(\d+)$/; ($cgi->param("custnum$1") => $cgi->param("multiplier$1")); }
grep /^custnum\d+$/, $cgi->param;
my @svc_acct_rt_transaction;
foreach my $transaction (
map { /^transactionid(\d+)$/; $1; } grep /^transactionid\d+$/, $cgi->param
) {
my $seconds = $cgi->param("seconds$transaction");
my %seconds = map { $_ => sprintf("%.0f", $seconds * $multipliers{$_}) }
(keys %multipliers);
my $sum = 0;
my $count = 0;
foreach (values %seconds) {
$sum += $_;
$count++;
}
#fudge in some time if we're close
if (abs($seconds-$sum) <= $count) {
my $adjustment = $seconds-$sum;
foreach (keys %seconds) { # explicitly choose one?
$seconds{$_} += $adjustment;
last;
}
}
foreach my $customer ( grep {$seconds{$_}} keys %seconds ) {
push @svc_acct_rt_transaction, new FS::svc_acct_rt_transaction {
'custnum' => $customer,
'transaction_id' => $transaction,
'seconds' => $seconds{$customer},
};
}
}
my $error = FS::svc_acct_rt_transaction->batch_insert(@svc_acct_rt_transaction);
$cgi->param('error', $error) if $error;
</%init>
|