'svc_pbx.svcnum' => 'Freeside service # (svc_pbx.svcnum)',
'svc_pbx.ip.src' => 'PBX name to source IP address',
'svc_pbx.ip.dst' => 'PBX name to destination IP address',
+ 'svc_acct.username' => 'Username (svc_acct.username)',
;
tie my %rating_method, 'Tie::IxHash',
'bill_inactive_svcs' => { 'name' => 'Bill for all phone numbers that were active during the billing period',
'type' => 'checkbox',
},
+ 'bill_only_pkg_dates' => { 'name' => 'Only bill CDRs with a date during the package billing period',
+ 'type' => 'checkbox',
+ },
'count_available_phones' => { 'name' => 'Consider for tax purposes the number of lines to be svc_phones that may be provisioned rather than those that actually are.',
'type' => 'checkbox',
selfservice_format selfservice_inbound_format
usage_mandate usage_section summarize_usage
usage_showzero bill_every_call bill_inactive_svcs
+ bill_only_pkg_dates
count_available_phones suspend_bill
)
],
'disable_src' => $self->option('disable_src'),
'default_prefix' => $self->option('default_prefix'),
'cdrtypenum' => $self->option('use_cdrtypenum'),
- 'calltypenum' => $self->option('use_calltypenum'),
+ 'calltypenum' => $self->option('use_calltypenum', 1),
'status' => '',
'for_update' => 1,
- ); # $last_bill, $$sdate )
+ );
+ if ( $self->option('bill_only_pkg_dates') ) {
+ $options{'begin'} = $last_bill;
+ $options{'end'} = $$sdate;
+ }
if ( $svc_field eq 'svcnum' ) {
$options{'by_svcnum'} = 1;
- }
- elsif ($svc_table eq 'svc_pbx' and $svc_field eq 'ip') {
+ } elsif ($svc_table eq 'svc_pbx' and $svc_field eq 'ip') {
$options{'by_ip_addr'} = $by_ip_addr;
}
#my @invoice_details_sort;
+ # for tagging invoice details
+ # (unfortunate; should be a svc_x class method or table_info item or
+ # something)
+ my $phonenum;
+ if ( $svc_table eq 'svc_phone' ) {
+ $phonenum = $svc_x->phonenum;
+ } elsif ( $svc_table eq 'svc_pbx' ) {
+ $phonenum = $svc_x->title;
+ } elsif ( $svc_table eq 'svc_acct' ) {
+ $phonenum = $svc_x->username;
+ }
+ $formatter->phonenum($phonenum);
+
#first rate any outstanding CDRs not yet rated
- # XXX eventually use an FS::Cursor for this
+ # use FS::Cursor for this starting in 4.x
my $cdr_search = $svc_x->psearch_cdrs(%options);
$cdr_search->limit(1000);
$cdr_search->increment(0); # because we're changing their status as we go