% }
% unless ( $opt{'nocss'} ) {
- <link href="<%$fsurl%>elements/freeside.css" type="text/css" rel="stylesheet">
- <link href="<%$fsurl%>elements/freeside-print.css" type="text/css" rel="stylesheet" media="print">
+ <link href="<%$fsurl%>elements/freeside.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet">
+ <link href="<%$fsurl%>elements/freeside-print.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet" media="print">
% }
-<link href="<%$fsurl%>elements/freeside-menu.css" type="text/css" rel="stylesheet">
+<link href="<%$fsurl%>elements/freeside-menu.css?v=<% $FS::VERSION %>" type="text/css" rel="stylesheet">
<SCRIPT TYPE="text/javascript">
if $conf->config('ticket_system');
$report_customers_lists{'with USPS-unvalidated addresses'} = [ $fsurl. 'search/cust_main.cgi?browse=uspsunvalid', '' ]
if $conf->config('usps_webtools-userid') && $conf->config('usps_webtools-password');
+$report_customers_lists{'with referrals'} = [ $fsurl. 'search/cust_main.html?with_referrals=1' ];
tie my %report_customers, 'Tie::IxHash';
$report_customers{'List customers'} = [ \%report_customers_lists, 'List customers' ]
if $curuser->access_right('List all customers');
-$report_customers{'Zip code distribution'} = [ $fsurl. 'search/report_cust_main-zip.html', 'Zip codes by number of customers' ];
-$report_customers{'Customer signup report'} = [ $fsurl. 'graph/report_cust_signup.html', 'New customer signups by date' ];
-$report_customers{'Customer churn report'} = [ $fsurl.'graph/report_cust_churn.html', 'New customers, suspensions, and cancellations summary' ];
+$report_customers{'Zip code distribution'} = [ $fsurl. 'search/report_cust_main-zip.html', 'Zip codes by number of customers' ]
+ if $curuser->access_right('List zip codes');
+$report_customers{'Customer signup report'} = [ $fsurl. 'graph/report_cust_signup.html', 'New customer signups by date' ]
+ if $curuser->access_right('Financial reports');
+$report_customers{'Customer churn report'} = [ $fsurl.'graph/report_cust_churn.html', 'New customers, suspensions, and cancellations summary' ]
+ if $curuser->access_right('Customers: Customer churn report');
$report_customers{'Signup date report'} = [ $fsurl. 'graph/report_signupdate.html', 'Signup date report (by date of signup)' ];
$report_customers{'Advanced customer reports'} = [ $fsurl. 'search/report_cust_main.html', 'by status, signup date, agent, etc.' ]
if $curuser->access_right('Advanced customer search');
$report_customers{'separator'} = '';
$report_customers{'Customer contacts'} = [ $fsurl. 'search/report_contact.html?link=cust_main' ];
$report_customers{'Customer stored payment information'} = [ $fsurl. 'search/report_cust_payby.html' ];
+ $report_customers{'Customer timespan'} = [ $fsurl. 'search/report_cust_timespan.html' ];
}
tie my %report_invoices_open, 'Tie::IxHash',
}
+## adding export test reports
+tie my %report_exports, 'Tie::IxHash';
+my $exports = FS::part_export::export_info();
+my $exportname;
+tie my %export_list, 'Tie::IxHash',
+ '' => '',
+ map { $_ => "$_ - ". $exports->{$_}{desc} }
+ sort { $a cmp $b }
+ keys %$exports;
+;
+
+foreach my $export (keys %export_list) {
+ $report_exports{"$export export test"} =
+ [ $fsurl. 'search/report_svc_export_test.cgi?export='.$export,
+ "Report of invalid service setup for services tied to $export export",
+ ] if "FS::part_export::$export"->can('test_export_report');
+}
+$report_services{'exports'} = [ \%report_exports, "Exports" ];
+
tie my %report_packages, 'Tie::IxHash';
$report_packages{'Package definitions (by # active)'} = [ $fsurl.'browse/part_pkg.cgi?active=1', 'Package definitions by number of active packages' ]
if $curuser->access_right('Edit package definitions')
'Billing event errors' => [ $fsurl.'search/report_cust_event.html?failed=1', 'Failed credit cards, processor or printer problems, etc.' ],
;
-tie my %report_payments, 'Tie::IxHash',
- 'Payments' => [ $fsurl.'search/report_cust_pay.html', 'Payment report (by type and/or date range)' ],
- 'Payment application detail' => [ $fsurl.'search/report_cust_bill_pay_pkg.html', 'Line item application detail' ],
-;
+tie my %report_payments, 'Tie::IxHash';
+$report_payments{'Payments'} = [ $fsurl.'search/report_cust_pay.html', 'Payment report (by type and/or date range)' ]
+ if $curuser->access_right('Basic payment and refund reports');
+$report_payments{'Payment application detail'} = [ $fsurl.'search/report_cust_bill_pay_pkg.html', 'Line item application detail' ]
+ if $curuser->access_right('Financial reports');
$report_payments{'Pending Payments'} = [ $fsurl.'search/cust_pay_pending.html?magic=_date;statusNOT=done', 'Pending real-time payments' ]
if $curuser->access_right('View customer pending payments');
-$report_payments{'Unapplied Payments'} = [ $fsurl.'search/report_cust_pay.html?unapplied=1', 'Unapplied payment report (by type and/or date range)' ];
+$report_payments{'Unapplied Payments'} = [ $fsurl.'search/report_cust_pay.html?unapplied=1', 'Unapplied payment report (by type and/or date range)' ]
+ if $curuser->access_right('Financial reports'); #not enforced
$report_payments{'Voided Payments'} = [ $fsurl.'search/report_cust_pay.html?void=1', 'Voided payment report (by type and/or date range)' ]
- if $curuser->access_right('View customer pending payments');
+ if $curuser->access_right('Financial reports'); #not enforced
$report_payments{'Payment Batches'} = [ $fsurl.'search/pay_batch.html', 'Payment batches (by status and/or date range)' ]
- if $conf->exists('batch-enable') || $conf->config('batch-enable_payby');
-$report_payments{'Unapplied Payment Aging'} = [ $fsurl.'search/report_unapplied_cust_pay.html', 'Unapplied payment aging report' ];
+ if ( $conf->exists('batch-enable') || $conf->config('batch-enable_payby') )
+ && $curuser->access_right('Financial reports');
+$report_payments{'Unapplied Payment Aging'} = [ $fsurl.'search/report_unapplied_cust_pay.html', 'Unapplied payment aging report' ]
+ if $curuser->access_right('Financial reports');
$report_payments{'Deleted Payments / Payment history table'} = [ $fsurl.'search/report_h_cust_pay.html', 'Deleted payments / payment history table' ]
- if $conf->exists('payment-history-report');
+ if $conf->exists('payment-history-report')
+ && $curuser->access_right('Financial reports');
tie my %report_credits, 'Tie::IxHash',
'Credit Report' => [ $fsurl.'search/report_cust_credit.html', 'Credit report (by employee and/or date range)' ],
$report_financial{'Customer Accounting Summary'} = [ $fsurl.'search/report_customer_accounting_summary.html', 'Customer accounting summary report' ];
+ if ( my $report_title = FS::cust_payby->future_autobill_report_title ) {
+ $report_financial{$report_title} = [ $fsurl.'search/report_future_autobill.html', "$report_title for customers with automatic payment methods (by date)" ];
+ }
+
} elsif($curuser->access_right('Receivables report')) {
$report_financial{'A/R Aging'} = [ $fsurl.'search/report_receivables.html', 'Accounts Receivable Aging report' ];
tie my %report_logs, 'Tie::IxHash';
$report_logs{'Billing events'} = [ $fsurl.'search/report_cust_event.html', 'Search billing events by date and status' ]
if $curuser->access_right('Billing event reports');
+$report_logs{'Billing event fees'} = [ $fsurl.'search/report_cust_event_fee.html', 'Search fees triggered by billing events' ]
+ if $curuser->access_right('Billing event reports');
$report_logs{'Credit limit incidents'} = [ $fsurl.'search/report_cust_main_credit_limit.html', '' ]
if $curuser->access_right('List rating data');
-$report_logs{'Employee activity'} = [ $fsurl.'search/report_employee_audit.html', '' ]
- if $curuser->access_right('Employees: Audit Report');
$report_logs{'System log'} = [ $fsurl.'search/log.html', 'View system events and debugging information.' ],
if $curuser->access_right('View system logs')
|| $curuser->access_right('Configuration');
if $curuser->access_right('View email logs')
|| $curuser->access_right('Configuration');
+tie my %report_employee, 'Tie::IxHash',
+ 'Employee activity' => [ $fsurl.'search/report_employee_audit.html', '' ],
+ 'Employee sessions' => [ $fsurl.'search/report_access_user_session_log.html', '' ],
+ 'Access log statistics' => [ $fsurl.'search/report_access_user_log.html?group_by=path', '' ],
+;
+
tie my %report_menu, 'Tie::IxHash';
$report_menu{'Saved searches'} = [ \%report_saved_searches, 'My saved searches' ]
if keys(%report_saved_searches);
if $curuser->access_right('List quotations');
$report_menu{'Customers'} = [ \%report_customers, 'Customer reports' ]
if $curuser->access_right('List customers')
- || $curuser->access_right('List contacts');
+ || $curuser->access_right('List contacts')
+ || $curuser->access_right('Advanced customer search')
+ || $curuser->access_right('List zip codes')
+ || $curuser->access_right('Financial reports')
+ || $curuser->access_right('Customers: Customer churn report');
$report_menu{'Invoices'} = [ \%report_invoices, 'Invoice reports' ]
if $curuser->access_right('List invoices');
$report_menu{'Discounts'} = [ \%report_discounts, 'Discount reports' ]
if $curuser->access_right('Financial reports');
$report_menu{'Payments'} = [ \%report_payments, 'Payment reports' ]
- if $curuser->access_right('Financial reports');
+ if keys %report_payments;
$report_menu{'Packages'} = [ \%report_packages, 'Package reports' ]
if $curuser->access_right('List packages');
$report_menu{'Services'} = [ \%report_services, 'Services reports' ]
$report_menu{'Financial (Payables)'} = [ \%report_payable, 'Financial reports (Payables)' ]
if $curuser->access_right('Financial reports');
+$report_menu{'Employees'} = [ \%report_employee, 'Employee reports' ]
+ if $curuser->access_right('Employee Reports');
$report_menu{'Logs'} = [ \%report_logs, 'System and email logs' ]
if (keys %report_logs); # empty if the user has no rights to it
$report_menu{'SQL Query'} = [ $fsurl.'search/report_sql.html', 'SQL Query']
tie my %tools_customers, 'Tie::IxHash', ();
$tools_customers{'Appointments'} = [ $fsurl.'rt/Search/Schedule.html?LengthMin=0', 'View appointment schedule' ]
if $curuser->access_right('View appointments');
-$tools_customers{'Attachments'} = [ $fsurl.'browse/cust_attachment.html', 'View customer attachments' ]
+$tools_customers{'Attachments'} = [ $fsurl.'search/report_cust_attachment.html', 'View customer attachments' ]
if !$conf->config('disable_cust_attachment') and $curuser->access_right('View attachments') and $curuser->access_right('Browse attachments');
$tools_customers{'Customer email settings'} = [ $fsurl.'misc/manage_cust_email.html' ]
if $curuser->access_right('Edit customer');
'Customers' => [ $fsurl.'misc/cust_main-import.cgi', '' ],
'Package definitions' => [ $fsurl.'misc/part_pkg-import.html', '' ],
'Customer packages' => [ $fsurl.'misc/cust_pkg-import.html', '' ],
- 'Customer comments' => [ $fsurl.'misc/cust_main_note-import.html', '' ],
+# 'Customer broadband services' => [ $fsurl.'misc/svc_broadband-import.html', '' ],
+ 'Customer notes' => [ $fsurl.'misc/cust_main_note-import.html', '' ],
+ 'Customer contacts' => [ $fsurl.'misc/contact-import.cgi', '' ],
'One-time charges' => [ $fsurl.'misc/cust_main-import_charges.cgi', '' ],
'Payments' => [ $fsurl.'misc/cust_pay-import.cgi', '' ],
'Credits' => [ $fsurl.'misc/cust_credit-import.html', '' ],
'Phone numbers (DIDs)' => [ $fsurl.'misc/phone_avail-import.html', '' ],
'Call Detail Records (CDRs)' => [ $fsurl.'misc/cdr-import.html', '' ],
;
-if ( $conf->config('tax_data_vendor') eq 'cch' ) {
+if ( $conf->config('tax_data_vendor') ) {
if ( $conf->exists('taxdatadirectdownload') ) {
$tools_importing{'Tax rates from vendor site'} =
[ $fsurl.'misc/tax-fetch_and_import.cgi', '' ];
if $curuser->access_right('Configuration'); # 'View system status');
$tools_system{'Job Queue'} = [ $fsurl.'search/queue.html', 'View pending job queue' ]
if $curuser->access_right('Job queue');
-$tools_system{'Access log statistics'} = [ $fsurl.'search/report_access_user_log.html?group_by=path', '' ]
- if $curuser->access_right('Configuration'); # 'View profiling data');
tie my %tools_menu, 'Tie::IxHash', ();
$tools_menu{'Customers'} = [ \%tools_customers, 'Customer tools' ]
tie my %config_employees, 'Tie::IxHash',
'Employees' => [ $fsurl.'browse/access_user.html', 'Setup internal users' ],
- 'Employee groups' => [ $fsurl.'browse/access_group.html', 'Employee groups allow you to control access to the backend' ],
+ 'Employee groups and access control' => [ $fsurl.'browse/access_group.html', 'Employee groups allow you to control access to the backend' ],
'Installer availability' => [ $fsurl.'browse/sched_item.html', 'Installer availability' ],
;
'Contact types' => [ $fsurl.'browse/contact_class.html', ''], #XXX useful description
;
-$config_cust{'Note classes'} = [ $fsurl.'browse/cust_note_class.html', 'Note classes define groups of customer notes for reporting.' ]
- if ($conf->exists('note-classes') && $conf->config('note-classes'));
+$config_cust{'Note classes'} = [ $fsurl.'browse/cust_note_class.html', 'Note classes define groups of customer notes for reporting.' ];
tie my %config_agent, 'Tie::IxHash',
'Agent types' => [ $fsurl.'browse/agent_type.cgi', 'Agent types define groups of package definitions that you can then assign to particular agents' ],
|| $curuser->access_right('Edit global inventory')
|| $curuser->access_right('Configuration');
+$config_misc{'Real estate inventory'} = [ $fsurl.'browse/realestate_unit.html', 'Setup real estate inventory' ]
+ if $curuser->access_right('Edit realestate inventory')
+ || $curuser->access_right('Edit global inventory')
+ || $curuser->access_right('Configuration');
+
$config_misc{'Upload targets'} = [ $fsurl.'browse/upload_target.html', 'Billing and payment upload destinations' ]
if $curuser->access_right('Configuration');
if keys %config_billing;
$config_menu{'Ticketing'} = [ \%config_ticketing, '' ]
if $conf->config('ticket_system')
- && FS::TicketSystem->access_right(\%session, 'ShowConfigTab');
+ && eval { FS::TicketSystem->access_right(\%session, 'ShowConfigTab') };
$config_menu{'Network Monitoring'} = [ \%config_nms, '' ]
if $curuser->access_right('Configure network monitoring')
&& $conf->config('network_monitoring_system') eq 'Torrus_Internal';
if $conf->config('ticket_system') eq 'RT_Internal';
$help_menu{'Networking monitoring documentation'} = [ 'http://torrus.org/userguide.pod.html', 'Torrus User Guide' ]
if $conf->config('network_monitoring_system') eq 'Torrus_Internal';
+ $help_menu{'Developer documentation'} = [ "${fsurl}docs/library/FS.html", 'Developer documentation' ];
$help_menu{'separator'} = '';
$help_menu{"About Freeside v$FS::VERSION"} = [ "javascript:about_freeside()", '' ];
$help_menu{"About RT v$RT::VERSION"} = [ 'http://www.bestpractical.com/rt', 'Request Tracker Homepage' ]
}
</%init>
-