diff options
-rw-r--r-- | httemplate/misc/process/timeworked.html | 13 | ||||
-rwxr-xr-x | httemplate/misc/timeworked.html | 111 |
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> |