virtualize referrals on customer addition
[freeside.git] / httemplate / elements / menu.html
index 8502c07..a5b41ae 100644 (file)
@@ -3,6 +3,8 @@
   my $conf = new FS::Conf;
   my $fsurl = $opt{'freeside_baseurl'};
 
+  my $curuser = $FS::CurrentUser::CurrentUser;
+
   #Active tickets not assigned to a customer
 
   tie my %report_customers_lists, 'Tie::IxHash',
   tie my %report_services_acct, 'Tie::IxHash',
     'All accounts by username' => [ $fsurl.'search/svc_acct.cgi?username', '' ],
     'All accounts by UID'      => [ $fsurl.'search/svc_acct.cgi?uid', '' ],
-    'Unlinked accounts'        => [ $fsurl.'search/svc_acct.cgi?UN_uid', 'Pre-Freeside accounts without a customer record' ],
   ;
+  $report_services_acct{'Unlinked accounts'} = [ $fsurl.'search/svc_acct.cgi?UN_uid', 'Pre-Freeside accounts without a customer record' ]
+    if $curuser->access_right('View/link unlinked services');
 
   tie my %report_services_domain, 'Tie::IxHash',
     'All domains'      => [ $fsurl.'search/svc_domain.cgi?domain', '' ],
-    'Unlinked domains' => [ $fsurl.'search/svc_domain.cgi?UN_domain', 'Pre-Freeside domains without a customer record' ],
   ;
+  $report_services_domain{'Unlinked domains'} = [ $fsurl.'search/svc_domain.cgi?UN_domain', 'Pre-Freeside domains without a customer record' ]
+    if $curuser->access_right('View/link unlinked services');
 
   tie my %report_services_forward, 'Tie::IxHash',
     'All mail forwards'      => [ $fsurl.'search/svc_forward.cgi?svcnum', '' ],
-    'Unlinked mail forwards' => [ $fsurl.'search/svc_forward.cgi?UN_svcnum', 'Pre-Freeside mail forwards without a customer record' ],
   ;
+  $report_services_forward{'Unlinked mail forwards'} = [ $fsurl.'search/svc_forward.cgi?UN_svcnum', 'Pre-Freeside mail forwards without a customer record' ]
+    if $curuser->access_right('View/link unlinked services');
 
   tie my %report_services_www, 'Tie::IxHash',
     'All virtual hosts'     => [ $fsurl.'search/svc_www.cgi?svcnum', '' ],
-    'Unlinked virtual hosts' => [ $fsurl.'search/svc_www.cgi?UN_svcnum', 'Pre-Freeside virtual hosts without a customer record' ],
   ;
+  $report_services_www{'Unlinked virtual hosts'} = [ $fsurl.'search/svc_www.cgi?UN_svcnum', 'Pre-Freeside virtual hosts without a customer record' ]
+    if $curuser->access_right('View/link unlinked services');
 
   tie my %report_services_broadband, 'Tie::IxHash',
     'All broadband services' => [ $fsurl.'search/svc_broadband.cgi?svcnum', '' ],
     #'Unlinked domain' => [ $fsurl.'search/svc_acct.cgi?UN_uid', 'Pre-Freeside domains without a customer record' ],
   ;
 
+  tie my %report_services_phone, 'Tie::IxHash',
+    'All phone numbers' => [ $fsurl.'search/svc_phone.cgi?svcnum', '' ],
+  ;
+
   tie my %report_services_external, 'Tie::IxHash',
     'All external services' => [ $fsurl.'search/svc_external.cgi?id', '' ],
-    'Unlinked external services' => [ $fsurl.'search/svc_external.cgi?UN_id', 'Pre-Freeside domains without a customer record' ],
   ;
+  $report_services_external{'Unlinked external services'} = [ $fsurl.'search/svc_external.cgi?UN_id', 'Pre-Freeside domains without a customer record' ]
+    if $curuser->access_right('View/link unlinked services');
 
