1 package FS::cust_credit;
5 use FS::UID qw( getotaker );
6 use FS::Record qw( qsearchs );
9 @ISA = qw( FS::Record );
13 FS::cust_credit - Object methods for cust_credit records
19 $record = new FS::cust_credit \%hash;
20 $record = new FS::cust_credit { 'column' => 'value' };
22 $error = $record->insert;
24 $error = $new_record->replace($old_record);
26 $error = $record->delete;
28 $error = $record->check;
32 An FS::cust_credit object represents a credit. FS::cust_credit inherits from
33 FS::Record. The following fields are currently supported:
37 =item crednum - primary key (assigned automatically for new credits)
39 =item custnum - customer (see L<FS::cust_main>)
41 =item amount - amount of the credit
43 =item credited - how much of this credit that is still outstanding, which is
44 amount minus all refunds (see L<FS::cust_refund>).
46 =item _date - specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
47 L<Time::Local> and L<Date::Parse> for conversion functions.
49 =item otaker - order taker (assigned automatically, see L<FS::UID>)
61 Creates a new credit. To add the credit to the database, see L<"insert">.
65 sub table { 'cust_credit'; }
69 Adds this credit to the database ("Posts" the credit). If there is an error,
70 returns the error, otherwise returns false.
72 When adding new invoices, credited must be amount (or null, in which case it is
73 automatically set to amount).
81 return $error if $error = $self->ut_money('credited')
82 || $self->ut_money('amount');
84 $self->credited($self->amount) if $self->credited == 0
85 || $self->credited eq '';
86 return "credited != amount!"
87 unless $self->credited == $self->amount;
94 Currently unimplemented.
99 return "Can't remove credit!"
102 =item replace OLD_RECORD
104 Replaces the OLD_RECORD with this one in the database. If there is an error,
105 returns the error, otherwise returns false.
107 Only credited may be changed. Credited is normally updated by creating and
108 inserting a refund (see L<FS::cust_refund>).
113 my ( $new, $old ) = ( shift, shift );
115 return "Can't change custnum!" unless $old->custnum == $new->custnum;
116 #return "Can't change date!" unless $old->_date eq $new->_date;
117 return "Can't change date!" unless $old->_date == $new->_date;
118 return "Can't change amount!" unless $old->amount == $new->amount;
119 return "(New) credited can't be > (new) amount!"
120 if $new->credited > $new->amount;
122 $new->SUPER::replace($old);
127 Checks all fields to make sure this is a valid credit. If there is an error,
128 returns the error, otherwise returns false. Called by the insert and replace
137 $self->ut_numbern('crednum')
138 || $self->ut_number('custnum')
139 || $self->ut_numbern('_date')
140 || $self->ut_money('amount')
141 || $self->ut_money('credited')
142 || $self->ut_textn('reason');
144 return $error if $error;
146 return "Unknown customer"
147 unless qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
149 $self->_date(time) unless $self->_date;
151 $self->otaker(getotaker);
160 $Id: cust_credit.pm,v 1.1 1999-08-04 09:03:53 ivan Exp $
168 L<FS::Record>, L<FS::cust_refund>, L<FS::cust_bill>, schema.html from the base