optimize CDR rating after timed rate perf regression, RT#15739
[freeside.git] / httemplate / edit / cust_pkg_detail.html
1 <% include("/elements/header-popup.html", $title, '',
2             ( $cgi->param('error') ? '' : 'onload="addRow()"' ),
3           )
4 %>
5
6 %# <% include('/elements/error.html') %>
7
8 <FORM ACTION="process/cust_pkg_detail.html" NAME="DetailForm" ID="DetailForm" METHOD="POST">
9
10 <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
11 <INPUT TYPE="hidden" NAME="detailtype" VALUE="<% $detailtype %>">
12
13 <TABLE ID="DetailTable" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=1 STYLE="background-color: #cccccc">
14
15 % if ( $curuser->option('show_pkgnum') ) {
16
17     <TR>
18       <TD ALIGN="right">Package #</TD>
19       <TD BGCOLOR="#ffffff"><% $pkgnum %></TD>
20     </TR>
21
22 % }
23
24   <TR>
25     <TD ALIGN="right">Package</TD>
26     <TD BGCOLOR="#ffffff"><% $part_pkg->pkg %></TD>
27   </TR>
28
29   <TR>
30     <TD ALIGN="right">Comment</TD>
31     <TD BGCOLOR="#ffffff"><% $part_pkg->comment %></TD>
32   </TR>
33
34   <TR>
35     <TD ALIGN="right">Status</TD>
36     <TD BGCOLOR="#ffffff"><FONT COLOR="#<% $cust_pkg->statuscolor %>"><B><% ucfirst($cust_pkg->status) %></B></FONT></TD>
37   </TR>
38
39   <TR>
40     <TD COLSPAN=2><% ucfirst($name{$detailtype}) %>: </TD>
41   </TR>
42
43 % my $row = 0;
44 % for ( @details ) { 
45
46     <TR>
47       <TD></TD>
48       <TD>
49         <INPUT TYPE="text" NAME="detail<% $row %>" SIZE="60" MAXLENGTH="65" VALUE="<% $_->detail |h %>" rownum="<% $row++ %>" onkeyup = "possiblyAddRow;" >
50       </TD>
51     </TR>
52
53 % } 
54
55 </TABLE>
56
57 <BR>
58 <INPUT TYPE="submit" ID="submit" NAME="submit" VALUE="<% $title %>">
59
60 </FORM>
61
62 <SCRIPT TYPE="text/javascript">
63
64   var rownum = <% $row %>;
65
66   function possiblyAddRow() {
67     if ( ( rownum - this.getAttribute('rownum') ) == 1 ) {
68       addRow();
69     }
70   }
71
72   function addRow() {
73
74     var table = document.getElementById('DetailTable');
75     var tablebody = table.getElementsByTagName('tbody').item(0);
76
77     var row = document.createElement('TR');
78
79     var empty_cell = document.createElement('TD');
80     row.appendChild(empty_cell);
81
82     var detail_cell = document.createElement('TD');
83
84       var detail_input = document.createElement('INPUT');
85       detail_input.setAttribute('name', 'detail'+rownum);
86       detail_input.setAttribute('id',   'detail'+rownum);
87       detail_input.setAttribute('size', 60);
88       detail_input.setAttribute('maxLength', 65);
89       detail_input.setAttribute('rownum',   rownum);
90       detail_input.onkeyup = possiblyAddRow;
91       detail_cell.appendChild(detail_input);
92
93     row.appendChild(detail_cell);
94
95     tablebody.appendChild(row);
96
97     rownum++;
98
99   }
100
101 </SCRIPT>
102
103 </BODY>
104 </HTML>
105 <%init>
106
107 my %access_right = (
108   'I' => 'Edit customer package invoice details', 
109   'C' => 'Edit customer package comments',
110 );
111
112 my %name = (
113   'I' => 'invoice details',
114   'C' => 'package comments',
115 );
116
117 my $curuser = $FS::CurrentUser::CurrentUser;
118
119 $cgi->param('detailtype') =~ /^(\w)$/ or die 'illegal detailtype';
120 my $detailtype = $1;
121
122 my $right = $access_right{$detailtype};
123 die "access denied"
124   unless $curuser->access_right($right);
125
126 $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'illegal pkgnum';
127 my $pkgnum = $1;
128
129 my $cust_pkg = qsearchs({
130   'table'     => 'cust_pkg',
131   'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
132   'hashref'   => { 'pkgnum' => $pkgnum },
133   'extra_sql' => ' AND '. $curuser->agentnums_sql,
134 });
135
136 my $part_pkg = $cust_pkg->part_pkg;
137
138 my @details = $cust_pkg->cust_pkg_detail($detailtype);
139
140 my $title = ( scalar(@details) ? 'Edit ' : 'Add ' ). $name{$detailtype};
141
142 </%init>