some cleanup while i'm here
[freeside.git] / FS / FS / cust_credit.pm
index 026b92e..7ffb1d1 100644 (file)
@@ -4,13 +4,14 @@ use strict;
 use vars qw( @ISA $conf $unsuspendauto );
 use Date::Format;
 use FS::UID qw( dbh getotaker );
-use FS::Record qw( qsearch qsearchs );
 use FS::Misc qw(send_email);
+use FS::Record qw( qsearch qsearchs );
+use FS::cust_main_Mixin;
 use FS::cust_main;
 use FS::cust_refund;
 use FS::cust_credit_bill;
 
-@ISA = qw( FS::Record );
+@ISA = qw( FS::cust_main_Mixin FS::Record );
 
 #ask FS::UID to run this stuff for us later
 $FS::UID::callback{'FS::cust_credit'} = sub { 
@@ -75,6 +76,12 @@ Creates a new credit.  To add the credit to the database, see L<"insert">.
 =cut
 
 sub table { 'cust_credit'; }
+sub cust_linked { $_[0]->cust_main_custnum; } 
+sub cust_unlinked_msg {
+  my $self = shift;
+  "WARNING: can't find cust_main.custnum ". $self->custnum.
+  ' (cust_credit.crednum '. $self->crednum. ')';
+}
 
 =item insert
 
@@ -127,10 +134,13 @@ sub insert {
 
 =item delete
 
-Currently unimplemented.
+Unless the closed flag is set, deletes this credit and all associated
+applications (see L<FS::cust_credit_bill>).  In most cases, you want to use
+the void method instead to leave a record of the deleted credit.
 
 =cut
 
+# very similar to FS::cust_pay::delete
 sub delete {
   my $self = shift;
   return "Can't delete closed credit" if $self->closed =~ /^Y/i;
@@ -162,7 +172,7 @@ sub delete {
 
   if ( $conf->config('deletecredits') ne '' ) {
 
-    my $cust_main = qsearchs('cust_main',{ 'custnum' => $self->custnum });
+    my $cust_main = $self->cust_main;
 
     my $error = send_email(
       'from'    => $conf->config('invoice_from'), #??? well as good as any
@@ -196,8 +206,7 @@ sub delete {
 
 =item replace OLD_RECORD
 
-Credits may not be modified; there would then be no record the credit was ever
-posted.
+You can, but probably shouldn't modify credits... 
 
 =cut