1 package FS::cust_credit_refund;
5 use FS::Record qw( qsearch qsearchs dbh );
6 #use FS::UID qw(getotaker);
10 @ISA = qw( FS::Record );
14 FS::cust_credit_refund - Object methods for cust_bill_pay records
18 use FS::cust_credit_refund;
20 $record = new FS::cust_credit_refund \%hash;
21 $record = new FS::cust_credit_refund { 'column' => 'value' };
23 $error = $record->insert;
25 $error = $new_record->replace($old_record);
27 $error = $record->delete;
29 $error = $record->check;
33 An FS::cust_credit_refund represents the application of a refund to a specific
34 credit. FS::cust_credit_refund inherits from FS::Record. The following fields
35 are currently supported:
39 =item creditrefundnum - primary key (assigned automatically)
41 =item crednum - Credit (see L<FS::cust_credit>)
43 =item refundnum - Refund (see L<FS::cust_refund>)
45 =item amount - Amount of the refund to apply to the specific credit.
47 =item _date - specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
48 L<Time::Local> and L<Date::Parse> for conversion functions.
58 Creates a new record. To add the record to the database, see L<"insert">.
62 sub table { 'cust_credit_refund'; }
66 Adds this record to the database. If there is an error, returns the error,
67 otherwise returns false.
74 local $SIG{HUP} = 'IGNORE';
75 local $SIG{INT} = 'IGNORE';
76 local $SIG{QUIT} = 'IGNORE';
77 local $SIG{TERM} = 'IGNORE';
78 local $SIG{TSTP} = 'IGNORE';
79 local $SIG{PIPE} = 'IGNORE';
81 my $oldAutoCommit = $FS::UID::AutoCommit;
82 local $FS::UID::AutoCommit = 0;
85 my $error = $self->check;
86 return $error if $error;
88 $error = $self->SUPER::insert;
91 qsearchs('cust_refund', { 'refundnum' => $self->refundnum } )
93 $dbh->rollback if $oldAutoCommit;
94 return "unknown cust_refund.refundnum: ". $self->refundnum
98 $refund_total += $_ foreach map { $_->amount }
99 qsearch('cust_credit_refund', { 'refundnum' => $self->refundnum } );
101 if ( $refund_total > $cust_refund->refund ) {
102 $dbh->rollback if $oldAutoCommit;
103 return "total cust_credit_refund.amount $refund_total for refundnum ".
105 " greater than cust_refund.refund ". $cust_refund->refund;
108 $dbh->commit or die $dbh->errstr if $oldAutoCommit;
115 Currently unimplemented (accounting reasons).
120 return "Can't (yet?) delete cust_credit_refund records!";
123 =item replace OLD_RECORD
125 Currently unimplemented (accounting reasons).
130 return "Can't (yet?) modify cust_credit_refund records!";
135 Checks all fields to make sure this is a valid payment. If there is an error,
136 returns the error, otherwise returns false. Called by the insert method.
144 $self->ut_numbern('creditrefundnum')
145 || $self->ut_number('crednum')
146 || $self->ut_number('refundnum')
147 || $self->ut_money('amount')
148 || $self->ut_numbern('_date')
150 return $error if $error;
152 return "amount must be > 0" if $self->amount <= 0;
154 $self->_date(time) unless $self->_date;
156 return "unknown cust_credit.crednum: ". $self->crednum
157 unless qsearchs( 'cust_credit', { 'crednum' => $self->crednum } );
164 Returns the refund (see L<FS::cust_refund>)
170 qsearchs( 'cust_refund', { 'refundnum' => $self->refundnum } );
175 Returns the credit (see L<FS::cust_credit>)
181 qsearchs( 'cust_credit', { 'crednum' => $self->crednum } );
188 $Id: cust_credit_refund.pm,v 1.9 2002-01-26 01:52:31 ivan Exp $
192 Delete and replace methods.
194 the checks for over-applied refunds could be better done like the ones in
199 L<FS::cust_credit>, L<FS::cust_refund>, L<FS::Record>, schema.html from the