=over 4
-=item crednum - primary key (assigned automatically for new credits)
+=item crednum
-=item custnum - customer (see L<FS::cust_main>)
+Primary key (assigned automatically for new credits)
-=item amount - amount of the credit
+=item custnum
-=item _date - specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
+Customer (see L<FS::cust_main>)
+
+=item amount
+
+Amount of the credit
+
+=item _date
+
+Specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
L<Time::Local> and L<Date::Parse> for conversion functions.
-=item otaker - order taker (assigned automatically, see L<FS::UID>)
+=item otaker
+
+Order taker (assigned automatically, see L<FS::UID>)
+
+=item reason
+
+Text ( deprecated )
+
+=item reasonnum
-=item reason - text ( deprecated )
+Reason (see L<FS::reason>)
-=item reasonum - int reason (see L<FS::reason>)
+=item addlinfo
-=item closed - books closed flag, empty or `Y'
+Text
+
+=item closed
+
+Books closed flag, empty or `Y'
=back
sub check {
my $self = shift;
+ $self->otaker(getotaker) unless ($self->otaker);
+
my $error =
$self->ut_numbern('crednum')
|| $self->ut_number('custnum')
|| $self->ut_numbern('_date')
|| $self->ut_money('amount')
+ || $self->ut_alpha('otaker')
|| $self->ut_textn('reason')
|| $self->ut_foreign_key('reasonnum', 'reason', 'reasonnum')
+ || $self->ut_textn('addlinfo')
|| $self->ut_enum('closed', [ '', 'Y' ])
;
return $error if $error;
$self->_date(time) unless $self->_date;
- $self->otaker(getotaker) unless ($self->otaker);
-
$self->SUPER::check;
}
-=item cust_refund
-
-Depreciated. See the cust_credit_refund method.
-
-#Returns all refunds (see L<FS::cust_refund>) 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<FS::cust_credit_refund>) for this credit.
;
}
-=item credited
+=item unapplied
-Returns the amount of this credit that is still outstanding; which is
+Returns the amount of this credit that is still unapplied/outstanding;
amount minus all refund applications (see L<FS::cust_credit_refund>) and
applications to invoices (see L<FS::cust_credit_bill>).
=cut
-sub credited {
+sub unapplied {
my $self = shift;
my $amount = $self->amount;
$amount -= $_->amount foreach ( $self->cust_credit_refund );
sprintf( "%.2f", $amount );
}
+=item credited
+
+Deprecated name for the unapplied method.
+
+=cut
+
+sub credited {
+ my $self = shift;
+ #carp "cust_credit->credited deprecated; use ->unapplied";
+ $self->unapplied(@_);
+}
+
=item cust_main
Returns the customer (see L<FS::cust_main>) for this credit.
$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) = @_;
warn "$me Checking for unmigrated reasons\n" if $DEBUG;
- my @cust_credits = qsearch({ 'table' => $class->table,
- 'hashref' => {},
- 'extrasql' => 'WHERE reason IS NOT NULL',
+ my @cust_credits = qsearch({ 'table' => $class->table,
+ 'hashref' => {},
+ 'extra_sql' => 'WHERE reason IS NOT NULL',
});
if (scalar(grep { $_->getfield('reason') =~ /\S/ } @cust_credits)) {
=over 4
-=item credited_sql
+=item unapplied_sql
Returns an SQL fragment to retreive the unapplied amount.
=cut
-sub credited_sql {
+sub unapplied_sql {
#my $class = shift;
"amount
}
+=item credited_sql
+
+Deprecated name for the unapplied_sql method.
+
+=cut
+
+sub credited_sql {
+ #my $class = shift;
+
+ #carp "cust_credit->credited_sql deprecated; use ->unapplied_sql";
+
+ #$class->unapplied_sql(@_);
+ unapplied_sql();
+}
+
=back
=head1 BUGS
The delete method. The replace method.
-B<credited> and B<credited_sql> should probably be called B<unapplied> and
-B<unapplied_sql>.
+B<credited> and B<credited_sql> are now called B<unapplied> and
+B<unapplied_sql>. The old method names should start to give warnings.
=head1 SEE ALSO