-  tie my %report_services, 'Tie::IxHash',
-    'Service definitions' => [ $fsurl.'browse/part_svc.cgi?orderby=active', 'Service definitions by number of active packages' ],
-    'separator' => '',
-    'Accounts'            => [ \%report_services_acct, 'Access accounts and mailboxes' ],
-    'Domains'             => [ \%report_services_domain, 'Domains', ],
-    'Mail forwards'       => [ \%report_services_forward, 'Mail forwards', ],
-    'Virtual hosts'       => [ \%report_services_www, 'Virtual hosting', ],
-    'Broadband services'  => [ \%report_services_broadband, 'Fixed (username-less) broadband services', ],
-    'External services'   => [ \%report_services_external, 'External services', ],
-  ;
+  tie my %report_services, 'Tie::IxHash';
+  if ( $curuser->access_right('Configuration') ) {
+    $report_services{'Service definitions'} =  [ $fsurl.'browse/part_svc.cgi?orderby=active', 'Service definitions by number of active packages' ];
+    $report_services{'separator'} =  '';
+  }
+  $report_services{'Accounts'} =  [ \%report_services_acct, 'Access accounts and mailboxes' ];
+  $report_services{'Domains'} =  [ \%report_services_domain, 'Domains', ];
+  $report_services{'Mail forwards'} =  [ \%report_services_forward, 'Mail forwards', ];
+  $report_services{'Virtual hosts'} =  [ \%report_services_www, 'Virtual hosting', ];
+  $report_services{'Broadband services'} =  [ \%report_services_broadband, 'Fixed (username-less) broadband services', ];
+  $report_services{'Phone numbers'} =  [ \%report_services_phone, 'Telephone numbers', ];
+  $report_services{'External services'} =  [ \%report_services_external, 'External services', ];
+
+  tie my %report_packages, 'Tie::IxHash';
+  if ( $curuser->access_right('Configuration') ) {
+    $report_packages{'Package definitions'} =  [ $fsurl.'browse/part_pkg.cgi?active=1', 'Package definitions by number of active packages' ];
+    $report_packages{'separator'} =  '';
+  }
+  $report_packages{'All customer packages'} =  [ $fsurl.'search/cust_pkg.cgi?pkgnum', 'List all customer packages', ];
+  $report_packages{'Suspended customer packages'} =  [ $fsurl.'search/cust_pkg.cgi?magic=suspended', 'List suspended packages' ];
+  $report_packages{'Customer packages with unconfigured services'} =  [ $fsurl.'search/cust_pkg.cgi?APKG_pkgnum', 'List packages which have provisionable services' ];
+  $report_packages{'Advanced package reports'} =  [ $fsurl.'search/report_cust_pkg.html', 'by agent, date range, status, package definition' ];
 
-  tie my %report_packages, 'Tie::IxHash',
-    'Package definitions' => [ $fsurl.'browse/part_pkg.cgi?active=1', 'Package definitions by number of active packages' ],
-    'separator' => '',
-    'All customer packages' => [ $fsurl.'search/cust_pkg.cgi?pkgnum', 'List all customer packages', ],
-    'Suspended customer packages' => [ $fsurl.'search/cust_pkg.cgi?magic=suspended', 'List suspended packages' ],
-    'Customer packages with unconfigured services' => [ $fsurl.'search/cust_pkg.cgi?APKG_pkgnum', 'List packages which have provisionable services' ],
-    'By next bill date' => [ $fsurl.'search/cust_pkg_report.cgi', 'Search packages by next bill date' ],
+  tie my %report_rating, 'Tie::IxHash',
+    'Call Detail Records (CDRs)' => [ $fsurl.'search/report_cdr.html', '' ],
   ;
 
   tie my %report_financial, 'Tie::IxHash', 
     'Sales Tax Liability' => [ $fsurl.'search/report_tax.html', 'Sales tax liability report' ],
   ;
 
