Merge branch 'master' of git.freeside.biz:/home/git/freeside
[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 |h %></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" onchange="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_input.onchange = possiblyAddRow;
92       detail_cell.appendChild(detail_input);
93
94     row.appendChild(detail_cell);
95
96     tablebody.appendChild(row);
97
98     rownum++;
99
100   }
101
102 </SCRIPT>
103
104 </BODY>
105 </HTML>
106 <%init>
107
108 my %access_right = (
109   'I' => 'Edit customer package invoice details', 
110   'C' => 'Edit customer package comments',
111 );
112
113 my %name = (
114   'I' => 'invoice details',
115   'C' => 'package comments',
116 );
117
118 my $curuser = $FS::CurrentUser::CurrentUser;
119
120 $cgi->param('detailtype') =~ /^(\w)$/ or die 'illegal detailtype';
121 my $detailtype = $1;
122
123 my $right = $access_right{$detailtype};
124 die "access denied"
125   unless $curuser->access_right($right);
126
127 $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'illegal pkgnum';
128 my $pkgnum = $1;
129
130 my $cust_pkg = qsearchs({
131   'table'     => 'cust_pkg',
132   'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
133   'hashref'   => { 'pkgnum' => $pkgnum },
134   'extra_sql' => ' AND '. $curuser->agentnums_sql,
135 });
136
137 my $part_pkg = $cust_pkg->part_pkg;
138
139 my @details = $cust_pkg->cust_pkg_detail($detailtype);
140
141 my $title = ( scalar(@details) ? 'Edit ' : 'Add ' ). $name{$detailtype};
142
143 </%init>