+my $custnum;
+if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
+ $custnum = $1;
+} else {
+ die "No customer specified (bad URL)!" unless $cgi->keywords;
+ my($query) = $cgi->keywords; # needs parens with my, ->keywords returns array
+ $query =~ /^(\d+)$/;
+ $custnum = $1;
+ $cgi->delete('keywords');
+ $cgi->param('custnum', $1);
+}
+
+my $cust_main = qsearchs( {
+ 'table' => 'cust_main',
+ 'hashref' => { 'custnum' => $custnum },
+ 'extra_sql' => ' AND '. $curuser->agentnums_sql,
+});
+die "Customer not found!" unless $cust_main;
+
+#false laziness w/pref/pref.html and Conf.pm (cust_main-default_view)
+tie my %views, 'Tie::IxHash',
+ emt('Basics') => 'basics',
+ emt('Notes') => 'notes', #notes and files?
+;
+if ( $conf->config('ticket_system') ) {
+ $views{emt('Tickets')} = 'tickets';
+ $views{emt('Appointments')} = 'appointments'
+ if $curuser->access_right('View appointments');
+}
+$views{emt('Quotations')} = 'quotations';
+$views{emt('Packages')} = 'packages';
+$views{emt('Payment History')} = 'payment_history';
+$views{emt('Change History')} = 'change_history'
+ if $curuser->access_right('View customer history');
+$views{$conf->config('cust_main-custom_title') || emt('Custom')} = 'custom'
+ if $conf->config('cust_main-custom_link')
+ || $conf->config('cust_main-custom_content');
+
+my %viewname = reverse %views;
+
+my $view = $cgi->param('show') || $curuser->default_customer_view;
+
+if ($view eq 'last') {
+ # something took us away from the page and is now bouncing back
+ $view = get_page_pref('last_view', $custnum);
+} else {
+ # remember which view is open so we _can_ bounce back
+ set_page_pref('last_view', $custnum, $view);
+}