RT#34078: Payment History Report / Statement [various fixes, integrated with selfservice]
[freeside.git] / httemplate / view / cust_main / menu.html
index 81ad959..90a20ed 100644 (file)
@@ -1,28 +1,39 @@
 <style type="text/css">
 #menu_ul {
   padding: 0;
-  margin: 0 auto;
+  margin: .5em 0 0 0;
+  font-size: smaller;
 }
+
 #menu_ul li {
+  margin: 0;
   float: left;
   list-style: none;
   position: relative;
-  border-right: 4px solid #e8e8e8;
 }
+
 #menu_ul a {
   display: block;
-  padding: 6px 8px;
+  margin-left: 0;
+  margin-right: 1em;
+  margin-bottom: -1px;
+  margin-top: 0;
+  padding: .5em .75em;
+  background: #e0e0e0;
   color: #525151;
-  font-size: 13px;
-  font-weight: bold;
   white-space: nowrap;
-  background: #cccccc;
-  -moz-border-radius-topleft:8px;
-  -moz-border-radius-topright:8px;
-  -webkit-border-radius-topleft:8px;
-  -webkit-border-radius-topright:8px;
-  border-top-left-radius:8px;
-  border-top-right-radius:8px;
+  text-decoration: none;
+  border-top-left-radius: .5em;
+  border-top-right-radius: .5em;
+}
+
+#menu_ul a.current_show {
+  font-weight: bold;
+  background: #FFFFFF;
+  border-top: thin solid #7e0079;
+  border-left: thin solid #7e0079;
+  border-right: thin solid #7e0079;
+  border-bottom: thin solid #ffffff;
 }
 
 #menu_ul ul {
   display:none;
   position: absolute;
   top: 100%;
-  left: -1px;
-  background: #ae2099;
-  border: 1px solid #ffffff;
+  left: 0;
+  background: #ffffff;
+  border: thin solid #7e0079;
+  z-index:8888;
+  border-radius: 2px;
+  box-shadow: #333333 1px 1px 2px;
 }
 
 #menu_ul ul li {
+  margin: 0;
+  padding: 0;
   float: none;
-  border-style: none;
-  display: inline;
-  width: 100%;
 }
 
 #menu_ul ul a {
-  padding: 4px 10px;
-  color: #ffffff;
-  font-size: 12px;
-  font-weight: normal;
+  color: #333333;
   background: transparent;
-}
-#menu_ul ul a:hover  {
-  background: #7e0079;
-  -moz-border-radius-topleft:0px;
-  -moz-border-radius-topright:0px;
-  -webkit-border-radius-topleft:0px;
-  -webkit-border-radius-topright:0px;
-  border-top-left-radius:0px;
-  border-top-right-radius:0px;
+  border-bottom: none;
+  border-radius: 0;
 }
 
-#menu_ul a.current_menu, #menu_ul a.hover {
-  color: #ffffff;
-  background: #7e0079;
+#menu_ul a:hover {
+  text-decoration: underline;
+  color: #7e0079;
 }
+
 </style>
 <script src="<% $p %>elements/jquery.js"></script>
 <script type="text/javascript">
+
 $(document).ready(function() {
-        $('#menu_ul > li').hover(function(){
-                $('a:first', this).addClass('hover');
-                $('ul:first', this).show();
-                if ($('.current_menu:first', this).length == 0) {
-                        $('img[src*="dropdown_arrow_white"]', this).show();
-                        $('img[src*="dropdown_arrow_grey"]', this).hide();
-                }
-        }, function(){
-                $('ul:first', this).hide();
-                $('a:first', this).removeClass('hover');
-                if ($('.current_menu:first', this).length == 0) {
-                        $('img[src*="dropdown_arrow_white"]', this).hide();
-                        $('img[src*="dropdown_arrow_grey"]', this).show();
-                }
-        });
+       var openmenu;
+       function closemenu () {
+               if (openmenu !== undefined) {
+                       openmenu.hide();
+                       openmenu = undefined;
+               }
+       }               
+       $('#menu_ul > li').hover(function(){
+               closemenu();
+               openmenu = $('ul:first', this);
+               openmenu.show();
+       }, function(){
+               closemenu();
+       });
 });
 </script>
 
