X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fview%2Fcust_main%2Fmenu.html;h=7b8f68a8cb0f12dd9bd3bfb259abdb512bb56fde;hb=e61046ea9f0efc021d568bbda0f7759ad51881d3;hp=90a20ed50f81f4d56a529e1322ec7e3f03625e1d;hpb=d1f83ecbaefdab8fbb3a05e87448f3351d9051b4;p=freeside.git diff --git a/httemplate/view/cust_main/menu.html b/httemplate/view/cust_main/menu.html index 90a20ed50..7b8f68a8c 100644 --- a/httemplate/view/cust_main/menu.html +++ b/httemplate/view/cust_main/menu.html @@ -1,107 +1,88 @@ - - - -
+ +<& /elements/dropdown-menu.html, + 'id' => 'customer_menu', + #'class' => 'customer_submenu', + #XXX support installs outside /freeside in 4.x + 'self_url' => "/freeside/view/cust_main.cgi?custnum=$custnum;show=", + 'menu' => \@menu, + 'cust_main' => $cust_main, + 'show' => $opt{'show'}, +&> <%init> my %opt = @_; @@ -115,7 +96,7 @@ my %payby = map { $_ => 1 } $conf->config('payby'); # cached for conditions, to avoid looking it up twice my $invoicing_list_emailonly = $cust_main->invoicing_list_emailonly; -# nice declarative menu; should be a parameter to some kind of menu generator +# nice declarative menu; a parameter to some kind of menu generator my @menu = ( [ { show => 'basics', @@ -130,7 +111,11 @@ my @menu = ( label => 'Edit contacts', url => "edit/cust_main-contacts.html?$custnum", }, -# separator + + { label => '-', + content => '-', + }, + { label => 'Bill now', acl => 'Bill customer now', @@ -158,7 +143,7 @@ my @menu = ( }, { label => 'Cancel', - popup => "misc/suspend_cust.html?custnum=$custnum", + popup => "misc/cancel_cust.html?custnum=$custnum", acl => 'Cancel customer', condition => sub { shift->ncancelled_pkgs > 0 }, actionlabel => 'Confirm Cancellation', @@ -177,7 +162,11 @@ my @menu = ( url => "edit/cust_main.cgi?referral_custnum=$custnum", confexists => '!disable_customer_referrals', }, -# should have a separator here + + { label => '-', + content => '-', + }, + { label => 'View this customer\'s referrals', url => "search/cust_main.cgi?referral_custnum=$custnum", @@ -216,7 +205,7 @@ my @menu = ( actionlabel => 'Add note', confexists => '!cust_main-disable_notes', acl => 'Add customer note', - width => 616, + width => 875, height => 538, }, { @@ -247,7 +236,7 @@ my @menu = ( label => 'Schedule new appointment', confexists => 'ticket_system', acl => 'Make appointment', - popup => "elements/make_appointment.html?custnum=$custnum", + popup => "misc/make_appointment.html?custnum=$custnum", actionlabel => 'Schedule appointment', }, ], @@ -288,11 +277,7 @@ my @menu = ( { # it's just a popup, but there's some freaky CCH tax stuff in it label => 'One-time charge', - content => sub { - include( '/elements/one_time_charge_link.html', - custnum => shift->custnum, - ); - }, + url => "edit/quick-charge.html?custnum=$custnum", acl => 'One-time charge', }, { @@ -308,10 +293,14 @@ my @menu = ( url => "edit/cust_pkg.cgi?$custnum", acl => 'Bulk change customer packages', }, -# separator + + { label => '-', + content => '-', + }, + { label => 'Package reports', - url => "search/report_cust_pkg?custnum=$custnum", + url => "search/report_cust_pkg.html?custnum=$custnum", }, { label => 'View qualifications', @@ -323,8 +312,18 @@ my @menu = ( url => "search/report_svc_acct.html?custnum=$custnum", }, { + label => 'View data usage', + popup => "search/report_sqlradius_usage-custnum.html?$custnum", + acl => 'Usage: RADIUS sessions', + actionlabel => 'Data usage report', + width => 480, + height => 345, + condition => sub { shift->num_usage_pkgs > 0 }, + }, + { label => 'View CDRs', url => "search/report_cdr.html?custnum=$custnum", + # XXX should have a condition that the customer has any CDR packages }, ], [ @@ -332,66 +331,78 @@ my @menu = ( label => 'Payment History', show => 'payment_history', }, + # manual payment entry via edit/cust_pay - { - label => 'Enter check payment', - popup => "edit/cust_pay.cgi?popup=1;payby=BILL;custnum=$custnum", - actionlabel => 'Enter check payment', - width => 763, - height => 392, - acl => [ 'Post payment', 'Post check payment' ], - condition => sub { $payby{BILL} }, - }, - { - label => 'Enter cash payment', - popup => "edit/cust_pay.cgi?popup=1;payby=CASH;custnum=$custnum", - actionlabel => 'Enter cash payment', - width => 763, - height => 392, - acl => [ 'Post payment', 'Post cash payment' ], - condition => sub { $payby{CASH} }, - }, - { - label => 'Enter Western Union payment', - popup => "edit/cust_pay.cgi?popup=1;payby=WEST;custnum=$custnum", - actionlabel => 'Enter Western Union payment', - width => 763, - height => 392, - acl => [ 'Post payment', ], - condition => sub { $payby{WEST} }, - }, - { - label => 'Post manual (offline/POS) credit card payment', - popup => "edit/cust_pay.cgi?popup=1;payby=MCRD;custnum=$custnum", - actionlabel => 'Enter credit card payment', - width => 763, - height => 392, - acl => [ 'Post payment', ], - condition => sub { $payby{MCRD} }, - }, - { - label => 'Post manual (offline/POS) electronic check', - popup => "edit/cust_pay.cgi?popup=1;payby=MCHK;custnum=$custnum", - actionlabel => 'Enter credit card payment', - width => 763, - height => 392, - acl => [ 'Post payment', ], - condition => sub { $payby{MCHK} }, + { label => 'Enter payment', + submenu => [ + { + label => 'Enter check payment', + popup => "edit/cust_pay.cgi?popup=1;payby=BILL;custnum=$custnum", + actionlabel => 'Enter check payment', + width => 763, + height => 392, + acl => [ 'Post payment', 'Post check payment' ], + }, + { + label => 'Enter cash payment', + popup => "edit/cust_pay.cgi?popup=1;payby=CASH;custnum=$custnum", + actionlabel => 'Enter cash payment', + width => 763, + height => 392, + acl => [ 'Post payment', 'Post cash payment' ], + }, + #{ + # label => 'Enter Western Union payment', + # popup => "edit/cust_pay.cgi?popup=1;payby=WEST;custnum=$custnum", + # actionlabel => 'Enter Western Union payment', + # width => 763, + # height => 392, + # acl => [ 'Post payment', ], + ## condition => sub { $payby{WEST} }, + #}, + #{ + # label => 'Record manual (offline/POS) credit card payment', + # popup => "edit/cust_pay.cgi?popup=1;payby=MCRD;custnum=$custnum", + # actionlabel => 'Enter credit card payment', + # width => 763, + # height => 392, + # acl => [ 'Post payment', ], + ## condition => sub { $payby{MCRD} }, + #}, + #{ + # label => 'Record manual (offline/POS) electronic check', + # popup => "edit/cust_pay.cgi?popup=1;payby=MCHK;custnum=$custnum", + # actionlabel => 'Enter credit card payment', + # width => 763, + # height => 392, + # acl => [ 'Post payment', ], + ## condition => sub { $payby{MCHK} }, + #}, + ], }, + # realtime payments via payment.cgi - { - label => 'Process credit card payment', - url => "misc/payment.cgi?payby=CARD;custnum=$custnum", - acl => [ 'Process payment', 'Process credit card payment', ], - condition => sub { $payby{CARD} or $payby{DCRD} }, + { label => 'Process payment', + submenu => [ + { + label => 'Process credit card payment', + url => "misc/payment.cgi?payby=CARD;custnum=$custnum", + acl => [ 'Process payment', 'Process credit card payment', ], + condition => sub { $payby{CARD} or $payby{DCRD} }, + }, + { + label => 'Process electronic check payment', + url => "misc/payment.cgi?payby=CHEK;custnum=$custnum", + acl => [ 'Process payment', 'Process Echeck payment', ], + condition => sub { $payby{CHEK} or $payby{DCHK} }, + }, + ], }, - { - label => 'Process electronic check payment', - url => "misc/payment.cgi?payby=CHEK;custnum=$custnum", - acl => [ 'Process payment', 'Process Echeck payment', ], - condition => sub { $payby{CHEK} or $payby{DCHK} }, + + { label => '-', + content => '-', }, -#separator? + { label => 'Enter credit', popup => "edit/cust_credit.cgi?custnum=$custnum", @@ -410,38 +421,53 @@ my @menu = ( FS::cust_bill->count('custnum = ?', shift->custnum) > 0 }, }, - { - label => 'Enter check refund', - popup => "edit/cust_refund.cgi?popup=1;payby=BILL;custnum=$custnum", - actionlabel => 'Enter check refund', - width => 440, - acl => ['Post refund', 'Post check refund'], - condition => sub { $payby{BILL} }, - }, - { - label => 'Enter cash refund', - popup => "edit/cust_refund.cgi?popup=1;payby=CASH;custnum=$custnum", - actionlabel => 'Enter cash refund', - width => 392, - acl => ['Post refund', 'Post cash refund'], - condition => sub { $payby{CASH} }, + + { label => '-', + content => '-', }, - { - label => 'Enter manual (offline/POS) credit card refund', - popup => "edit/cust_refund.cgi?popup=1;payby=MCRD;custnum=$custnum", - actionlabel => 'Enter credit card refund', - width => 440, - acl => ['Post refund' ], - condition => sub { $payby{MCRD} }, + + { label => 'Enter refund', + submenu => [ + + { + label => 'Enter check refund', + popup => "edit/cust_refund.cgi?popup=1;payby=BILL;custnum=$custnum", + actionlabel => 'Enter check refund', + width => 440, + acl => ['Post refund', 'Post check refund'], + }, + { + label => 'Enter cash refund', + popup => "edit/cust_refund.cgi?popup=1;payby=CASH;custnum=$custnum", + actionlabel => 'Enter cash refund', + width => 392, + acl => ['Post refund', 'Post cash refund'], + }, + #{ + # label => 'Record manual (offline/POS) credit card refund', + # popup => "edit/cust_refund.cgi?popup=1;payby=MCRD;custnum=$custnum", + # actionlabel => 'Enter credit card refund', + # width => 440, + # acl => ['Post refund' ], + ## condition => sub { $payby{MCRD} }, + #}, + #{ + # label => 'Record manual (offline/POS) electronic check refund', + # popup => "edit/cust_refund.cgi?popup=1;payby=MCHK;custnum=$custnum", + # actionlabel => 'Enter electronic check refund', + # width => 440, + # acl => ['Post refund' ], + ## condition => sub { $payby{MCHK} }, + #}, + + ], + }, - { - label => 'Enter manual (offline/POS) electronic check refund', - popup => "edit/cust_refund.cgi?popup=1;payby=MCHK;custnum=$custnum", - actionlabel => 'Enter electronic check refund', - width => 440, - acl => ['Post refund' ], - condition => sub { $payby{MCHK} }, + + { label => '-', + content => '-', }, + { label => 'Add tax adjustment', popup => "edit/cust_tax_adjustment.html?custnum=$custnum", @@ -450,11 +476,29 @@ my @menu = ( confexists => 'enable_tax_adjustments', acl => 'Add customer tax adjustment', }, -# separator, definitely + + { label => '-', + content => '-', + confexists => 'enable_tax_adjustments', + acl => 'Add customer tax adjustment', + }, + + { + label => 'Email statement to this customer', + url => sub { + my $cust_main = shift; + my $agentnum = $cust_main->agentnum; + 'misc/email-customer-statement.html?table=cust_main;'. + 'agent_virt_agentnum='.$agentnum.";custnum=$custnum;url=". + uri_escape($cgi->self_url); + }, + condition => sub { $invoicing_list_emailonly }, + acl => 'Resend invoices', + }, { - label => 'Download statement', + label => 'Download PDF statement', url => "view/cust_main_statement-pdf.cgi?$custnum", - acl => 'List invoices', + acl => 'View legacy typeset statements', condition => sub { FS::cust_bill->count('custnum = ?', shift->custnum) > 0 }, @@ -483,18 +527,7 @@ my @menu = ( FS::cust_pay_pending->count('custnum = ?', shift->custnum) > 0 }, }, - { - label => 'Email statement to this customer', - url => sub { - my $cust_main = shift; - my $agentnum = $cust_main->agentnum; - 'misc/email-customer-statement.html?table=cust_main;'. - 'agent_virt_agentnum='.$agentnum.";custnum=$custnum;url=". - uri_escape($cgi->self_url); - }, - condition => sub { $invoicing_list_emailonly }, - acl => [ 'View invoices', 'Bulk send customer notices' ], - }, + ], [ { @@ -505,83 +538,4 @@ my @menu = ( ], ); - -my @processed_menu; -foreach my $submenu (@menu) { - - my @links; - my $first = 1; - foreach my $entry ( @$submenu ) { - # if the menu head was skipped, skip the whole menu - last if (!$first and !@links); - $first = 0; - - # check conditions - if ( $entry->{acl} ) { - next unless $curuser->access_right( $entry->{acl} ); - } - if ( $entry->{confexists} ) { - if ( $entry->{confexists} =~ /^!(.*)/ ) { - # confexists => !foo, a negative condition - next if $conf->exists( $1 ); - } else { - next unless $conf->exists( $entry->{confexists} ); - } - } - if ( $entry->{condition} ) { - next unless &{ $entry->{condition} }($cust_main); - } - - my $label = emt($entry->{label}); - my $target = $entry->{content} - || $entry->{popup} - || $entry->{url}; - - if ( ref($target) eq 'CODE' ) { - $target = &$target($cust_main); - } - my $a = ''; - - if ( $entry->{content} ) { # then the coderef specified the whole thing - $a = $target; - - } elsif ( $entry->{show} ) { - - # the menu head: always a link back to this page - $cgi->param('show', $entry->{show}); - $target = $cgi->self_url; - - $a = qq[ {show} ) { - $a .= ' class="current_show"'; - } - $a .= qq[>$label ]; - - - } elsif ( $entry->{popup} ) { - - $target =~ s/\$custnum/$custnum/g; - $target = $p.$target; - $a = include('/elements/popup_link.html', - action => $target, - width => 616, - height => 410, - %$entry, - label => emt($label), - ); - - } elsif ( $entry->{url} ) { - - $target =~ s/\$custnum/$custnum/g; - $target = $p.$target; - $a = qq[ $label ]; - } - - push @links, $a; - - } # foreach $entry - if (@links) { - push @processed_menu, \@links; - } -} %init>