summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--httemplate/misc/process/timeworked.html13
-rwxr-xr-xhttemplate/misc/timeworked.html111
2 files changed, 79 insertions, 45 deletions
diff --git a/httemplate/misc/process/timeworked.html b/httemplate/misc/process/timeworked.html
index 9f03995..c589d76 100644
--- a/httemplate/misc/process/timeworked.html
+++ b/httemplate/misc/process/timeworked.html
@@ -8,15 +8,16 @@
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 $msum = 0;
-foreach(values %multipliers) {$msum += $_};
-
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{$_} / $msum) }
@@ -35,6 +36,8 @@ foreach my $transaction (
$seconds{$_} += $adjustment;
last;
}
+ } else {
+ die "unexpectedly cannot apportion time";
}
foreach my $customer ( grep {$seconds{$_}} keys %seconds ) {
diff --git a/httemplate/misc/timeworked.html b/httemplate/misc/timeworked.html
index 2b288f2..f85a628 100755
--- a/httemplate/misc/timeworked.html
+++ b/httemplate/misc/timeworked.html
@@ -7,29 +7,66 @@
<FORM NAME="timeworked_form" ACTION="<% popurl(1) %>process/timeworked.html" METHOD=POST>
-<BR><BR>
-<% include("elements/customer-table.html", header => [ 'Multiplier' ],
- fields => [ 'multiplier' ],
- param => { %param },
- ) %>
-
-<BR>
-<INPUT TYPE="submit" NAME="submit" VALUE="<% $title %>">
-<BR>
-<BR>
-
-for transactions/tickets:
-<TABLE>
-
-% foreach ( sort { $a <=> $b } keys %ticket ) {
-
- <TR><TD><% $_ %></TD><TD><% $ticket{$_} %></TD></TR>
- <INPUT TYPE="hidden" NAME="transactionid<% $_ %>" VALUE="1" >
- <INPUT TYPE="hidden" NAME="seconds<% $_ %>" VALUE="<% $cgi->param("seconds$_") %>" >
-
+<TABLE CELLSPACING="2" CELLPADDING="2" RULES="groups" FRAME="hsides">
+
+<THEAD>
+ <TR>
+ <TH>Trans</TH>
+ <TH COLSPAN="2">Ticket</TH>
+ <TH>Time</TH>
+ <TH COLSPAN="2">Customer</TH>
+ <TH>Multiplier</TH>
+ </TR>
+
+ <TR>
+ <TH>#</TH>
+ <TH>#</TH>
+ <TH>Subject</TH>
+ <TH>hours</TH>
+ <TH>#</TH>
+ <TH>Name</TH>
+ <TH></TH>
+ </TR>
+</THEAD>
+
+% foreach ( keys %ticketmap ) {
+% my (@customers) = @{$customers{$ticketmap{$_}}};
+% next unless @customers;
+% my $multiplier = sprintf("%.2f", 1/@customers);
+% my ($custnum, $name) = split(':', pop @customers, 2);
+
+<TBODY>
+ <TR>
+ <TD><% $_ %></TD>
+ <TD><% $ticketmap{$_} %></TD>
+ <TD><% $ticket{$_} %></TD>
+ <TD><% sprintf("%0.2f", $cgi->param("seconds$_")/3600) %></TD>
+ <TD ALIGN="right"><% $custnum %></TD>
+ <TD ALIGN="right"><% $name %></TD>
+ <TD>
+ <INPUT TYPE="hidden" NAME="transactionid<% $_ %>" VALUE="1" >
+ <INPUT TYPE="hidden" NAME="seconds<% $_ %>" VALUE="<% $cgi->param("seconds$_") %>" >
+ <INPUT TYPE="text" NAME="multiplier<% $_ %>_<% $custnum %>" SIZE="5" VALUE="<% $cgi->param("multiplier${_}_$custnum") ? $cgi->param("multiplier${_}_$custnum") : $multiplier %>" >
+ </TR>
+
+% my $tr_id = $_;
+% foreach ( @customers ) {
+% ($custnum, $name) = split(':', $_, 2);
+
+ <TR>
+ <TD ALIGN="right" COLSPAN="5" ><% $custnum %></TD>
+ <TD ALIGN="right"><% $name %></TD>
+ <TD>
+ <INPUT TYPE="text" NAME="multiplier<% $tr_id %>_<% $custnum %>" SIZE="5" VALUE="<% $cgi->param("multiplier${tr_id}_$custnum") ? $cgi->param("multiplier${tr_id}_$custnum") : $multiplier %>" >
+ </TR>
+</TBODY>
+
+% }
% }
</TABLE>
+<BR>
+<INPUT TYPE="submit" NAME="submit" VALUE="<% $title %>">
</FORM>
</BODY>
</HTML>
@@ -39,7 +76,7 @@ for transactions/tickets:
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Time queue');
-my($svcnum, %ticket, %customers, %param);
+my(%ticketmap, %ticket, %customers);
my $title = 'Assign Time Worked';
RT::Init();
@@ -51,27 +88,21 @@ foreach my $id ( map { /^transactionid(\d+)$/; $1; }
grep /^transactionid\d+$/, $cgi->param) {
my $transaction = new RT::Transaction($CurrentUser);
$transaction->Load($id);
- my $ticket = new RT::Ticket($CurrentUser);
- $ticket->Load($transaction->ObjectId);
- $ticket{$id} = $ticket->Subject;
- foreach my $customerURI (
- grep { $_->Resolver->{'fstable'} eq 'cust_main' }
- grep { $_->Scheme eq 'freeside' }
- map { $_->TargetURI }
- @{ $ticket->_Links('Base')->ItemsArrayRef }
- ) {
- $customers{$customerURI->Resolver->AsString} = 1;
+ $ticketmap{$id} = $transaction->ObjectId;
+ unless(exists($ticket{$ticketmap{$id}})) {
+ my $ticket = new RT::Ticket($CurrentUser);
+ $ticket->Load($ticketmap{$id});
+ $ticket{$ticketmap{$id}} = $ticket->Subject;
+ $customers{$ticketmap{$id}} =
+ [ map { $_->Resolver->AsString }
+ grep { $_->Resolver->{'fstable'} eq 'cust_main' }
+ grep { $_->Scheme eq 'freeside' }
+ map { $_->TargetURI }
+ @{ $ticket->_Links('Base')->ItemsArrayRef }
+ ];
+
}
}
-my $row = 0;
-foreach ( keys %customers ) {
- my ($number, $name) = split(':', $_, 2);
- $param{"custnum$row"} = $number;
- $param{"customer$row"} = $name;
- $param{"multiplier$row"} = sprintf("%.2f", 1/scalar(keys(%customers)));
- $row++;
-}
-
</%init>