+++ /dev/null
-<HTML>
-<HEAD>
-<TITLE>FS::cust_main - Object methods for cust_main records</TITLE>
-<LINK REV="made" HREF="mailto:perl@packages.debian.org">
-</HEAD>
-
-<BODY>
-
-<A NAME="__index__"></A>
-<!-- INDEX BEGIN -->
-
-<UL>
-
- <LI><A HREF="#name">NAME</A></LI>
- <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- <LI><A HREF="#methods">METHODS</A></LI>
- <LI><A HREF="#subroutines">SUBROUTINES</A></LI>
- <LI><A HREF="#version">VERSION</A></LI>
- <LI><A HREF="#bugs">BUGS</A></LI>
- <LI><A HREF="#see also">SEE ALSO</A></LI>
-</UL>
-<!-- INDEX END -->
-
-<HR>
-<P>
-<H1><A NAME="name">NAME</A></H1>
-<P>FS::cust_main - Object methods for cust_main records</P>
-<P>
-<HR>
-<H1><A NAME="synopsis">SYNOPSIS</A></H1>
-<PRE>
- use FS::cust_main;</PRE>
-<PRE>
- $record = new FS::cust_main \%hash;
- $record = new FS::cust_main { 'column' => 'value' };</PRE>
-<PRE>
- $error = $record->insert;</PRE>
-<PRE>
- $error = $new_record->replace($old_record);</PRE>
-<PRE>
- $error = $record->delete;</PRE>
-<PRE>
- $error = $record->check;</PRE>
-<PRE>
- @cust_pkg = $record->all_pkgs;</PRE>
-<PRE>
- @cust_pkg = $record->ncancelled_pkgs;</PRE>
-<PRE>
- @cust_pkg = $record->suspended_pkgs;</PRE>
-<PRE>
- $error = $record->bill;
- $error = $record->bill %options;
- $error = $record->bill 'time' => $time;</PRE>
-<PRE>
- $error = $record->collect;
- $error = $record->collect %options;
- $error = $record->collect 'invoice_time' => $time,
- 'batch_card' => 'yes',
- 'report_badcard' => 'yes',
- ;</PRE>
-<P>
-<HR>
-<H1><A NAME="description">DESCRIPTION</A></H1>
-<P>An FS::cust_main object represents a customer. FS::cust_main inherits from
-FS::Record. The following fields are currently supported:</P>
-<DL>
-<DT><STRONG><A NAME="item_key">custnum - primary key (assigned automatically for new customers)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_agent">agentnum - agent (see <A HREF=".././FS/agent.html">the FS::agent manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_referral">refnum - referral (see <A HREF=".././FS/part_referral.html">the FS::part_referral manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_first_%2D_name">first - name</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_last_%2D_name">last - name</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_number">ss - social security number (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_company_%2D_%28optional%29">company - (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_address1">address1</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_address2_%2D_%28optional%29">address2 - (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_city">city</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_county_%2D_%28optional%2C_see_FS%3A%3Acust_main_co">county - (optional, see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_state_%2D_%28see_FS%3A%3Acust_main_county%29">state - (see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_zip">zip</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_country_%2D_%28see_FS%3A%3Acust_main_county%29">country - (see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_phone">daytime - phone (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG>night - phone (optional)</STRONG><BR>
-<DD>
-<DT><STRONG>fax - phone (optional)</STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_first_%2D_name">ship_first - name</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_last_%2D_name">ship_last - name</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_company_%2D_%28optional%29">ship_company - (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_address1">ship_address1</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_address2_%2D_%28optional%29">ship_address2 - (optional)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_city">ship_city</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_county_%2D_%28optional%2C_see_FS%3A%3Acust_ma">ship_county - (optional, see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_state_%2D_%28see_FS%3A%3Acust_main_county%29">ship_state - (see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_zip">ship_zip</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_ship_country_%2D_%28see_FS%3A%3Acust_main_county%2">ship_country - (see <A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG>ship_daytime - phone (optional)</STRONG><BR>
-<DD>
-<DT><STRONG>ship_night - phone (optional)</STRONG><BR>
-<DD>
-<DT><STRONG>ship_fax - phone (optional)</STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_payby_%2D_%60CARD%27_%28credit_cards%29%2C_%60BILL">payby - `CARD' (credit cards), `BILL' (billing), `COMP' (free), or `PREPAY' (special billing type: applies a credit - see <A HREF=".././FS/prepay_credit.html">the FS::prepay_credit manpage</A> and sets billing type to BILL)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_issuer">payinfo - card number, P.O., comp issuer (4-8 lowercase alphanumerics; think username) or prepayment identifier (see <A HREF=".././FS/prepay_credit.html">the FS::prepay_credit manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_paydate_%2D_expiration_date%2C_mm%2Fyyyy%2C_m%2Fyy">paydate - expiration date, mm/yyyy, m/yyyy, mm/yy or m/yy</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_payname_%2D_name_on_card_or_billing_name">payname - name on card or billing name</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_tax_%2D_tax_exempt%2C_empty_or_%60Y%27">tax - tax exempt, empty or `Y'</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_taker">otaker - order taker (assigned automatically, see <A HREF=".././FS/UID.html">the FS::UID manpage</A>)</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_comments">comments - comments (optional)</A></STRONG><BR>
-<DD>
-</DL>
-<P>
-<HR>
-<H1><A NAME="methods">METHODS</A></H1>
-<DL>
-<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><BR>
-<DD>
-Creates a new customer. To add the customer to the database, see <A HREF="#insert">insert</A>.
-<P>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 <EM>hash</EM> method.</P>
-<P></P>
-<DT><STRONG><A NAME="item_insert_%5B_CUST_PKG_HASHREF_%5B_%2C_INVOICING_LIST">insert [ CUST_PKG_HASHREF [ , INVOICING_LIST_ARYREF ] ]</A></STRONG><BR>
-<DD>
-Adds this customer to the database. If there is an error, returns the error,
-otherwise returns false.
-<P>CUST_PKG_HASHREF: If you pass a Tie::RefHash data structure to the insert
-method containing FS::cust_pkg and FS::svc_<EM>tablename</EM> objects, all records
-are inserted atomicly, or the transaction is rolled back. Passing an empty
-hash reference is equivalent to not supplying this parameter. There should be
-a better explanation of this, but until then, here's an example:</P>
-<PRE>
- use Tie::RefHash;
- tie %hash, 'Tie::RefHash'; #this part is important
- %hash = (
- $cust_pkg => [ $svc_acct ],
- ...
- );
- $cust_main->insert( \%hash );</PRE>
-<P>INVOICING_LIST_ARYREF: If you pass an arrarref to the insert method, it will
-be set as the invoicing list (see <A HREF="#invoicing_list">invoicing_list</A>). Errors return as
-expected and rollback the entire transaction; it is not necessary to call
-check_invoicing_list first. The invoicing_list is set after the records in the
-CUST_PKG_HASHREF above are inserted, so it is now possible to set an
-invoicing_list destination to the newly-created svc_acct. Here's an example:</P>
-<PRE>
- $cust_main->insert( {}, [ $email, 'POST' ] );</PRE>
-<P></P>
-<DT><STRONG><A NAME="item_delete_NEW_CUSTNUM">delete NEW_CUSTNUM</A></STRONG><BR>
-<DD>
-This deletes the customer. If there is an error, returns the error, otherwise
-returns false.
-<P>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 <A HREF=".././FS/cust_pkg.html#cancel">cancel in the FS::cust_pkg manpage</A>).</P>
-<P>If the customer has any uncancelled packages, you need to pass a new (valid)
-customer number for those packages to be transferred to. Cancelled packages
-will be deleted. Did I mention that this is NOT what you want when a customer
-cancels service and that you really should be looking see <A HREF=".././FS/cust_pkg.html#cancel">cancel in the FS::cust_pkg manpage</A>?</P>
-<P>You can't delete a customer with invoices (see <A HREF=".././FS/cust_bill.html">the FS::cust_bill manpage</A>),
-or credits (see <A HREF=".././FS/cust_credit.html">the FS::cust_credit manpage</A>) or payments (see <A HREF=".././FS/cust_pay.html">the FS::cust_pay manpage</A>).</P>
-<P></P>
-<DT><STRONG><A NAME="item_replace_OLD_RECORD_%5B_INVOICING_LIST_ARYREF_%5D">replace OLD_RECORD [ INVOICING_LIST_ARYREF ]</A></STRONG><BR>
-<DD>
-Replaces the OLD_RECORD with this one in the database. If there is an error,
-returns the error, otherwise returns false.
-<P>INVOICING_LIST_ARYREF: If you pass an arrarref to the insert method, it will
-be set as the invoicing list (see <A HREF="#invoicing_list">invoicing_list</A>). Errors return as
-expected and rollback the entire transaction; it is not necessary to call
-check_invoicing_list first. Here's an example:</P>
-<PRE>
- $new_cust_main->replace( $old_cust_main, [ $email, 'POST' ] );</PRE>
-<P></P>
-<DT><STRONG><A NAME="item_check">check</A></STRONG><BR>
-<DD>
-Checks all fields to make sure this is a valid customer record. If there is
-an error, returns the error, otherwise returns false. Called by the insert
-and repalce methods.
-<P></P>
-<DT><STRONG><A NAME="item_all_pkgs">all_pkgs</A></STRONG><BR>
-<DD>
-Returns all packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer.
-<P></P>
-<DT><STRONG><A NAME="item_ncancelled_pkgs">ncancelled_pkgs</A></STRONG><BR>
-<DD>
-Returns all non-cancelled packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer.
-<P></P>
-<DT><STRONG><A NAME="item_suspended_pkgs">suspended_pkgs</A></STRONG><BR>
-<DD>
-Returns all suspended packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer.
-<P></P>
-<DT><STRONG><A NAME="item_unflagged_suspended_pkgs">unflagged_suspended_pkgs</A></STRONG><BR>
-<DD>
-Returns all unflagged suspended packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this
-customer (thouse packages without the `manual_flag' set).
-<P></P>
-<DT><STRONG><A NAME="item_unsuspended_pkgs">unsuspended_pkgs</A></STRONG><BR>
-<DD>
-Returns all unsuspended (and uncancelled) packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for
-this customer.
-<P></P>
-<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><BR>
-<DD>
-Unsuspends all unflagged suspended packages (see <A HREF="#unflagged_suspended_pkgs">unflagged_suspended_pkgs</A>
-and <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer. Always returns a list: an empty list
-on success or a list of errors.
-<P></P>
-<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><BR>
-<DD>
-Suspends all unsuspended packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer.
-Always returns a list: an empty list on success or a list of errors.
-<P></P>
-<DT><STRONG><A NAME="item_cancel">cancel</A></STRONG><BR>
-<DD>
-Cancels all uncancelled packages (see <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>) for this customer.
-Always returns a list: an empty list on success or a list of errors.
-<P></P>
-<DT><STRONG><A NAME="item_bill">bill OPTIONS</A></STRONG><BR>
-<DD>
-Generates invoices (see <A HREF=".././FS/cust_bill.html">the FS::cust_bill manpage</A>) for this customer. Usually used in
-conjunction with the collect method.
-<P>Options are passed as name-value pairs.</P>
-<P>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
-<EM>perlfunc/``time''</EM>). Also see <A HREF="../Time/Local.html">the Time::Local manpage</A> and <A HREF="../Date/Parse.html">the Date::Parse manpage</A> for conversion
-functions. For example:</P>
-<PRE>
- use Date::Parse;
- ...
- $cust_main->bill( 'time' => str2time('April 20th, 2001') );</PRE>
-<P>If there is an error, returns the error, otherwise returns false.</P>
-<P></P>
-<DT><STRONG><A NAME="item_collect">collect OPTIONS</A></STRONG><BR>
-<DD>
-(Attempt to) collect money for this customer's outstanding invoices (see
-<A HREF=".././FS/cust_bill.html">the FS::cust_bill manpage</A>). Usually used after the bill method.
-<P>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').</P>
-<P>If there is an error, returns the error, otherwise returns false.</P>
-<P>Options are passed as name-value pairs.</P>
-<P>Currently available options are:</P>
-<P>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 <EM>perlfunc/``time''</EM>). Also see <A HREF="../Time/Local.html">the Time::Local manpage</A> and <A HREF="../Date/Parse.html">the Date::Parse manpage</A>
-for conversion functions.</P>
-<P>batch_card - Set this true to batch cards (see <A HREF=".././FS/cust_pay_batch.html">the FS::cust_pay_batch manpage</A>). By
-default, cards are processed immediately, which will generate an error if
-CyberCash is not installed.</P>
-<P>report_badcard - Set this true if you want bad card transactions to
-return an error. By default, they don't.</P>
-<P>force_print - force printing even if invoice has been printed more than once
-every 30 days, and don't increment the `printed' field.</P>
-<P></P>
-<DT><STRONG><A NAME="item_total_owed">total_owed</A></STRONG><BR>
-<DD>
-Returns the total owed for this customer on all invoices
-(see <A HREF=".././FS/cust_bill.html#owed">owed in the FS::cust_bill manpage</A>).
-<P></P>
-<DT><STRONG><A NAME="item_total_owed_date_TIME">total_owed_date TIME</A></STRONG><BR>
-<DD>
-Returns the total owed for this customer on all invoices with date earlier than
-TIME. TIME is specified as a UNIX timestamp; see <EM>perlfunc/``time''</EM>). Also
-see <A HREF="../Time/Local.html">the Time::Local manpage</A> and <A HREF="../Date/Parse.html">the Date::Parse manpage</A> for conversion functions.
-<P></P>
-<DT><STRONG><A NAME="item_apply_credits">apply_credits</A></STRONG><BR>
-<DD>
-Applies (see <A HREF=".././FS/cust_credit_bill.html">the FS::cust_credit_bill manpage</A>) unapplied credits (see <A HREF=".././FS/cust_credit.html">the FS::cust_credit manpage</A>)
-to outstanding invoice balances in chronological order and returns the value
-of any remaining unapplied credits available for refund
-(see <A HREF=".././FS/cust_refund.html">the FS::cust_refund manpage</A>).
-<P></P>
-<DT><STRONG><A NAME="item_apply_payments">apply_payments</A></STRONG><BR>
-<DD>
-Applies (see <A HREF=".././FS/cust_bill_pay.html">the FS::cust_bill_pay manpage</A>) unapplied payments (see <A HREF=".././FS/cust_pay.html">the FS::cust_pay manpage</A>)
-to outstanding invoice balances in chronological order.
-<PRE>
- #and returns the value of any remaining unapplied payments.</PRE>
-<P></P>
-<DT><STRONG><A NAME="item_total_credited">total_credited</A></STRONG><BR>
-<DD>
-Returns the total outstanding credit (see <A HREF=".././FS/cust_credit.html">the FS::cust_credit manpage</A>) for this
-customer. See <A HREF=".././FS/cust_credit.html#credited">credited in the FS::cust_credit manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_total_unapplied_payments">total_unapplied_payments</A></STRONG><BR>
-<DD>
-Returns the total unapplied payments (see <A HREF=".././FS/cust_pay.html">the FS::cust_pay manpage</A>) for this customer.
-See <A HREF=".././FS/cust_pay.html#unapplied">unapplied in the FS::cust_pay manpage</A>.
-<P></P>
-<DT><STRONG><A NAME="item_balance">balance</A></STRONG><BR>
-<DD>
-Returns the balance for this customer (total_owed minus total_credited
-minus total_unapplied_payments).
-<P></P>
-<DT><STRONG><A NAME="item_balance_date_TIME">balance_date TIME</A></STRONG><BR>
-<DD>
-Returns the balance for this customer, only considering invoices with date
-earlier than TIME (total_owed_date minus total_credited minus
-total_unapplied_payments). TIME is specified as a UNIX timestamp; see
-<EM>perlfunc/``time''</EM>). Also see <A HREF="../Time/Local.html">the Time::Local manpage</A> and <A HREF="../Date/Parse.html">the Date::Parse manpage</A> for conversion
-functions.
-<P></P>
-<DT><STRONG><A NAME="item_invoicing_list_%5B_ARRAYREF_%5D">invoicing_list [ ARRAYREF ]</A></STRONG><BR>
-<DD>
-If an arguement is given, sets these email addresses as invoice recipients
-(see <A HREF=".././FS/cust_main_invoice.html">the FS::cust_main_invoice manpage</A>). Errors are not fatal and are not reported
-(except as warnings), so use check_invoicing_list first.
-<P>Returns a list of email addresses (with svcnum entries expanded).</P>
-<P>Note: You can clear the invoicing list by passing an empty ARRAYREF. You can
-check it without disturbing anything by passing nothing.</P>
-<P>This interface may change in the future.</P>
-<P></P>
-<DT><STRONG><A NAME="item_check_invoicing_list_ARRAYREF">check_invoicing_list ARRAYREF</A></STRONG><BR>
-<DD>
-Checks these arguements as valid input for the invoicing_list method. If there
-is an error, returns the error, otherwise returns false.
-<P></P>
-<DT><STRONG><A NAME="item_default_invoicing_list">default_invoicing_list</A></STRONG><BR>
-<DD>
-Sets the invoicing list to all accounts associated with this customer.
-<P></P>
-<DT><STRONG><A NAME="item_invoicing_list_addpost">invoicing_list_addpost</A></STRONG><BR>
-<DD>
-Adds postal invoicing to this customer. If this customer is already configured
-to receive postal invoices, does nothing.
-<P></P>
-<DT><STRONG><A NAME="item_referral_cust_main_%5B_DEPTH_%5B_EXCLUDE_HASHREF_%">referral_cust_main [ DEPTH [ EXCLUDE_HASHREF ] ]</A></STRONG><BR>
-<DD>
-Returns an array of customers referred by this customer (referral_custnum set
-to this custnum). If DEPTH is given, recurses up to the given depth, returning
-customers referred by customers referred by this customer and so on, inclusive.
-The default behavior is DEPTH 1 (no recursion).
-<P></P>
-<DT><STRONG><A NAME="item_referral_cust_pkg_%5B_DEPTH_%5D">referral_cust_pkg [ DEPTH ]</A></STRONG><BR>
-<DD>
-Like referral_cust_main, except returns a flat list of all unsuspended packages
-for each customer. The number of items in this list may be useful for
-comission calculations (perhaps after a grep).
-<P></P>
-<DT><STRONG><A NAME="item_credit">credit AMOUNT, REASON</A></STRONG><BR>
-<DD>
-Applies a credit to this customer. If there is an error, returns the error,
-otherwise returns false.
-<P></P>
-<DT><STRONG><A NAME="item_charge">charge AMOUNT PKG COMMENT</A></STRONG><BR>
-<DD>
-Creates a one-time charge for this customer. If there is an error, returns
-the error, otherwise returns false.
-<P></P></DL>
-<P>
-<HR>
-<H1><A NAME="subroutines">SUBROUTINES</A></H1>
-<DL>
-<DT><STRONG><A NAME="item_check_and_rebuild_fuzzyfiles">check_and_rebuild_fuzzyfiles</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_rebuild_fuzzyfiles">rebuild_fuzzyfiles</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_all_last">all_last</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_all_company">all_company</A></STRONG><BR>
-<DD>
-<DT><STRONG><A NAME="item_append_fuzzyfiles_LASTNAME_COMPANY">append_fuzzyfiles LASTNAME COMPANY</A></STRONG><BR>
-<DD>
-</DL>
-<P>
-<HR>
-<H1><A NAME="version">VERSION</A></H1>
-<P>$Id: cust_main.html,v 1.3 2002-01-29 17:42:46 ivan Exp $</P>
-<P>
-<HR>
-<H1><A NAME="bugs">BUGS</A></H1>
-<P>The delete method.</P>
-<P>The delete method should possibly take an FS::cust_main object reference
-instead of a scalar customer number.</P>
-<P>Bill and collect options should probably be passed as references instead of a
-list.</P>
-<P>CyberCash v2 forces us to define some variables in package main.</P>
-<P>There should probably be a configuration file with a list of allowed credit
-card types.</P>
-<P>No multiple currency support (probably a larger project than just this module).</P>
-<P>
-<HR>
-<H1><A NAME="see also">SEE ALSO</A></H1>
-<P><A HREF=".././FS/Record.html">the FS::Record manpage</A>, <A HREF=".././FS/cust_pkg.html">the FS::cust_pkg manpage</A>, <A HREF=".././FS/cust_bill.html">the FS::cust_bill manpage</A>, <A HREF=".././FS/cust_credit.html">the FS::cust_credit manpage</A>
-<A HREF=".././FS/cust_pay_batch.html">the FS::cust_pay_batch manpage</A>, <A HREF=".././FS/agent.html">the FS::agent manpage</A>, <A HREF=".././FS/part_referral.html">the FS::part_referral manpage</A>,
-<A HREF=".././FS/cust_main_county.html">the FS::cust_main_county manpage</A>, <A HREF=".././FS/cust_main_invoice.html">the FS::cust_main_invoice manpage</A>,
-<A HREF=".././FS/UID.html">the FS::UID manpage</A>, schema.html from the base documentation.</P>
-
-</BODY>
-
-</HTML>