=item accountcode - accountcode
+=item startdate - CDR startdate, if any
+
=item detail - detail description
=back
=cut
-# the insert method can be inherited from FS::Record
+sub insert {
+ my $self = shift;
+ my $error = $self->SUPER::insert(@_);
+ return $error if $error;
+
+ # link CDRs
+ my $acctids = $self->get('acctid') or return '';
+ $acctids = [ $acctids ] unless ref $acctids;
+ foreach my $acctid ( @$acctids ) {
+ my $cdr = FS::cdr->by_key($acctid);
+ $cdr->set('detailnum', $self->detailnum);
+ $error = $cdr->replace;
+ # this should never happen
+ return "error linking CDR #$acctid: $error" if $error;
+ }
+ '';
+}
=item delete
=cut
-# the delete method can be inherited from FS::Record
+sub delete {
+ my $self = shift;
+ my $error = $self->SUPER::delete;
+ return $error if $error;
+ foreach my $cdr (qsearch('cdr', { detailnum => $self->detailnum })) {
+ $cdr->set('detailnum', '');
+ $error = $cdr->replace;
+ return "error unlinking CDR #" . $cdr->acctid . ": $error" if $error;
+ }
+}
=item replace OLD_RECORD
=cut
-# the replace method can be inherited from FS::Record
+# the replace method can be inherited from FS::Record (doesn't touch CDRs)
=item check
|| $self->ut_text('detail')
|| $self->ut_foreign_keyn('classnum', 'usage_class', 'classnum')
|| $self->$phonenum_check_method('phonenum')
+ || $self->ut_numbern('startdate')
|| $self->SUPER::check
;
If I<escape_function> is set then the format is processed by this
function before being returned.
+DEPRECATED? (mostly unused, expensive)
If I<format_function> is set then the detail is handed to this callback
for processing.
=cut
+#totally false laziness w/cust_bill_pkg->detail
sub formatted {
my ( $self, %opt ) = @_;
my $format = $opt{format} || '';
;
}
+=item cust_bill_pkg
+
+Returns the L<FS::cust_bill_pkg> object (the invoice line item) that
+this detail belongs to.
+
+=cut
+
+sub cust_bill_pkg {
+ my $self = shift;
+ my $billpkgnum = $self->billpkgnum or return '';
+ FS::cust_bill_pkg->by_key($billpkgnum);
+}
# Used by FS::Upgrade to migrate to a new database schema
sub _upgrade_schema { # class method