X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fmisc%2Fprocess%2Ftimeworked.html;h=c589d768f66797a7a1980c7efb7477fdf86faeb8;hb=b22e443f60965aa415b3b190b3ec6875e034dafb;hp=b69c898e86cde2662549d3d37c8e2156db38f223;hpb=1aa3365a48cd75b0e54607c30179ad411ddefe5a;p=freeside.git diff --git a/httemplate/misc/process/timeworked.html b/httemplate/misc/process/timeworked.html index b69c898e8..c589d768f 100644 --- a/httemplate/misc/process/timeworked.html +++ b/httemplate/misc/process/timeworked.html @@ -8,16 +8,20 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Time queue'); -my %multipliers = map { /^custnum(\d+)$/; ($cgi->param("custnum$1") => $cgi->param("multiplier$1")); } - grep /^custnum\d+$/, $cgi->param; - -my @svc_acct_rt_transaction; +my @acct_rt_transaction; foreach my $transaction ( map { /^transactionid(\d+)$/; $1; } grep /^transactionid\d+$/, $cgi->param ) { + my $s = "multiplier${transaction}_"; + my %multipliers = map { /^$s(\d+)$/; $1 => $cgi->param("$s$1"); } + grep /^$s\d+$/, $cgi->param; + my $msum = 0; + foreach(values %multipliers) {$msum += $_}; + my $seconds = $cgi->param("seconds$transaction"); - my %seconds = map { $_ => sprintf("%.0f", $seconds * $multipliers{$_}) } - (keys %multipliers); + my %seconds = + map { $_ => sprintf("%.0f", $seconds * $multipliers{$_} / $msum) } + (keys %multipliers); my $sum = 0; my $count = 0; foreach (values %seconds) { @@ -32,19 +36,22 @@ foreach my $transaction ( $seconds{$_} += $adjustment; last; } + } else { + die "unexpectedly cannot apportion time"; } foreach my $customer ( grep {$seconds{$_}} keys %seconds ) { - push @svc_acct_rt_transaction, new FS::svc_acct_rt_transaction { + push @acct_rt_transaction, new FS::acct_rt_transaction { 'custnum' => $customer, 'transaction_id' => $transaction, 'seconds' => $seconds{$customer}, + 'support' => $seconds{$customer} * $msum, }; } } -my $error = FS::svc_acct_rt_transaction->batch_insert(@svc_acct_rt_transaction); +my $error = FS::acct_rt_transaction->batch_insert(@acct_rt_transaction); $cgi->param('error', $error) if $error;