documentation and webdemo updates
[freeside.git] / htdocs / docs / man / FS / cust_main.html
index 384e3de..c5df1da 100644 (file)
 <HTML>
 <HEAD>
 <TITLE>FS::cust_main - Object methods for cust_main records</TITLE>
-<LINK REV="made" HREF="mailto:none">
+<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><A HREF="#SYNOPSIS">SYNOPSIS</A>
-       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
-       <LI><A HREF="#METHODS">METHODS</A>
-       <LI><A HREF="#VERSION">VERSION</A>
-       <LI><A HREF="#BUGS">BUGS</A>
-       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+       <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="#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
-
+<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>
-<P>
-<PRE>  use FS::cust_main;
-</PRE>
-<P>
-<PRE>  $record = new FS::cust_main \%hash;
-  $record = new FS::cust_main { 'column' =&gt; 'value' };
-</PRE>
-<P>
-<PRE>  $error = $record-&gt;insert;
-</PRE>
-<P>
-<PRE>  $error = $new_record-&gt;replace($old_record);
-</PRE>
-<P>
-<PRE>  $error = $record-&gt;delete;
-</PRE>
-<P>
-<PRE>  $error = $record-&gt;check;
-</PRE>
-<P>
-<PRE>  @cust_pkg = $record-&gt;all_pkgs;
-</PRE>
-<P>
-<PRE>  @cust_pkg = $record-&gt;ncancelled_pkgs;
-</PRE>
-<P>
-<PRE>  $error = $record-&gt;bill;
+<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' =&gt; 'value' };</PRE>
+<PRE>
+  $error = $record-&gt;insert;</PRE>
+<PRE>
+  $error = $new_record-&gt;replace($old_record);</PRE>
+<PRE>
+  $error = $record-&gt;delete;</PRE>
+<PRE>
+  $error = $record-&gt;check;</PRE>
+<PRE>
+  @cust_pkg = $record-&gt;all_pkgs;</PRE>
+<PRE>
+  @cust_pkg = $record-&gt;ncancelled_pkgs;</PRE>
+<PRE>
+  $error = $record-&gt;bill;
   $error = $record-&gt;bill %options;
-  $error = $record-&gt;bill 'time' =&gt; $time;
-</PRE>
-<P>
-<PRE>  $error = $record-&gt;collect;
+  $error = $record-&gt;bill 'time' =&gt; $time;</PRE>
+<PRE>
+  $error = $record-&gt;collect;
   $error = $record-&gt;collect %options;
   $error = $record-&gt;collect 'invoice_time'   =&gt; $time,
                             'batch_card'     =&gt; 'yes',
                             'report_badcard' =&gt; 'yes',