-  tie my %report_menu, 'Tie::IxHash',
-    'Customers' => [ \%report_customers,  'Customer reports'  ],
-    'Invoices'  => [ \%report_invoices,   'Invoice reports'   ],
-    'Packages'  => [ \%report_packages,   'Package reports'   ],
-    'Services'  => [ \%report_services,   'Services reports'   ],
-    'Financial' => [ \%report_financial,  'Financial reports' ],
-  ;
+  tie my %report_menu, 'Tie::IxHash';
+  $report_menu{'Customers'}   = [ \%report_customers, 'Customer reports'  ]
+    if $curuser->access_right('List customers');
+  $report_menu{'Invoices'}    =  [ \%report_invoices,  'Invoice reports'   ]
+    if $curuser->access_right('List invoices');
+  $report_menu{'Packages'}    =  [ \%report_packages,  'Package reports'   ]
+    if $curuser->access_right('List packages');
+  $report_menu{'Services'}    =  [ \%report_services,  'Services reports'  ]
+    if $curuser->access_right('List services');
+  $report_menu{'Rating data'} =  [ \%report_rating,    'Rating reports'  ]
+    if $curuser->access_right('List rating data');
+  $report_menu{'Financial'}  = [ \%report_financial, 'Financial reports' ]
+    if $curuser->access_right('Financial reports');
 
   tie my %tools_importing, 'Tie::IxHash',
     'Import customers from CSV file' => [ $fsurl.'misc/cust_main-import.cgi', '' ],
     'Import one-time charges from CSV file' => [ $fsurl.'misc/cust_main-import_charges.cgi', '' ],
+    'Import Call Detail Records (CDRs) from CSV file' => [ $fsurl.'misc/cdr-import.html', '' ],
   ;
 
   tie my %tools_exporting, 'Tie::IxHash',
   #      <!-- or <A HREF="browse/nas-sqlradius.cgi">RADIUS</A>
   #    <BR> -->
 
-  tie my %tools_menu, 'Tie::IxHash',
-    'Job Queue' => [ $fsurl.'search/queue.html', 'View pending job queue' ],
-    'Importing' => [ \%tools_importing, 'Import tools' ],
-    'Exporting' => [ \%tools_exporting, 'Export tools' ],
-  ;
+  tie my %tools_menu, 'Tie::IxHash', ();
+  $tools_menu{'Quick payment entry'} =  [ $fsurl.'misc/batch-cust_pay.html', 'Enter multiple payments in a batch' ]
+    if $curuser->access_right('Post payment batch');
+  $tools_menu{'Job Queue'} =  [ $fsurl.'search/queue.html', 'View pending job queue' ]
+    if $curuser->access_right('Job queue');
+  $tools_menu{'Importing'} =  [ \%tools_importing, 'Import tools' ]
+    if $curuser->access_right('Import');
+  $tools_menu{'Exporting'} =  [ \%tools_exporting, 'Export tools' ]
+    if $curuser->access_right('Export');
 
   tie my %config_employees, 'Tie::IxHash',
     'View/Edit employees' => [ $fsurl.'browse/access_user.html', 'Setup internal users' ],
   tie my %config_billing, 'Tie::IxHash',
     'View/Edit payment gateways'         => [ $fsurl.'browse/payment_gateway.html', 'Credit card and electronic check processors' ],
     'View/Edit invoice events'           => [ $fsurl.'browse/part_bill_event.cgi', 'Actions for overdue invoices' ],
-    'View/Edit prepaid cards'            => [ $fsurl.'browse/prepay_credit.html', 'View outstanding cards, generate new cards' ],
+    'View/Edit prepaid cards'            => [ $fsurl.'search/prepay_credit.html', 'View outstanding cards, generate new cards' ],
     'View/Edit call rates and regions'   => [ $fsurl.'browse/rate.cgi', 'Manage rate plans, regions and prefixes for VoIP and call billing' ],
     'View/Edit locales and tax rates'    => [ $fsurl.'browse/cust_main_county.cgi', 'Change tax rates, or break down a country into states, or a state into counties and assign different tax rates to each' ],
   ;
     'View/Edit address blocks' => [ $fsurl.'browse/addr_block.cgi', 'Manage address blocks and block assignments to broadband routers' ],
   ;
 
