X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_pbx.pm;h=1989622604100adf75407e325e030d581e2c7fc5;hb=62b18c75989a1b00a25079f8f110992aaad81bba;hp=7899621b2a495b14e3205a94be7ee0cccb20fff2;hpb=96d6a93b8cbc7fbe2eb7a0877c4108111c96d3e3;p=freeside.git diff --git a/FS/FS/svc_pbx.pm b/FS/FS/svc_pbx.pm index 7899621b2..198962260 100644 --- a/FS/FS/svc_pbx.pm +++ b/FS/FS/svc_pbx.pm @@ -9,6 +9,7 @@ use FS::Conf; use FS::cust_svc; use FS::svc_phone; use FS::svc_acct; +use FS::pbx_extension; =head1 NAME @@ -62,6 +63,11 @@ Maximum number of extensions Maximum number of simultaneous users +=item ip_addr + +The IP address of this PBX, if that's relevant. This must be a valid IP +address (or blank), but it's not checked for block assignment or uniqueness. + =back =head1 METHODS @@ -85,9 +91,11 @@ sub table_info { tie my %fields, 'Tie::IxHash', 'svcnum' => 'PBX', 'id' => 'PBX/Tenant ID', + 'uuid' => 'External UUID', 'title' => 'Name', 'max_extensions' => 'Maximum number of User Extensions', 'max_simultaneous' => 'Maximum number of simultaneous users', + 'ip_addr' => 'IP address', ; { @@ -237,9 +245,10 @@ sub check { my $x = $self->setfixed; return $x unless ref($x); my $part_svc = $x; - - - $self->SUPER::check; + + return + $self->ut_ipn('ip_addr') + || $self->SUPER::check; } sub _check_duplicate { @@ -378,6 +387,39 @@ sub get_cdrs { qsearch ( $psearch->{query} ) } +=item sum_cdrs + +Takes the same options as psearch_cdrs, but returns a single row containing +"count" (the number of CDRs) and the sums of the following fields: duration, +billsec, rated_price, rated_seconds, rated_minutes. + +Note that if any calls are not rated, their rated_* fields will be null. +If you want to use those fields, pass the 'status' option to limit to +calls that have been rated. This is intentional; please don't "fix" it. + +=cut + +sub sum_cdrs { + my $self = shift; + my $psearch = $self->psearch_cdrs(@_); + $psearch->{query}->{'select'} = join(',', + 'COUNT(*) AS count', + map { "SUM($_) AS $_" } + qw(duration billsec rated_price rated_seconds rated_minutes) + ); + # hack + $psearch->{query}->{'extra_sql'} =~ s/ ORDER BY.*$//; + qsearchs ( $psearch->{query} ); +} + + +# 3.x stub + +sub pbx_extension { + my $self = shift; + qsearch('pbx_extension', { svcnum=>$self->svcnum }); +} + =back =head1 BUGS