@@ -108,6 +112,9 @@ my $conf = FS::Conf->new;
 
 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
 my @menu = ( 
   [
@@ -116,12 +123,12 @@ my @menu = (
     },
     {
       label       => 'Edit customer',
-      url         => 'edit/cust_main.cgi?$custnum',
+      url         => "edit/cust_main.cgi?$custnum",
       acl         => 'Edit customer'
     },
     {
       label       => 'Edit contacts',
-      url         => 'edit/cust_main-contacts.html?$custnum',
+      url         => "edit/cust_main-contacts.html?$custnum",
     },
 # separator
     {
@@ -136,7 +143,7 @@ my @menu = (
     },
     {
       label       => 'Suspend',
-      popup       => 'misc/suspend_cust.html?custnum=$custnum',
+      popup       => "misc/suspend_cust.html?custnum=$custnum",
       acl         => 'Suspend customer',
       condition   => sub { shift->unsuspended_pkgs > 0 },
       actionlabel => 'Confirm Suspension',
@@ -144,14 +151,14 @@ my @menu = (
     },
     {
       label       => 'Unsuspend',
-      popup       => 'misc/unsuspend_cust.html?custnum=$custnum',
+      popup       => "misc/unsuspend_cust.html?custnum=$custnum",
       acl         => 'Unsuspend customer',
       condition   => sub { shift->suspended_pkgs > 0 },
       actionlabel => 'Confirm Unsuspension',
     },
     {
       label       => 'Cancel',
-      popup       => 'misc/suspend_cust.html?custnum=$custnum',
+      popup       => "misc/suspend_cust.html?custnum=$custnum",
       acl         => 'Cancel customer',
       condition   => sub { shift->ncancelled_pkgs > 0 },
       actionlabel => 'Confirm Cancellation',
@@ -159,7 +166,7 @@ my @menu = (
     },
     {
       label       => 'Merge',
-      popup       => 'misc/merge_cust.html?custnum=$custnum',
+      popup       => "misc/merge_cust.html?custnum=$custnum",
       acl         => 'Merge customer',
       actionlabel => 'Merge customer',
       width       => 569,
@@ -167,13 +174,13 @@ my @menu = (
     },
     {
       label       => 'Refer a new customer',
-      url         => 'edit/cust_main.cgi?referral_custnum=$custnum',
+      url         => "edit/cust_main.cgi?referral_custnum=$custnum",
       confexists  => '!disable_customer_referrals',
     },
 # should have a separator here
     {
       label       => 'View this customer\'s referrals',
-      url         => 'search/cust_main.cgi?referral_custnum=$custnum',
+      url         => "search/cust_main.cgi?referral_custnum=$custnum",
       confexists  => '!disable_customer_referrals',
       condition   => sub {
         FS::cust_main->count('referral_custnum = ?', shift->custnum) > 0
@@ -181,7 +188,7 @@ my @menu = (
     },
     {
       label       => 'View billing events',
-      url         => 'search/cust_event.html?custnum=$custnum',
+      url         => "search/cust_event.html?custnum=$custnum",
       acl         => [ 'Billing event reports',
                        'View customer billing events' ],
     },
@@ -190,10 +197,12 @@ my @menu = (
       url         => sub {
                       my $cust_main = shift;
                       my $agentnum = $cust_main->agentnum;
-                      'misc/email-customers.html?table=cust_main;search_hash='.
-                      'agent_virt_agentnum='.$agentnum.';custnum=$custnum';
+                      'misc/email-customers.html?table=cust_main;'.
+                      'agent_virt_agentnum='.$agentnum.";custnum=$custnum;url=".
+                      uri_escape($cgi->self_url);
                      },
-      condition   => sub { shift->invoicing_list_emailonly },
+      condition   => sub { $invoicing_list_emailonly },
+      acl         => 'Bulk send customer notices',
     },
   ],
   [
@@ -203,7 +212,7 @@ my @menu = (
     },
     {
       label       => 'Add note',
-      popup       => 'edit/cust_main_note.cgi?custnum=$custnum',
+      popup       => "edit/cust_main_note.cgi?custnum=$custnum",
       actionlabel => 'Add note',
       confexists  => '!cust_main-disable_notes',
       acl         => 'Add customer note',
@@ -212,7 +221,7 @@ my @menu = (
     },
     {
       label       => 'Attach file',
-      popup       => 'edit/cust_main_attach.cgi?custnum=$custnum',
+      popup       => "edit/cust_main_attach.cgi?custnum=$custnum",
       actionlabel => 'Upload file',
       confexists  => '!disable_cust_attachment',
       acl         => 'Add attachment',
@@ -234,6 +243,13 @@ my @menu = (
       confexists => 'ticket_system',
       acl   => 'View appointments',
     },
+    {
+      label       => 'Schedule new appointment',
+      confexists  => 'ticket_system',
+      acl        => 'Make appointment',
+      popup       => "elements/make_appointment.html?custnum=$custnum",
+      actionlabel => 'Schedule appointment',
+    },
   ],
   [
     {
@@ -241,8 +257,8 @@ my @menu = (
       show  => 'quotations',
     },
     {
-      label => 'Add quotation',
-      url   => 'edit/quotation.html?custnum=$custnum',
+      label => 'Create new quotation',
+      url   => "edit/quotation.html?custnum=$custnum",
       acl   => 'Generate quotation',
     },
   ],
@@ -253,7 +269,7 @@ my @menu = (
     },
     {
       label       => 'New qualification',
-      popup       => 'misc/qual.html?custnum=$custnum',
+      popup       => "misc/qual.html?custnum=$custnum",
       actionlabel => 'New qualification',
       color       => '#333399',
       width       => 763,
@@ -262,7 +278,7 @@ my @menu = (
     },
     {
       label       => 'Order new package',
-      popup       => 'misc/order_pkg.html?custnum=$custnum',
+      popup       => "misc/order_pkg.html?custnum=$custnum",
       actionlabel => 'Order new package',
       color       => '#333399',
       width       => 960,
@@ -281,7 +297,7 @@ my @menu = (
     },
     {
       label       => 'Move services between packages',
-      popup       => 'edit/bulk-cust_svc-pkgnum.html?custnum=$custnum',
+      popup       => "edit/bulk-cust_svc-pkgnum.html?custnum=$custnum",
       actionlabel => 'Move services',
       width       => 968,
       height      => 575,
@@ -289,26 +305,26 @@ my @menu = (
     },
     {
       label       => 'Bulk order and cancel packages',
-      url         => 'edit/cust_pkg.cgi?$custnum',
+      url         => "edit/cust_pkg.cgi?$custnum",
       acl         => 'Bulk change customer packages',
     },
 # separator
     {
       label => 'Package reports',
-      url   => 'search/report_cust_pkg?custnum=$custnum',
+      url   => "search/report_cust_pkg?custnum=$custnum",
     },
     {
       label => 'View qualifications',
-      url   => 'search/qual.cgi?custnum=$custnum',
+      url   => "search/qual.cgi?custnum=$custnum",
       acl   => 'Qualify service',
     },
     {
       label => 'View accounts',
-      url   => 'search/report_svc_acct.html?custnum=$custnum',
+      url   => "search/report_svc_acct.html?custnum=$custnum",
     },
     {
       label => 'View CDRs',
-      url   => 'search/report_cdr.html?custnum=$custnum',
+      url   => "search/report_cdr.html?custnum=$custnum",
     },
   ],
   [
@@ -319,7 +335,7 @@ my @menu = (
     # manual payment entry via edit/cust_pay
     {
       label       => 'Enter check payment',
-      popup       => 'edit/cust_pay.cgi?popup=1;payby=BILL;custnum=$custnum',
+      popup       => "edit/cust_pay.cgi?popup=1;payby=BILL;custnum=$custnum",
       actionlabel => 'Enter check payment',
       width       => 763,
       height      => 392,
@@ -328,7 +344,7 @@ my @menu = (
     },
     {
       label       => 'Enter cash payment',
-      popup       => 'edit/cust_pay.cgi?popup=1;payby=CASH;custnum=$custnum',
+      popup       => "edit/cust_pay.cgi?popup=1;payby=CASH;custnum=$custnum",
       actionlabel => 'Enter cash payment',
       width       => 763,
       height      => 392,
@@ -337,7 +353,7 @@ my @menu = (
     },
     {
       label       => 'Enter Western Union payment',
-      popup       => 'edit/cust_pay.cgi?popup=1;payby=WEST;custnum=$custnum',
+      popup       => "edit/cust_pay.cgi?popup=1;payby=WEST;custnum=$custnum",
       actionlabel => 'Enter Western Union payment',
       width       => 763,
       height      => 392,
@@ -346,7 +362,7 @@ my @menu = (
     },
     {
       label       => 'Post manual (offline/POS) credit card payment',
-      popup       => 'edit/cust_pay.cgi?popup=1;payby=MCRD;custnum=$custnum',
+      popup       => "edit/cust_pay.cgi?popup=1;payby=MCRD;custnum=$custnum",
       actionlabel => 'Enter credit card payment',
       width       => 763,
       height      => 392,
@@ -355,7 +371,7 @@ my @menu = (
     },
     {
       label       => 'Post manual (offline/POS) electronic check',
-      popup       => 'edit/cust_pay.cgi?popup=1;payby=MCHK;custnum=$custnum',
+      popup       => "edit/cust_pay.cgi?popup=1;payby=MCHK;custnum=$custnum",
       actionlabel => 'Enter credit card payment',
       width       => 763,
       height      => 392,
@@ -365,27 +381,27 @@ my @menu = (
     # realtime payments via payment.cgi
     {
       label       => 'Process credit card payment',
-      url         => 'misc/payment.cgi?payby=CARD;custnum=$custnum',
+      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',
+      url         => "misc/payment.cgi?payby=CHEK;custnum=$custnum",
       acl         => [ 'Process payment', 'Process Echeck payment', ],
       condition   => sub { $payby{CHEK} or $payby{DCHK} },
     },
 #separator?
     {
       label       => 'Enter credit',
-      popup       => 'edit/cust_credit.cgi?custnum=$custnum',
+      popup       => "edit/cust_credit.cgi?custnum=$custnum",
       actionlabel => 'Enter credit',
       width       => 763,
       acl         => 'Post credit',
     },
     {
       label       => 'Credit line items',
-      popup       => 'edit/credit-cust_bill_pkg.html?custnum=$custnum',
+      popup       => "edit/credit-cust_bill_pkg.html?custnum=$custnum",
       actionlabel => 'Credit line items',
       width       => 968,
       height      => 575,
@@ -396,7 +412,7 @@ my @menu = (
     },
     {
       label       => 'Enter check refund',
-      popup       => 'edit/cust_refund.cgi?popup=1;payby=BILL;custnum=$custnum',
+      popup       => "edit/cust_refund.cgi?popup=1;payby=BILL;custnum=$custnum",
       actionlabel => 'Enter check refund',
       width       => 440,
       acl         => ['Post refund', 'Post check refund'],
@@ -404,7 +420,7 @@ my @menu = (
     },
     {
       label       => 'Enter cash refund',
-      popup       => 'edit/cust_refund.cgi?popup=1;payby=CASH;custnum=$custnum',
+      popup       => "edit/cust_refund.cgi?popup=1;payby=CASH;custnum=$custnum",
       actionlabel => 'Enter cash refund',
       width       => 392,
       acl         => ['Post refund', 'Post cash refund'],
@@ -412,7 +428,7 @@ my @menu = (
     },
     {
       label       => 'Enter manual (offline/POS) credit card refund',
-      popup       => 'edit/cust_refund.cgi?popup=1;payby=MCRD;custnum=$custnum',
+      popup       => "edit/cust_refund.cgi?popup=1;payby=MCRD;custnum=$custnum",
       actionlabel => 'Enter credit card refund',
       width       => 440,
       acl         => ['Post refund' ],
@@ -420,7 +436,7 @@ my @menu = (
     },
     {
       label       => 'Enter manual (offline/POS) electronic check refund',
-      popup       => 'edit/cust_refund.cgi?popup=1;payby=MCHK;custnum=$custnum',
+      popup       => "edit/cust_refund.cgi?popup=1;payby=MCHK;custnum=$custnum",
       actionlabel => 'Enter electronic check refund',
       width       => 440,
       acl         => ['Post refund' ],
@@ -428,7 +444,7 @@ my @menu = (
     },
     {
       label       => 'Add tax adjustment',
-      popup       => 'edit/cust_tax_adjustment.html?custnum=$custnum',
+      popup       => "edit/cust_tax_adjustment.html?custnum=$custnum",
       actionlabel => 'Add tax adjustment',
       height      => 200,
       confexists  => 'enable_tax_adjustments',
@@ -437,7 +453,7 @@ my @menu = (
 # separator, definitely
     {
       label       => 'Download statement',
-      url         => 'view/cust_main_statement-pdf.cgi?$custnum',
+      url         => "view/cust_main_statement-pdf.cgi?$custnum",
       acl         => 'List invoices',
       condition   => sub {
         FS::cust_bill->count('custnum = ?', shift->custnum) > 0
@@ -445,28 +461,40 @@ my @menu = (
     },
     {
       label       => 'Search invoices',
-      url         => 'search/report_cust_bill.html?custnum=$custnum',
+      url         => "search/report_cust_bill.html?custnum=$custnum",
       acl         => 'List invoices',
     },
     {
       label       => 'View tax exemptions',
-      url         => 'search/cust_tax_exempt_pkg.cgi?custnum=$custnum',
+      url         => "search/cust_tax_exempt_pkg.cgi?custnum=$custnum",
       acl         => 'View customer tax exemptions',
     },
     {
       label       => 'View tax adjustments',
-      url         => 'search/cust_tax_adjustment.html?custnum=$custnum',
+      url         => "search/cust_tax_adjustment.html?custnum=$custnum",
       confexists  => 'enable_tax_adjustments',
       acl         => 'Add customer tax adjustment',
     },
     {
       label       => 'View pending payments',
-      url         => 'search/cust_pay_pending.html?magic=_date;statusNOT=done;custnum=$custnum',
+      url         => "search/cust_pay_pending.html?magic=_date;statusNOT=done;custnum=$custnum",
       acl         => 'View pending payments',
       condition   => sub { 
         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' ],
+    },
   ],
   [
     {
@@ -525,7 +553,7 @@ foreach my $submenu (@menu) {
 
       $a = qq[ <A HREF="$target"];
       if ( $opt{'show'} eq $entry->{show} ) {
-        $a .= ' class="fstabselected"';
+        $a .= ' class="current_show"';
       }
       $a .= qq[>$label</A> ];