3 <FONT COLOR="#ff0000"><B><% $error |h %></B></FONT><BR><BR>
4 <CENTER><INPUT TYPE="BUTTON" VALUE="OK" onClick="parent.cClick()"></CENTER>
8 <SCRIPT TYPE="text/javascript">
9 window.top.location.reload();
16 'I' => 'Edit customer package invoice details',
17 'C' => 'Edit customer package comments',
21 'I' => 'invoice details',
22 'C' => 'package comments',
25 my $curuser = $FS::CurrentUser::CurrentUser;
27 $cgi->param('detailtype') =~ /^(\w)$/ or die 'illegal detailtype';
30 my $right = $access_right{$detailtype};
32 unless $curuser->access_right($right);
34 $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'illegal pkgnum';
37 my $cust_pkg = qsearchs({
38 'table' => 'cust_pkg',
39 'addl_from' => 'LEFT JOIN cust_main USING ( custnum )',
40 'hashref' => { 'pkgnum' => $pkgnum },
41 'extra_sql' => ' AND '. $curuser->agentnums_sql,
45 my @orig_details = $cust_pkg->cust_pkg_detail($detailtype);
47 my $action = ucfirst($name{$detailtype}).
48 ( scalar(@orig_details) ? ' changed ' : ' added ' );
50 my $param = $cgi->Vars;
52 for ( my $row = 0; exists($param->{"detail$row"}); $row++ ) {
53 push @details, $param->{"detail$row"}
54 if $param->{"detail$row"} =~ /\S/;
57 my $error = $cust_pkg->set_cust_pkg_detail($detailtype, @details);