RT# 81183 Fix crash processing payment with new payment method
[freeside.git] / httemplate / misc / timeworked.html
index 2b288f2..24a0f5d 100755 (executable)
 <% include('/elements/header.html', $title, '' ) %>
 
-% if ( $cgi->param('error') ) { 
-  <FONT SIZE="+1" COLOR="#ff0000">Error: <% $cgi->param('error') %></FONT>
-  <BR><BR>
-% } 
+<% include('/elements/error.html') %>
 
 <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 },
-          ) %>
+<TABLE CELLSPACING="2" CELLPADDING="2" RULES="groups" FRAME="hsides">
 
-<BR>
-<INPUT TYPE="submit" NAME="submit" VALUE="<% $title %>">
-<BR>
-<BR>
+  <THEAD>
+    <TR>
+      <TH COLSPAN="2">Ticket</TH>
+      <TH>Hours</TH>
+      <TH COLSPAN="2">Customer</TH>
+      <TH>Multiplier</TH>
+    </TR>
+  </THEAD>
+
+  <TBODY>
+
+%   foreach my $tr_id ( keys %ticketmap ) {
+%     my (@customers) = @{$customers{$ticketmap{$tr_id}}};
+%     next unless @customers;
+%     my $default_multiplier = sprintf("%.2f", 1/@customers);
+%     my ($custnum, $name) = split(':', pop @customers, 2);
+%     my $link = $p. 'rt/Ticket/Display.html?id='. $ticketmap{$tr_id}.
+%                    '#txn-'. $tr_id;
+%     my $clink = $p. 'view/cust_main.cgi?'. $custnum;
+
+      <TR>
+        <TD><a href="<% $link %>"><% $ticketmap{$tr_id} %></a></TD>
+        <TD><a href="<% $link %>"><% $ticket{$ticketmap{$tr_id}} |h %></a></TD>
+
+%       my $seconds = 0;
+%       if ( $cgi->param("seconds$tr_id") =~ /^(\d+)$/ ) {
+%         $seconds = $1;
+%       }
+
+        <TD><% sprintf("%0.2f", $seconds/3600) %></TD>
+        <TD ALIGN="right"><a href="<% $clink %>"><% $custnum %></a></TD>
+        <TD ALIGN="right"><a href="<% $clink %>"><% $name %></a></TD>
+        <TD>
+          <INPUT TYPE="hidden" NAME="transactionid<%$tr_id%>" VALUE="1" >
+          <INPUT TYPE="hidden" NAME="seconds<%$tr_id%>" VALUE="<% $seconds %>" >
+
+%         my $multiplier = $default_multiplier;
+%         my $mult_paramname = "multiplier${tr_id}_$custnum";
+%         if ( $cgi->param($mult_paramname) =~ /^\s*([\d\.]+)\s*$/ ) {
+%           $multiplier = $1;
+%         }
+
+          <INPUT TYPE="text" NAME="<% $mult_paramname %>" SIZE="5" VALUE="<% $multiplier %>" >
+        </TD>
+      </TR>
+
+%     foreach ( @customers ) {
+%       ($custnum, $name) = split(':', $_, 2);
+%       $clink = $p. 'view/cust_main.cgi?'. $custnum;
 
-for transactions/tickets:
-<TABLE>
+        <TR>
+          <TD ALIGN="right" COLSPAN="4" ><a href="<% $clink %>"><% $custnum %></a></TD>
+          <TD ALIGN="right"><a href="<% $clink %>"><% $name %></a></TD>
+          <TD>
 
-%  foreach ( sort { $a <=> $b } keys %ticket ) {
+%           $multiplier = $default_multiplier;
+%           $mult_paramname = "multiplier${tr_id}_$custnum";
+%           if ( $cgi->param($mult_paramname) =~ /^\s*([\d\.]+)\s*$/ ) {
+%             $multiplier = $1;
+%           }
 
-  <TR><TD><% $_ %></TD><TD><% $ticket{$_} %></TD></TR>
-  <INPUT TYPE="hidden" NAME="transactionid<% $_ %>" VALUE="1" >
-  <INPUT TYPE="hidden" NAME="seconds<% $_ %>" VALUE="<% $cgi->param("seconds$_") %>" >
+            <INPUT TYPE="text" NAME="<% $mult_paramname %>" SIZE="5" VALUE="<% $multiplier %>" >
 
-%  }
+          </TD>
+
+        </TR>
+
+%     }
+%   }
+
+  </TBODY>
 
 </TABLE>
+
+<BR>
+
+<INPUT TYPE="hidden" NAME="begin"    VALUE="<% $cgi->param('begin')    |h %>">
+<INPUT TYPE="hidden" NAME="end"      VALUE="<% $cgi->param('end')      |h %>">
+<INPUT TYPE="hidden" NAME="category" VALUE="<% $cgi->param('category') |h %>">
+
+<INPUT TYPE="submit" NAME="submit" VALUE="<% $title %>">
 </FORM>
-</BODY>
-</HTML>
+
+<% include('/elements/footer.html') %>
 
 <%init>
 
 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();
+tie %ticketmap, 'Tie::IxHash';
 
 my $CurrentUser = RT::CurrentUser->new();
 $CurrentUser->LoadByName($FS::CurrentUser::CurrentUser->username);
@@ -51,27 +107,24 @@ 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 } 
+        grep {    $_->BaseURI->Scheme eq 'fsck.com-rt'
+               && $_->BaseURI->Resolver->ObjectType eq 'ticket'
+             }
+          @{ $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>