-  tie my %config_misc, 'Tie::IxHash',
-    'View/Edit advertising sources' => [ $fsurl.'browse/part_referral.cgi', 'Where a customer heard about your service.  Tracked for informational purposes' ],
-    'View/Edit virtual fields' => [ $fsurl.'browse/part_virtual_field.cgi', 'Locally defined fields', ],
-    'View/Edit message catalog' => [ $fsurl.'browse/msgcat.cgi', 'Change error messages and other customizable labels' ],
-    'View/Edit inventory classes and inventory' => [ $fsurl.'browse/inventory_class.html', 'Setup inventory classes and stock inventory' ],
-  ;
+  tie my %config_misc, 'Tie::IxHash';
+  $config_misc{'View/Edit advertising sources'} = [ $fsurl.'browse/part_referral.html', 'Where a customer heard about your service.  Tracked for informational purposes' ]
+    if $curuser->access_right('Configuration')
+    || $curuser->access_right('Edit advertising sources')
+    || $curuser->access_right('Edit global advertising sources');
+  if ( $curuser->access_right('Configuration') ) {
+    $config_misc{'View/Edit virtual fields'} = [ $fsurl.'browse/part_virtual_field.cgi', 'Locally defined fields', ];
+    $config_misc{'View/Edit message catalog'} = [ $fsurl.'browse/msgcat.cgi', 'Change error messages and other customizable labels' ];
+    $config_misc{'View/Edit inventory classes and inventory'} = [ $fsurl.'browse/inventory_class.html', 'Setup inventory classes and stock inventory' ];
+  }
 
-  tie my %config_menu, 'Tie::IxHash',
-    'Settings'      => [ $fsurl.'config/config-view.cgi', 'XXXconfigittip' ],
-    'separator'     => '', #its a separator!
-    'Employees'     => [ \%config_employees, 'XXXtooltip' ],
-    'Provisioning, services and packages'
-                    => [ \%config_export_svc_pkg, 'XXXtootip'    ],
-    'Resellers'     => [ \%config_agent, 'XXXtootip'    ],
-    'Billing'       => [ \%config_billing, 'XXXtootip'    ],
-    'Dialup'        => [ \%config_dialup, 'XXXtootip'    ],
-    'Fixed (username-less) broadband'
-                    => [ \%config_broadband, 'XXXtootip'    ],
-    'Miscellaneous' => [ \%config_misc, 'XXXtootip'    ],
-  ;
+  tie my %config_menu, 'Tie::IxHash';
+  if ( $curuser->access_right('Configuration' ) ) {
+    %config_menu = (
+      'Settings'      => [ $fsurl.'config/config-view.cgi', '' ],
+      'separator'     => '', #its a separator!
+      'Employees'     => [ \%config_employees, '' ],
+      'Provisioning, services and packages'
+                      => [ \%config_export_svc_pkg, ''    ],
+      'Resellers'     => [ \%config_agent, ''    ],
+      'Billing'       => [ \%config_billing, ''    ],
+      'Dialup'        => [ \%config_dialup, ''    ],
+      'Fixed (username-less) broadband'
+                      => [ \%config_broadband, ''    ],
+    );
+  }
+  $config_menu{'Miscellaneous'} = [ \%config_misc, ''    ]
+    if $curuser->access_right('Configuration')
+    || $curuser->access_right('Edit advertising sources')
+    || $curuser->access_right('Edit global advertising sources');
 
   tie my %menu, 'Tie::IxHash',
     'Billing Main'   => [ $fsurl, 'Billing start page', ],
                           ),
                           'Ticketing start page',
                         ],
-    'Reports'        => [ \%report_menu, 'Lists, reporting and graphing' ],
-    'Tools'          => [ \%tools_menu, 'Tools' ],
-    'Configuration'  => [ \%config_menu, 'Configuraiton and setup' ],
   ;
+  $menu{'Reports'} = [ \%report_menu, 'Lists, reporting and graphing' ]
+    if keys %report_menu;
+  $menu{'Tools'} = [ \%tools_menu, 'Tools' ]
+    if keys %tools_menu;
+  $menu{'Configuration'} = [ \%config_menu, 'Configuraiton and setup' ]
+    if $curuser->access_right('Configuration')
+    || $curuser->access_right('Edit advertising sources')
+    || $curuser->access_right('Edit global advertising sources');
 
   use vars qw($gmenunum);
   $gmenunum = 0;
   webfxMenuImagePath      = "<%=$fsurl%>images/";
   webfxMenuUseHover       = 1;
   webfxMenuShowTime       = 300;
-  webfxMenuHideTime       = 500;
+  webfxMenuHideTime       = 300;
 
   var myBar = new WebFXMenuBar;
 
 
        if ( ref($url_or_submenu) ) {
 
-         warn $item;
+         #warn $item;
 
          my( $subhtml, $submenuname ) = submenu($url_or_submenu, $item);