X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_credit.pm;h=b87b0dbc3d80670e9386eaeb9c15fc82f0bdc064;hb=18f1fb3831bd99520f02a5ebe717344f71dc866f;hp=70d78749c63b121b1b8ed4e414bb5ede8e772c8e;hpb=34f91089a0d54fa39d622ec5e03d9e09a50e9f79;p=freeside.git diff --git a/FS/FS/cust_credit.pm b/FS/FS/cust_credit.pm index 70d78749c..b87b0dbc3 100644 --- a/FS/FS/cust_credit.pm +++ b/FS/FS/cust_credit.pm @@ -1,20 +1,21 @@ package FS::cust_credit; use strict; -use vars qw( @ISA $conf $unsuspendauto $me $DEBUG ); +use base qw( FS::otaker_Mixin FS::cust_main_Mixin FS::Record ); +use vars qw( $conf $unsuspendauto $me $DEBUG ); use Date::Format; use FS::UID qw( dbh getotaker ); use FS::Misc qw(send_email); use FS::Record qw( qsearch qsearchs dbdef ); -use FS::cust_main_Mixin; use FS::cust_main; +use FS::cust_pkg; use FS::cust_refund; use FS::cust_credit_bill; use FS::part_pkg; use FS::reason_type; use FS::reason; +use FS::cust_event; -@ISA = qw( FS::cust_main_Mixin FS::Record ); $me = '[ FS::cust_credit ]'; $DEBUG = 0; @@ -58,22 +59,46 @@ FS::Record. The following fields are currently supported: =over 4 -=item crednum - primary key (assigned automatically for new credits) +=item crednum -=item custnum - customer (see L) +Primary key (assigned automatically for new credits) -=item amount - amount of the credit +=item custnum -=item _date - specified as a UNIX timestamp; see L. Also see +Customer (see L) + +=item amount + +Amount of the credit + +=item _date + +Specified as a UNIX timestamp; see L. Also see L and L for conversion functions. -=item otaker - order taker (assigned automatically, see L) +=item usernum + +Order taker (see L) + +=item reason + +Text ( deprecated ) + +=item reasonnum + +Reason (see L) + +=item addlinfo + +Text + +=item closed -=item reason - text ( deprecated ) +Books closed flag, empty or `Y' -=item reasonum - int reason (see L) +=item pkgnum -=item closed - books closed flag, empty or `Y' +Desired pkgnum when using experimental package balances. =back @@ -127,7 +152,7 @@ sub insert { ); unless($result) { $dbh->rollback if $oldAutoCommit; - return "failed to set reason for $me: ". $dbh->errstr; + return "failed to set reason for $me"; #: ". $dbh->errstr; } } @@ -209,7 +234,8 @@ sub delete { my $cust_main = $self->cust_main; my $error = send_email( - 'from' => $conf->config('invoice_from'), #??? well as good as any + 'from' => $conf->config('invoice_from', $self->cust_main->agentnum), + #invoice_from??? well as good as any 'to' => $conf->config('deletecredits'), 'subject' => 'FREESIDE NOTIFICATION: Credit deleted', 'body' => [ @@ -269,15 +295,21 @@ sub check { || $self->ut_number('custnum') || $self->ut_numbern('_date') || $self->ut_money('amount') - || $self->ut_alpha('otaker') + || $self->ut_alphan('otaker') || $self->ut_textn('reason') || $self->ut_foreign_key('reasonnum', 'reason', 'reasonnum') + || $self->ut_textn('addlinfo') || $self->ut_enum('closed', [ '', 'Y' ]) + || $self->ut_foreign_keyn('pkgnum', 'cust_pkg', 'pkgnum') + || $self->ut_foreign_keyn('eventnum', 'cust_event', 'eventnum') ; return $error if $error; return "amount must be > 0 " if $self->amount <= 0; + return "amount must be greater or equal to amount applied" + if $self->unapplied < 0; + return "Unknown customer" unless qsearchs( 'cust_main', { 'custnum' => $self->custnum } ); @@ -286,24 +318,6 @@ sub check { $self->SUPER::check; } -=item cust_refund - -Depreciated. See the cust_credit_refund method. - -#Returns all refunds (see L) for this credit. - -=cut - -sub cust_refund { - use Carp; - croak "FS::cust_credit->cust_pay depreciated; see ". - "FS::cust_credit->cust_credit_refund"; - #my $self = shift; - #sort { $a->_date <=> $b->_date } - # qsearch( 'cust_refund', { 'crednum' => $self->crednum } ) - #; -} - =item cust_credit_refund Returns all refund applications (see L) for this credit. @@ -312,6 +326,7 @@ Returns all refund applications (see L) for this credit. sub cust_credit_refund { my $self = shift; + map { $_ } #return $self->num_cust_credit_refund unless wantarray; sort { $a->_date <=> $b->_date } qsearch( 'cust_credit_refund', { 'crednum' => $self->crednum } ) ; @@ -326,6 +341,7 @@ credit. sub cust_credit_bill { my $self = shift; + map { $_ } #return $self->num_cust_credit_bill unless wantarray; sort { $a->_date <=> $b->_date } qsearch( 'cust_credit_bill', { 'crednum' => $self->crednum } ) ; @@ -403,7 +419,11 @@ sub reason { 'reason' => $value, 'disabled' => 'Y', } ); - $reason->insert and $reason = undef; + my $error = $reason->insert; + if ( $error ) { + warn "error inserting reason: $error\n"; + $reason = undef; + } } $self->reasonnum($reason ? $reason->reasonnum : '') ; @@ -414,14 +434,13 @@ sub reason { $dbh->commit or die $dbh->errstr if $oldAutoCommit; - $reason ? $reason->reason : ''; + ( $reason ? $reason->reason : '' ). + ( $self->addlinfo ? ' '.$self->addlinfo : '' ); } # _upgrade_data # # Used by FS::Upgrade to migrate to a new database. -# -# sub _upgrade_data { # class method my ($class, %opts) = @_; @@ -529,7 +548,7 @@ sub _upgrade_data { # class method } } - ''; + $class->_upgrade_otaker(%opts); }