my %opt = @_;
my $locale = $opt{'locale'} || '';
- my $conf = FS::Conf->new(locale => $locale);
+ my $conf = FS::Conf->new({ locale => $locale });
$locale ||= $conf->config('locale') || 'en_US';
my %locale_info = FS::Locales->locale_info($locale);
my $language_name = $locale_info{'name'};
- my $self = { conf => FS::Conf->new(locale => $locale),
+ my $self = { conf => FS::Conf->new({ locale => $locale }),
csv => Text::CSV_XS->new({ binary => 1 }),
inbound => ($opt{'inbound'} ? 1 : 0),
buffer => ($opt{'buffer'} || []),
$self->{inbound};
}
+=item phonenum VALUE
+
+Set/get the locally meaningful phone number. This is used to tag call details
+for presentation on certain kinds of invoices.
+
+=cut
+
+sub phonenum {
+ my $self = shift;
+ $self->{phonenum} = shift if @_;
+ $self->{phonenum};
+}
+
=item append CDRS
Takes any number of call detail records (as L<FS::cdr> objects),
By default, this maps the following fields from the CDR:
-=over 4
+acctid => acctid
+rated_price => amount
+rated_classnum => classnum
+rated_seconds => duration
+rated_regionname => regionname
+accountcode => accountcode
+startdate => startdate
-=item rated_price => amount
-
-=item rated_classnum => classnum
-
-=item rated_seconds => duration
-
-=item rated_regionname => regionname
-
-=item accountcode => accountcode
-
-=item startdate => startdate
-
-=back
+'phonenum' is set to the internal C<phonenum> value set on the formatter
+object.
It then calls C<columns> on the CDR to obtain a list of detail
columns, formats them as a CSV string, and stores that in the
$price = 0 if $cdr->freesidestatus eq 'no-charge';
FS::cust_bill_pkg_detail->new( {
+ 'acctid' => $cdr->acctid,
'amount' => $price,
'classnum' => $cdr->rated_classnum,
'duration' => $cdr->rated_seconds,
'startdate' => $cdr->startdate,
'format' => 'C',
'detail' => $self->csv->string,
+ 'phonenum' => $self->phonenum,
});
}