+=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} );
+}
+
+=back
+
+=head1 CLASS METHODS
+
+=over 4
+
+=item e911_classes
+
+Returns a hashref of allowed values and descriptions for the C<e911_class>
+field.
+
+=item e911_types
+
+Returns a hashref of allowed values and descriptions for the C<e911_type>
+field.
+
+=cut
+
+sub e911_classes {
+ tie my %x, 'Tie::IxHash', (
+ 1 => 'Residence',
+ 2 => 'Business',
+ 3 => 'Residence PBX',
+ 4 => 'Business PBX',
+ 5 => 'Centrex',
+ 6 => 'Coin 1 Way out',
+ 7 => 'Coin 2 Way',
+ 8 => 'Mobile',
+ 9 => 'Residence OPX',
+ 0 => 'Business OPX',
+ A => 'Customer Operated Coin Telephone',
+ #B => not available
+ G => 'Wireless Phase I',
+ H => 'Wireless Phase II',
+ I => 'Wireless Phase II with Phase I information',
+ V => 'VoIP Services Default',
+ C => 'VoIP Residence',
+ D => 'VoIP Business',
+ E => 'VoIP Coin/Pay Phone',
+ F => 'VoIP Wireless',
+ J => 'VoIP Nomadic',
+ K => 'VoIP Enterprise Services',
+ T => 'Telematics',
+ );
+ \%x;
+}
+
+sub e911_types {
+ tie my %x, 'Tie::IxHash', (
+ 0 => 'Not FX nor Non-Published',
+ 1 => 'FX in 911 serving area',
+ 2 => 'FX outside 911 serving area',
+ 3 => 'Non-Published',
+ 4 => 'Non-Published FX in serving area',
+ 5 => 'Non-Published FX outside serving area',
+ 6 => 'Local Ported Number',
+ 7 => 'Interim Ported Number',
+ );
+ \%x;
+}