new ui for assigning support time
[freeside.git] / httemplate / misc / process / timeworked.html
index b69c898..c589d76 100644 (file)
@@ -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;
 
 </%init>