FS::cust_main - Object methods for cust_main records
use FS::cust_main;
$record = new FS::cust_main \%hash; $record = new FS::cust_main { 'column' => 'value' };
$error = $record->insert;
$error = $new_record->replace($old_record);
$error = $record->delete;
$error = $record->check;
@cust_pkg = $record->all_pkgs;
@cust_pkg = $record->ncancelled_pkgs;
$error = $record->bill; $error = $record->bill %options; $error = $record->bill 'time' => $time;
$error = $record->collect; $error = $record->collect %options; $error = $record->collect 'invoice_time' => $time, 'batch_card' => 'yes', 'report_badcard' => 'yes', ;
An FS::cust_main object represents a customer. FS::cust_main inherits from FS::Record. The following fields are currently supported:
Note that this stores the hash reference, not a distinct copy of the hash it points to. You can ask the object for a copy with the hash method.
There is a special insert mode in which you pass a data structure to the insert method containing FS::cust_pkg and FS::svc_tablename objects. When running under a transactional database, all records are inserted atomicly, or the transaction is rolled back. There should be a better explanation of this, but until then, here's an example:
use Tie::RefHash; tie %hash, 'Tie::RefHash'; #this part is important %hash = ( $cust_pkg => [ $svc_acct ], ... ); $cust_main->insert( \%hash );
This will completely remove all traces of the customer record. This is not what you want when a customer cancels service; for that, cancel all of the customer's packages (see cancel in the FS::cust_pkg manpage).
If the customer has any packages, you need to pass a new (valid) customer number for those packages to be transferred to.
You can't delete a customer with invoices (see the FS::cust_bill manpage), or credits (see the FS::cust_credit manpage).
The only currently available option is `time', which bills the customer as if it were that time. It is specified as a UNIX timestamp; see perlfunc/``time''). Also see the Time::Local manpage and the Date::Parse manpage for conversion functions.
If there is an error, returns the error, otherwise returns false.
Depending on the value of `payby', this may print an invoice (`BILL'), charge a credit card (`CARD'), or just add any necessary (pseudo-)payment (`COMP').
If there is an error, returns the error, otherwise returns false.
Currently available options are:
invoice_time - Use this time when deciding when to print invoices and late notices on those invoices. The default is now. It is specified as a UNIX timestamp; see perlfunc/``time''). Also see the Time::Local manpage and the Date::Parse manpage for conversion functions.
batch_card - Set this true to batch cards (see the cust_pay_batch manpage). By default, cards are processed immediately, which will generate an error if CyberCash is not installed.
report_badcard - Set this true if you want bad card transactions to return an error. By default, they don't.
Returns a list of email addresses (with svcnum entries expanded).
Note: You can clear the invoicing list by passing an empty ARRAYREF. You can check it without disturbing anything by passing nothing.
This interface may change in the future.
$Id: cust_main.html,v 1.1 2001-07-30 07:36:03 ivan Exp $
The delete method.
The delete method should possibly take an FS::cust_main object reference instead of a scalar customer number.
Bill and collect options should probably be passed as references instead of a list.
CyberCash v2 forces us to define some variables in package main.
There should probably be a configuration file with a list of allowed credit card types.
CyberCash is the only processor.
No multiple currency support (probably a larger project than just this module).
the FS::Record manpage, the FS::cust_pkg manpage, the FS::cust_bill manpage, the FS::cust_credit manpage the FS::cust_pay_batch manpage, the FS::agent manpage, the FS::part_referral manpage, the FS::cust_main_county manpage, the FS::cust_main_invoice manpage, the FS::UID manpage, schema.html from the base documentation.