-                          ;
-</PRE>
+                          ;</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:
-
+<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_custnum">custnum - primary key (assigned automatically for new customers)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_agentnum">agentnum - agent (see FS::agent)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_refnum">refnum - referral (see FS::part_referral)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_first">first - name</A></STRONG><DD>
-<DT><STRONG><A NAME="item_last">last - name</A></STRONG><DD>
-<DT><STRONG><A NAME="item_ss">ss - social security number (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_company">company - (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_address1">address1</A></STRONG><DD>
-<DT><STRONG><A NAME="item_address2">address2 - (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_city">city</A></STRONG><DD>
-<DT><STRONG><A NAME="item_county">county - (optional, see FS::cust_main_county)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_state">state - (see FS::cust_main_county)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_zip">zip</A></STRONG><DD>
-<DT><STRONG><A NAME="item_country">country - (see FS::cust_main_county)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_daytime">daytime - phone (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_night">night - phone (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_fax">fax - phone (optional)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_payby">payby - `CARD' (credit cards), `BILL' (billing), `COMP' (free), or `PREPAY' (special billing type: applies a credit - see FS::prepay_credit and sets billing type to BILL)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_payinfo">payinfo - card number, P.O., comp issuer (4-8 lowercase alphanumerics; think username) or prepayment identifier (see FS::prepay_credit)</A></STRONG><DD>
-<DT><STRONG><A NAME="item_paydate">paydate - expiration date, mm/yyyy, m/yyyy, mm/yy or m/yy</A></STRONG><DD>
-<DT><STRONG><A NAME="item_payname">payname - name on card or billing name</A></STRONG><DD>
-<DT><STRONG><A NAME="item_tax">tax - tax exempt, empty or `Y'</A></STRONG><DD>
-<DT><STRONG><A NAME="item_otaker">otaker - order taker (assigned automatically, see FS::UID)</A></STRONG><DD>
+<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_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>
 </DL>
 <P>
 <HR>
-<H1><A NAME="METHODS">METHODS</A></H1>
+<H1><A NAME="methods">METHODS</A></H1>
 <DL>
-<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
-<P>
-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.
-
-<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
-<P>
-Adds this customer to the database. If there is an error, returns the
-error, otherwise returns false.
-
-<DT><STRONG><A NAME="item_delete">delete NEW_CUSTNUM</A></STRONG><DD>
-<P>
-This deletes the customer. If there is an error, returns the error,
+<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">insert</A></STRONG><BR>
+<DD>
+Adds this customer to the database.  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
+<P>There is a special insert mode in which you pass a data structure to the insert
+method containing FS::cust_pkg and FS::svc_<EM>tablename</EM> 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:</P>
+<PRE>
+  use Tie::RefHash;
+  tie %hash, 'Tie::RefHash'; #this part is important
+  %hash = {
+    $cust_pkg =&gt; [ $svc_acct ],
+  };
+  $cust_main-&gt;insert( \%hash );</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</A>).
-
-<P>
-If the customer has any packages, you need to pass a new (valid) customer
-number for those packages to be transferred to.
-
-<P>
-You can't delete a customer with invoices (see <A HREF="../FS/cust_bill.html">FS::cust_bill</A>), or credits (see <A HREF="../FS/cust_credit.html">FS::cust_credit</A>).
-
-<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
-<P>
-Replaces the OLD_RECORD with this one in the database. If there is an
-error, returns the error, otherwise returns false.
-
-<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
-<P>
-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
+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 packages, you need to pass a new (valid) customer
+number for those packages to be transferred to.</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>).</P>
+<P></P>
+<DT><STRONG><A NAME="item_replace_OLD_RECORD">replace OLD_RECORD</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></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.
-
-<DT><STRONG><A NAME="item_all_pkgs">all_pkgs</A></STRONG><DD>
-<P>
-Returns all packages (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>) for this customer.
-
-<DT><STRONG><A NAME="item_ncancelled_pkgs">ncancelled_pkgs</A></STRONG><DD>
-<P>
-Returns all non-cancelled packages (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>) for this customer.
-
-<DT><STRONG><A NAME="item_bill">bill OPTIONS</A></STRONG><DD>
-<P>
-Generates invoices (see <A HREF="../FS/cust_bill.html">FS::cust_bill</A>) for this customer. Usually used in conjunction with the collect method.
-
-<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</EM>). Also see <A HREF="../Time/Local.html">Time::Local</A> and <A HREF="../Date/Parse.html">Date::Parse</A> for conversion functions.
-
-<P>
-If there is an error, returns the error, otherwise returns false.
-
-<DT><STRONG><A NAME="item_collect">collect OPTIONS</A></STRONG><DD>
-<P>
+<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_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>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.</P>
+<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">FS::cust_bill</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>
-If there is an error, returns the error, otherwise returns false.
-
-<P>
-Currently available options are:
-
-<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</EM>). Also see <A HREF="../Time/Local.html">Time::Local</A> and <A HREF="../Date/Parse.html">Date::Parse</A>
-for conversion functions.
-
-<P>
-batch_card - Set this true to batch cards (see <A HREF=".././FS/cust_pay_batch.html#">the cust_pay_batch manpage</A>). By default, cards are processed immediately, which will generate an
-error if CyberCash is not installed.
-
-<P>
-report_badcard - Set this true if you want bad card transactions to return
-an error. By default, they don't.
-
-<DT><STRONG><A NAME="item_total_owed">total_owed</A></STRONG><DD>
-<P>
-Returns the total owed for this customer on all invoices (see <A HREF="../FS/cust_bill.html">FS::cust_bill</A>).
-
-<DT><STRONG><A NAME="item_total_credited">total_credited</A></STRONG><DD>
-<P>
-Returns the total credits (see <A HREF="../FS/cust_credit.html">FS::cust_credit</A>) for this customer.
-
-<DT><STRONG><A NAME="item_balance">balance</A></STRONG><DD>
-<P>
+<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>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 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></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">the FS::cust_bill manpage</A>).
+<P></P>
+<DT><STRONG><A NAME="item_total_credited">total_credited</A></STRONG><BR>
+<DD>
+Returns the total credits (see <A HREF=".././FS/cust_credit.html">the FS::cust_credit manpage</A>) for this customer.
+<P></P>
+<DT><STRONG><A NAME="item_balance">balance</A></STRONG><BR>
+<DD>
 Returns the balance for this customer (total owed minus total credited).
-
-<DT><STRONG><A NAME="item_invoicing_list">invoicing_list [ ARRAYREF ]</A></STRONG><DD>
-<P>
+<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">FS::cust_main_invoice</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>
-Note: You can clear the invoicing list by passing an empty ARRAYREF. You
-can check it without disturbing anything by passing nothing.
-
-<P>
-This interface may change in the future.
-
-<DT><STRONG><A NAME="item_check_invoicing_list">check_invoicing_list ARRAYREF</A></STRONG><DD>
-<P>
-Checks these arguements as valid input for the invoicing_list method. If
-there is an error, returns the error, otherwise returns false.
-
-</DL>
+(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></DL>
 <P>
 <HR>
-<H1><A NAME="VERSION">VERSION</A></H1>
-<P>
-$Id: cust_main.html,v 1.2 2000-03-03 18:22:43 ivan Exp $
-
+<H1><A NAME="version">VERSION</A></H1>
+<P>$Id: cust_main.html,v 1.3 2001-04-23 12:40:31 ivan Exp $</P>
 <P>
 <HR>
-<H1><A NAME="BUGS">BUGS</A></H1>
-<P>
-The delete method.
-
-<P>
-The delete method should possibly take an FS::cust_main object reference
-instead of a scalar customer number.
-
-<P>
-Bill and collect options should probably be passed as references instead of
-a list.
-
-<P>
-CyberCash v2 forces us to define some variables in package main.
-
-<P>
-There should probably be a configuration file with a list of allowed credit
-card types.
-
-<P>
-CyberCash is the only processor.
-
-<P>
-No multiple currency support (probably a larger project than just this
-module).
-
+<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>CyberCash is the only processor.</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">FS::Record</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>, <A HREF="../FS/cust_bill.html">FS::cust_bill</A>, <A HREF="../FS/cust_credit.html">FS::cust_credit</A>
-
-<A HREF="../FS/cust_pay_batch.html">FS::cust_pay_batch</A>, <A HREF="../FS/agent.html">FS::agent</A>, <A HREF="../FS/part_referral.html">FS::part_referral</A>,
-<A HREF="../FS/cust_main_county.html">FS::cust_main_county</A>, <A HREF="../FS/cust_main_invoice.html">FS::cust_main_invoice</A>,
-<A HREF="../FS/UID.html">FS::UID</A>, schema.html from the base documentation.
+<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>