new HTML manpages
authorivan <ivan>
Wed, 4 Aug 1999 12:13:27 +0000 (12:13 +0000)
committerivan <ivan>
Wed, 4 Aug 1999 12:13:27 +0000 (12:13 +0000)
78 files changed:
htdocs/docs/man/Bill.txt [deleted file]
htdocs/docs/man/CGI.txt [deleted file]
htdocs/docs/man/Conf.txt [deleted file]
htdocs/docs/man/FS.html [new file with mode: 0644]
htdocs/docs/man/FS/Bill.html [new file with mode: 0644]
htdocs/docs/man/FS/CGI.html [new file with mode: 0644]
htdocs/docs/man/FS/Conf.html [new file with mode: 0644]
htdocs/docs/man/FS/Invoice.html [new file with mode: 0644]
htdocs/docs/man/FS/Record.html [new file with mode: 0644]
htdocs/docs/man/FS/SSH.html [new file with mode: 0644]
htdocs/docs/man/FS/UI/Base.html [new file with mode: 0644]
htdocs/docs/man/FS/UI/CGI.html [new file with mode: 0644]
htdocs/docs/man/FS/UI/Gtk.html [new file with mode: 0644]
htdocs/docs/man/FS/UI/agent.html [new file with mode: 0644]
htdocs/docs/man/FS/UID.html [new file with mode: 0644]
htdocs/docs/man/FS/agent.html [new file with mode: 0644]
htdocs/docs/man/FS/agent_type.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_bill.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_bill_pkg.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_credit.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_main.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_main_county.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_main_invoice.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_pay.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_pay_batch.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_pkg.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_refund.html [new file with mode: 0644]
htdocs/docs/man/FS/cust_svc.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef_colgroup.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef_column.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef_index.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef_table.html [new file with mode: 0644]
htdocs/docs/man/FS/dbdef_unique.html [new file with mode: 0644]
htdocs/docs/man/FS/part_pkg.html [new file with mode: 0644]
htdocs/docs/man/FS/part_referral.html [new file with mode: 0644]
htdocs/docs/man/FS/part_svc.html [new file with mode: 0644]
htdocs/docs/man/FS/pkg_svc.html [new file with mode: 0644]
htdocs/docs/man/FS/svc_Common.html [new file with mode: 0644]
htdocs/docs/man/FS/svc_acct.html [new file with mode: 0644]
htdocs/docs/man/FS/svc_acct_pop.html [new file with mode: 0644]
htdocs/docs/man/FS/svc_acct_sm.html [new file with mode: 0644]
htdocs/docs/man/FS/svc_domain.html [new file with mode: 0644]
htdocs/docs/man/FS/type_pkgs.html [new file with mode: 0644]
htdocs/docs/man/Invoice.txt [deleted file]
htdocs/docs/man/Record.txt [deleted file]
htdocs/docs/man/SSH.txt [deleted file]
htdocs/docs/man/UID.txt [deleted file]
htdocs/docs/man/agent.txt [deleted file]
htdocs/docs/man/agent_type.txt [deleted file]
htdocs/docs/man/cust_bill.txt [deleted file]
htdocs/docs/man/cust_bill_pkg.txt [deleted file]
htdocs/docs/man/cust_credit.txt [deleted file]
htdocs/docs/man/cust_main.txt [deleted file]
htdocs/docs/man/cust_main_county.txt [deleted file]
htdocs/docs/man/cust_main_invoice.txt [deleted file]
htdocs/docs/man/cust_pay.txt [deleted file]
htdocs/docs/man/cust_pay_batch.txt [deleted file]
htdocs/docs/man/cust_pkg.txt [deleted file]
htdocs/docs/man/cust_refund.txt [deleted file]
htdocs/docs/man/cust_svc.txt [deleted file]
htdocs/docs/man/dbdef.txt [deleted file]
htdocs/docs/man/dbdef_colgroup.txt [deleted file]
htdocs/docs/man/dbdef_column.txt [deleted file]
htdocs/docs/man/dbdef_index.txt [deleted file]
htdocs/docs/man/dbdef_table.txt [deleted file]
htdocs/docs/man/dbdef_unique.txt [deleted file]
htdocs/docs/man/index.html [deleted file]
htdocs/docs/man/part_pkg.txt [deleted file]
htdocs/docs/man/part_referral.txt [deleted file]
htdocs/docs/man/part_svc.txt [deleted file]
htdocs/docs/man/pkg_svc.txt [deleted file]
htdocs/docs/man/svc_Common.txt [deleted file]
htdocs/docs/man/svc_acct.txt [deleted file]
htdocs/docs/man/svc_acct_pop.txt [deleted file]
htdocs/docs/man/svc_acct_sm.txt [deleted file]
htdocs/docs/man/svc_domain.txt [deleted file]
htdocs/docs/man/type_pkgs.txt [deleted file]

diff --git a/htdocs/docs/man/Bill.txt b/htdocs/docs/man/Bill.txt
deleted file mode 100644 (file)
index 545dd1a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-NAME
-    FS::Bill - Legacy stub
-
-SYNOPSIS
-    The functionality of FS::Bill has been integrated into
-    FS::cust_main.
-
-HISTORY
-    ivan@voicenet.com 97-jul-24 - 25 - 28
-
-    use Safe; evaluate all fees with perl (still on TODO list until
-    I write some examples & test opmask to see if we can read db)
-    %hash=$obj->hash later ivan@sisd.com 98-mar-13
-
-    packages with no next bill date start at $time not time, this
-    should eliminate the last of the problems with billing at a past
-    date also rewrite the invoice priting logic not to print
-    invoices for things that haven't happended yet and update
-    $cust_bill->printed when we print so PAST DUE notices work, and
-    s/date/_date/ ivan@sisd.com 98-jun-4
-
-    more logic for past due stuff - packages with no next bill date
-    start at $cust_pkg->setup || $time ivan@sisd.com 98-jul-13
-
-    moved a few things in collection logic; negative charges should
-    work ivan@sisd.com 98-aug-6
-
-    pod, moved everything to FS::cust_main ivan@sisd.com 98-sep-19
-
diff --git a/htdocs/docs/man/CGI.txt b/htdocs/docs/man/CGI.txt
deleted file mode 100644 (file)
index c8eb4ff..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-NAME
-    FS::CGI - Subroutines for the web interface
-
-SYNOPSIS
-      use FS::CGI qw(header menubar idiot eidiot popurl);
-
-      print header( 'Title', '' );
-      print header( 'Title', menubar('item', 'URL', ... ) );
-
-      idiot "error message"; 
-      eidiot "error message";
-
-      $url = popurl; #returns current url
-      $url = popurl(3); #three levels up
-
-DESCRIPTION
-    Provides a few common subroutines for the web interface.
-
-SUBROUTINES
-    header TITLE, MENUBAR
-        Returns an HTML header.
-
-    menubar ITEM, URL, ...
-        Returns an HTML menubar.
-
-    idiot ERROR
-        This is depriciated. Don't use it.
-
-        Sends headers and an HTML error message.
-
-    eidiot ERROR
-        This is depriciated. Don't use it.
-
-        Sends headers and an HTML error message, then exits.
-
-    popurl LEVEL
-        Returns current URL with LEVEL levels of path removed from
-        the end (default 0).
-
-    table
-        Returns HTML tag for beginning a table.
-
-    itable
-        Returns HTML tag for beginning an (invisible) table.
-
-    ntable
-        This is getting silly.
-
-BUGS
-    Not OO.
-
-    Not complete.
-
-SEE ALSO
-    the CGI manpage, the CGI::Base manpage
-
-HISTORY
-    subroutines for the HTML/CGI GUI, not properly OO. :(
-
-    ivan@sisd.com 98-apr-16 ivan@sisd.com 98-jun-22
-
-    lose the background, eidiot ivan@sisd.com 98-sep-2
-
-    pod ivan@sisd.com 98-sep-12
-
-    $Log: CGI.txt,v $
-    Revision 1.4  1999-04-08 13:39:31  ivan
-    convert from pod for 1.2.0 release
- Revision 1.17 1999/02/07 09:59:43 ivan more
-    mod_perl fixes, and bugfixes Peter Wemm sent via email
-
-    Revision 1.16 1999/01/25 12:26:05 ivan yet more mod_perl stuff
-
-    Revision 1.15 1999/01/18 09:41:48 ivan all $cgi->header calls
-    now include ( '-expires' => 'now' ) for mod_perl (good idea
-    anyway)
-
-    Revision 1.14 1999/01/18 09:22:37 ivan changes to track email
-    addresses for email invoicing
-
-    Revision 1.12 1998/12/23 02:23:16 ivan popurl always has
-    trailing slash
-
-    Revision 1.11 1998/11/12 07:43:54 ivan *** empty log message ***
-
-    Revision 1.10 1998/11/12 01:53:47 ivan added table command
-
-    Revision 1.9 1998/11/09 08:51:49 ivan bug squash
-
-    Revision 1.7 1998/11/09 06:10:59 ivan added sub url
-
-    Revision 1.6 1998/11/09 05:44:20 ivan *** empty log message ***
-
-    Revision 1.4 1998/11/09 04:55:42 ivan support depriciated
-    CGI::Base as well as CGI.pm (for now)
-
-    Revision 1.3 1998/11/08 10:50:19 ivan s/CGI::Base/CGI/; etc.
-
diff --git a/htdocs/docs/man/Conf.txt b/htdocs/docs/man/Conf.txt
deleted file mode 100644 (file)
index 01b7cf5..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-NAME
-    FS::Conf - Read access to Freeside configuration values
-
-SYNOPSIS
-      use FS::Conf;
-
-      $conf = new FS::Conf "/config/directory";
-
-      $FS::Conf::default_dir = "/config/directory";
-      $conf = new FS::Conf;
-
-      $dir = $conf->dir;
-
-      $value = $conf->config('key');
-      @list  = $conf->config('key');
-      $bool  = $conf->exists('key');
-
-DESCRIPTION
-    Read access to Freeside configuration values. Keys currently map
-    to filenames, but this may change in the future.
-
-METHODS
-    new [ DIRECTORY ]
-        Create a new configuration object. A directory arguement is
-        required if $FS::Conf::default_dir has not been set.
-
-    dir Returns the directory.
-
-    config
-        Returns the configuration value or values (depending on
-        context) for key.
-
-    exists
-        Returns true if the specified key exists, even if the
-        corresponding value is undefined.
-
-BUGS
-    Write access (with locking) should be implemented.
-
-SEE ALSO
-    config.html from the base documentation contains a list of
-    configuration files.
-
-HISTORY
-    Ivan Kohler <ivan@sisd.com> 98-sep-6
-
-    sub exists forgot to fetch $dir ivan@sisd.com 98-sep-27
-
-    $Log: Conf.txt,v $
-    Revision 1.5  1999-04-08 13:39:31  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/03/29 01:29:33 ivan die
-    unless the configuration directory exists
-
-    Revision 1.2 1998/11/13 04:08:44 ivan no default default_dir
-    (ironic)
-
diff --git a/htdocs/docs/man/FS.html b/htdocs/docs/man/FS.html
new file mode 100644 (file)
index 0000000..b2f0dd3
--- /dev/null
@@ -0,0 +1,247 @@
+<HTML>
+<HEAD>
+<TITLE>FS - Freeside Perl modules</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <UL>
+
+               <LI><A HREF="#Database_metadata_classes">Database metadata classes</A>
+               <LI><A HREF="#Utility_classes">Utility classes</A>
+               <LI><A HREF="#Database_record_classes">Database record classes</A>
+               <LI><A HREF="#User_Interface_classes_under_de">User Interface classes (under development; not yet usable)</A>
+               <LI><A HREF="#Notes">Notes</A>
+       </UL>
+
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+       <LI><A HREF="#SUPPORT">SUPPORT</A>
+       <LI><A HREF="#AUTHOR">AUTHOR</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS - Freeside Perl modules
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+FS is the temporary prefix for many disparate modules written for the
+Freeside ISP billing software. This includes:
+
+<P>
+<HR>
+<H2><A NAME="Database_metadata_classes">Database metadata classes</A></H2>
+<P>
+<A HREF="./FS/dbdef.html">FS::dbdef</A> - Database class
+
+<P>
+<A HREF="./FS/dbdef_table.html">FS::dbdef_table</A> - Database table class
+
+<P>
+<A HREF="./FS/dbdef_column.html">FS::dbdef_column</A> - Database column class
+
+<P>
+<A HREF="./FS/dbdef_colgroup.html">FS::dbdef_colgroup</A> - Database column group class
+
+<P>
+<A HREF="./FS/dbdef_index.html">FS::dbdef_index</A> - Database index class
+
+<P>
+<A HREF="./FS/dbdef_unique.html">FS::dbdef_unique</A> - Database unique index class
+
+<P>
+<HR>
+<H2><A NAME="Utility_classes">Utility classes</A></H2>
+<P>
+<A HREF="./FS/SSH.html">FS::SSH</A> - Simple wrappers around ssh and scp commands.
+
+<P>
+<A HREF="./FS/Conf.html">FS::Conf</A> - Freeside configuration values
+
+<P>
+<A HREF="./FS/UID.html">FS::UID</A> - User class (not yet OO)
+
+<P>
+<A HREF="./FS/CGI.html">FS::CGI</A> - Non OO-subroutines for the web interface. This is depriciated. Future
+development will be focused on the FS::UI user-interface classes (see
+below).
+
+<P>
+<HR>
+<H2><A NAME="Database_record_classes">Database record classes</A></H2>
+<P>
+<A HREF="./FS/Record.html">FS::Record</A> - Database record base class
+
+<P>
+<A HREF="./FS/svc_acct_pop.html">FS::svc_acct_pop</A> - POP (Point of Presence, not Post Office Protocol) class
+
+<P>
+<A HREF="./FS/part_referral.html">FS::part_referral</A> - Referral class
+
+<P>
+<A HREF="./FS/cust_main_county.html">FS::cust_main_county</A> - Locale (tax rate) class
+
+<P>
+<A HREF="./FS/svc_Common.html">FS::svc_Common</A> - Service base class
+
+<P>
+<A HREF="./FS/svc_acct.html">FS::svc_acct</A> - Account (shell, RADIUS, POP3) class
+
+<P>
+<A HREF="./FS/svc_domain.html">FS::svc_domain</A> - Domain class
+
+<P>
+<A HREF="./FS/svc_acct_sm.html">FS::svc_acct_sm</A> - Vitual mail alias class
+
+<P>
+<A HREF="./FS/part_svc.html">FS::part_svc</A> - Service definition class
+
+<P>
+<A HREF="./FS/part_pkg.html">FS::part_pkg</A> - Package (billing item) definition class
+
+<P>
+<A HREF="./FS/pkg_svc.html">FS::pkg_svc</A> - Class linking package (billing item) definitions (see <A HREF="./FS/part_pkg.html">FS::part_pkg</A>) with service definitions (see <A HREF="./FS/part_svc.html">FS::part_svc</A>)
+
+<P>
+<A HREF="./FS/agent.html">FS::agent</A> - Agent (reseller) class
+
+<P>
+<A HREF="./FS/agent_type.html">FS::agent_type</A> - Agent type class
+
+<P>
+<A HREF="./FS/type_pkgs.html">FS::type_pkgs</A> - Class linking agent types (see
+<A HREF="./FS/agent_type.html">FS::agent_type</A>) with package (billing item) definitions (see <A HREF="./FS/part_pkg.html">FS::part_pkg</A>)
+
+<P>
+<A HREF="./FS/cust_svc.html">FS::cust_svc</A> - Service class
+
+<P>
+<A HREF="./FS/cust_pkg.html">FS::cust_pkg</A> - Package (billing item) class
+
+<P>
+<A HREF="./FS/cust_main.html">FS::cust_main</A> - Customer class
+
+<P>
+<A HREF="./FS/cust_main_invoice.html">FS::cust_main_invoice</A> - Invoice destination class
+
+<P>
+<A HREF="./FS/cust_bill.html">FS::cust_bill</A> - Invoice class
+
+<P>
+<A HREF="./FS/cust_bill_pkg.html">FS::cust_bill_pkg</A> - Invoice line item class
+
+<P>
+<A HREF="./FS/cust_pay.html">FS::cust_pay</A> - Payment class
+
+<P>
+<A HREF="./FS/cust_credit.html">FS::cust_credit</A> - Credit class
+
+<P>
+<A HREF="./FS/cust_refund.html">FS::cust_refund</A> - Refund class
+
+<P>
+<A HREF="./FS/cust_pay_batch.html">FS::cust_pay_batch</A> - Credit card transaction queue class
+
+<P>
+<HR>
+<H2><A NAME="User_Interface_classes_under_de">User Interface classes (under development; not yet usable)</A></H2>
+<P>
+<A HREF="./FS/UI/Base.html">FS::UI::Base</A> - User-interface base class
+
+<P>
+<A HREF="./FS/UI/Gtk.html">FS::UI::Gtk</A> - Gtk user-interface class
+
+<P>
+<A HREF="./FS/UI/CGI.html">FS::UI::CGI</A> - CGI (HTML) user-interface class
+
+<P>
+<A HREF="./FS/UI/agent.html">FS::UI::agent</A> - agent table user-interface class
+
+<P>
+<HR>
+<H2><A NAME="Notes">Notes</A></H2>
+<P>
+To quote <CODE>perl(1),</CODE> ``If you're intending to read these straight
+through for the first time, the suggested order will tend to reduce the
+number of forward references.''
+
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+Freeside is a billing and administration package for Internet Service
+Providers.
+
+<P>
+The Freeside home page is at &lt;http://www.sisd.com/freeside&gt;.
+
+<P>
+The main documentation is in htdocs/docs.
+
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: FS.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="SUPPORT">SUPPORT</A></H1>
+<P>
+A mailing list for users and developers is available. Send a blank message
+to &lt;<A
+HREF="mailto:ivan-freeside-subscribe@sisd.com">ivan-freeside-subscribe@sisd.com</A>&gt;
+to subscribe.
+
+<P>
+Commercial support is available; see
+&lt;http://www.sisd.com/freeside/commercial.html&gt;.
+
+<P>
+<HR>
+<H1><A NAME="AUTHOR">AUTHOR</A></H1>
+<P>
+Primarily Ivan Kohler &lt;<A
+HREF="mailto:ivan@sisd.com">ivan@sisd.com</A>&gt;, with help from many kind
+folks.
+
+<P>
+See the CREDITS file in the Freeside distribution for a (hopefully)
+complete list and the individal files for details.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<CODE>perl(1),</CODE> main Freeside documentation in htdocs/docs/
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The version number of the FS Perl extension differs from the version of the
+Freeside distribution, which are both different from the CVS version tag
+for each file, which appears under the VERSION heading.
+
+<P>
+Those modules which would be useful separately should be pulled out,
+renamed appropriately and uploaded to CPAN.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/Bill.html b/htdocs/docs/man/FS/Bill.html
new file mode 100644 (file)
index 0000000..e5832f8
--- /dev/null
@@ -0,0 +1,32 @@
+<HTML>
+<HEAD>
+<TITLE>FS::Bill - Legacy stub</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::Bill - Legacy stub
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+The functionality of FS::Bill has been integrated into FS::cust_main.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/CGI.html b/htdocs/docs/man/FS/CGI.html
new file mode 100644 (file)
index 0000000..e1a42ec
--- /dev/null
@@ -0,0 +1,115 @@
+<HTML>
+<HEAD>
+<TITLE>FS::CGI - Subroutines for the web interface</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#SUBROUTINES">SUBROUTINES</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::CGI - Subroutines for the web interface
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::CGI qw(header menubar idiot eidiot popurl);
+</PRE>
+<P>
+<PRE>  print header( 'Title', '' );
+  print header( 'Title', menubar('item', 'URL', ... ) );
+</PRE>
+<P>
+<PRE>  idiot &quot;error message&quot;; 
+  eidiot &quot;error message&quot;;
+</PRE>
+<P>
+<PRE>  $url = popurl; #returns current url
+  $url = popurl(3); #three levels up
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+Provides a few common subroutines for the web interface.
+
+<P>
+<HR>
+<H1><A NAME="SUBROUTINES">SUBROUTINES</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_header">header TITLE, MENUBAR</A></STRONG><DD>
+<P>
+Returns an HTML header.
+
+<DT><STRONG><A NAME="item_menubar">menubar ITEM, URL, ...</A></STRONG><DD>
+<P>
+Returns an HTML menubar.
+
+<DT><STRONG><A NAME="item_idiot">idiot ERROR</A></STRONG><DD>
+<P>
+This is depriciated. Don't use it.
+
+<P>
+Sends headers and an HTML error message.
+
+<DT><STRONG><A NAME="item_eidiot">eidiot ERROR</A></STRONG><DD>
+<P>
+This is depriciated. Don't use it.
+
+<P>
+Sends headers and an HTML error message, then exits.
+
+<DT><STRONG><A NAME="item_popurl">popurl LEVEL</A></STRONG><DD>
+<P>
+Returns current URL with LEVEL levels of path removed from the end (default
+0).
+
+<DT><STRONG><A NAME="item_table">table</A></STRONG><DD>
+<P>
+Returns HTML tag for beginning a table.
+
+<DT><STRONG><A NAME="item_itable">itable</A></STRONG><DD>
+<P>
+Returns HTML tag for beginning an (invisible) table.
+
+<DT><STRONG><A NAME="item_ntable">ntable</A></STRONG><DD>
+<P>
+This is getting silly.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Not OO.
+
+<P>
+Not complete.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF=".././FS/CGI.html#">the CGI manpage</A>, <A HREF="../CGI/Base.html">CGI::Base</A>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/Conf.html b/htdocs/docs/man/FS/Conf.html
new file mode 100644 (file)
index 0000000..e4555c3
--- /dev/null
@@ -0,0 +1,94 @@
+<HTML>
+<HEAD>
+<TITLE>FS::Conf - Read access to Freeside configuration values</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::Conf - Read access to Freeside configuration values
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::Conf;
+</PRE>
+<P>
+<PRE>  $conf = new FS::Conf &quot;/config/directory&quot;;
+</PRE>
+<P>
+<PRE>  $FS::Conf::default_dir = &quot;/config/directory&quot;;
+  $conf = new FS::Conf;
+</PRE>
+<P>
+<PRE>  $dir = $conf-&gt;dir;
+</PRE>
+<P>
+<PRE>  $value = $conf-&gt;config('key');
+  @list  = $conf-&gt;config('key');
+  $bool  = $conf-&gt;exists('key');
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+Read access to Freeside configuration values. Keys currently map to
+filenames, but this may change in the future.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new [ DIRECTORY ]</A></STRONG><DD>
+<P>
+Create a new configuration object. A directory arguement is required if
+$FS::Conf::default_dir has not been set.
+
+<DT><STRONG><A NAME="item_dir">dir</A></STRONG><DD>
+<P>
+Returns the directory.
+
+<DT><STRONG><A NAME="item_config">config</A></STRONG><DD>
+<P>
+Returns the configuration value or values (depending on context) for key.
+
+<DT><STRONG><A NAME="item_exists">exists</A></STRONG><DD>
+<P>
+Returns true if the specified key exists, even if the corresponding value
+is undefined.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Write access (with locking) should be implemented.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+config.html from the base documentation contains a list of configuration
+files.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/Invoice.html b/htdocs/docs/man/FS/Invoice.html
new file mode 100644 (file)
index 0000000..283e89a
--- /dev/null
@@ -0,0 +1,32 @@
+<HTML>
+<HEAD>
+<TITLE>FS::Invoice - Legacy stub</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::Invoice - Legacy stub
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+The functionality of FS::Invoice has been integrated in FS::cust_bill.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/Record.html b/htdocs/docs/man/FS/Record.html
new file mode 100644 (file)
index 0000000..da1fc52
--- /dev/null
@@ -0,0 +1,380 @@
+<HTML>
+<HEAD>
+<TITLE>FS::Record - Database record objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#CONSTRUCTORS">CONSTRUCTORS</A>
+       <LI><A HREF="#METHODS">METHODS</A>
+       <LI><A HREF="#SUBROUTINES">SUBROUTINES</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::Record - Database record objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>    use FS::Record;
+    use FS::Record qw(dbh fields qsearch qsearchs dbdef);
+</PRE>
+<P>
+<PRE>    $record = new FS::Record 'table', \%hash;
+    $record = new FS::Record 'table', { 'column' =&gt; 'value', ... };
+</PRE>
+<P>
+<PRE>    $record  = qsearchs FS::Record 'table', \%hash;
+    $record  = qsearchs FS::Record 'table', { 'column' =&gt; 'value', ... };
+    @records = qsearch  FS::Record 'table', \%hash; 
+    @records = qsearch  FS::Record 'table', { 'column' =&gt; 'value', ... };
+</PRE>
+<P>
+<PRE>    $table = $record-&gt;table;
+    $dbdef_table = $record-&gt;dbdef_table;
+</PRE>
+<P>
+<PRE>    $value = $record-&gt;get('column');
+    $value = $record-&gt;getfield('column');
+    $value = $record-&gt;column;
+</PRE>
+<P>
+<PRE>    $record-&gt;set( 'column' =&gt; 'value' );
+    $record-&gt;setfield( 'column' =&gt; 'value' );
+    $record-&gt;column('value');
+</PRE>
+<P>
+<PRE>    %hash = $record-&gt;hash;
+</PRE>
+<P>
+<PRE>    $hashref = $record-&gt;hashref;
+</PRE>
+<P>
+<PRE>    $error = $record-&gt;insert;
+    #$error = $record-&gt;add; #depriciated
+</PRE>
+<P>
+<PRE>    $error = $record-&gt;delete;
+    #$error = $record-&gt;del; #depriciated
+</PRE>
+<P>
+<PRE>    $error = $new_record-&gt;replace($old_record);
+    #$error = $new_record-&gt;rep($old_record); #depriciated
+</PRE>
+<P>
+<PRE>    $value = $record-&gt;unique('column');
+</PRE>
+<P>
+<PRE>    $value = $record-&gt;ut_float('column');
+    $value = $record-&gt;ut_number('column');
+    $value = $record-&gt;ut_numbern('column');
+    $value = $record-&gt;ut_money('column');
+    $value = $record-&gt;ut_text('column');
+    $value = $record-&gt;ut_textn('column');
+    $value = $record-&gt;ut_alpha('column');
+    $value = $record-&gt;ut_alphan('column');
+    $value = $record-&gt;ut_phonen('column');
+    $value = $record-&gt;ut_anythingn('column');
+</PRE>
+<P>
+<PRE>    $dbdef = reload_dbdef;
+    $dbdef = reload_dbdef &quot;/non/standard/filename&quot;;
+    $dbdef = dbdef;
+</PRE>
+<P>
+<PRE>    $quoted_value = _quote($value,'table','field');
+</PRE>
+<P>
+<PRE>    #depriciated
+    $fields = hfields('table');
+    if ( $fields-&gt;{Field} ) { # etc.
+</PRE>
+<P>
+<PRE>    @fields = fields 'table'; #as a subroutine
+    @fields = $record-&gt;fields; #as a method call
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+(Mostly) object-oriented interface to database records. Records are
+currently implemented on top of DBI. FS::Record is intended as a base class
+for table-specific classes to inherit from, i.e. FS::cust_main.
+
+<P>
+<HR>
+<H1><A NAME="CONSTRUCTORS">CONSTRUCTORS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new [ TABLE, ] HASHREF</A></STRONG><DD>
+<P>
+Creates a new record. It doesn't store it in the database, though. See
+<A HREF="#insert">insert</A> for that.
+
+<P>
+Note that the object stores this 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>
+TABLE can only be omitted when a dervived class overrides the table method.
+
+<DT><STRONG><A NAME="item_qsearch">qsearch TABLE, HASHREF</A></STRONG><DD>
+<P>
+Searches the database for all records matching (at least) the key/value
+pairs in HASHREF. Returns all the records found as `FS::TABLE' objects if
+that module is loaded (i.e. via `use FS::cust_main;'), otherwise returns
+FS::Record objects.
+
+<DT><STRONG><A NAME="item_qsearchs">qsearchs TABLE, HASHREF</A></STRONG><DD>
+<P>
+Same as qsearch, except that if more than one record matches, it <STRONG>carp</STRONG>s but returns the first. If this happens, you either made a logic error in
+asking for a single item, or your data is corrupted.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_table">table</A></STRONG><DD>
+<P>
+Returns the table name.
+
+<DT><STRONG><A NAME="item_dbdef_table">dbdef_table</A></STRONG><DD>
+<P>
+Returns the FS::dbdef_table object for the table.
+
+<DT><STRONG><A NAME="item_get">get, getfield COLUMN</A></STRONG><DD>
+<P>
+Returns the value of the column/field/key COLUMN.
+
+<DT><STRONG><A NAME="item_set">set, setfield COLUMN, VALUE</A></STRONG><DD>
+<P>
+Sets the value of the column/field/key COLUMN to VALUE. Returns VALUE.
+
+<DT><STRONG><A NAME="item_AUTLOADED">AUTLOADED METHODS</A></STRONG><DD>
+<P>
+$record-&gt;column is a synonym for $record-&gt;get('column');
+
+<P>
+$record-&gt;column('value') is a synonym for
+$record-&gt;set('column','value');
+
+<DT><STRONG><A NAME="item_hash">hash</A></STRONG><DD>
+<P>
+Returns a list of the column/value pairs, usually for assigning to a new
+hash.
+
+<P>
+To make a distinct duplicate of an FS::Record object, you can do:
+
+<P>
+<PRE>    $new = new FS::Record ( $old-&gt;table, { $old-&gt;hash } );
+</PRE>
+<DT><STRONG><A NAME="item_hashref">hashref</A></STRONG><DD>
+<P>
+Returns a reference to the column/value hash.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Inserts this record to the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_add">add</A></STRONG><DD>
+<P>
+Depriciated (use insert instead).
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Delete this record from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_del">del</A></STRONG><DD>
+<P>
+Depriciated (use delete instead).
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replace 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_rep">rep</A></STRONG><DD>
+<P>
+Depriciated (use replace instead).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Not yet implemented, croaks. Derived classes should provide a check method.
+
+<DT><STRONG><A NAME="item_unique">unique COLUMN</A></STRONG><DD>
+<P>
+Replaces COLUMN in record with a unique number. Called by the <STRONG>add</STRONG> method on primary keys and single-field unique columns (see <A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>). Returns the new value.
+
+<DT><STRONG><A NAME="item_ut_float">ut_float COLUMN</A></STRONG><DD>
+<P>
+Check/untaint floating point numeric data: 1.1, 1, 1.1e10, 1e10. May not be
+null. If there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_number">ut_number COLUMN</A></STRONG><DD>
+<P>
+Check/untaint simple numeric data (whole numbers). May not be null. If
+there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_numbern">ut_numbern COLUMN</A></STRONG><DD>
+<P>
+Check/untaint simple numeric data (whole numbers). May be null. If there is
+an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_money">ut_money COLUMN</A></STRONG><DD>
+<P>
+Check/untaint monetary numbers. May be negative. Set to 0 if null. If there
+is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_text">ut_text COLUMN</A></STRONG><DD>
+<P>
+Check/untaint text. Alphanumerics, spaces, and the following punctuation
+symbols are currently permitted: ! @ # $ % &amp; ( ) - + ; : ' `` , . ? /
+May not be null. If there is an error, returns the error, otherwise returns
+false.
+
+<DT><STRONG><A NAME="item_ut_textn">ut_textn COLUMN</A></STRONG><DD>
+<P>
+Check/untaint text. Alphanumerics, spaces, and the following punctuation
+symbols are currently permitted: ! @ # $ % &amp; ( ) - + ; : ' `` , . ? /
+May be null. If there is an error, returns the error, otherwise returns
+false.
+
+<DT><STRONG><A NAME="item_ut_alpha">ut_alpha COLUMN</A></STRONG><DD>
+<P>
+Check/untaint alphanumeric strings (no spaces). May not be null. If there
+is an error, returns the error, otherwise returns false.
+
+<DT><STRONG>ut_alpha COLUMN</STRONG><DD>
+<P>
+Check/untaint alphanumeric strings (no spaces). May be null. If there is an
+error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_phonen">ut_phonen COLUMN</A></STRONG><DD>
+<P>
+Check/untaint phone numbers. May be null. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_ut_anything">ut_anything COLUMN</A></STRONG><DD>
+<P>
+Untaints arbitrary data. Be careful.
+
+<DT><STRONG><A NAME="item_fields">fields [ TABLE ]</A></STRONG><DD>
+<P>
+This can be used as both a subroutine and a method call. It returns a list
+of the columns in this record's table, or an explicitly specified table.
+(See <A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>).
+
+<H1><A NAME="SUBROUTINES">SUBROUTINES</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_reload_dbdef">reload_dbdef([FILENAME])</A></STRONG><DD>
+<P>
+Load a database definition (see <A HREF="../FS/dbdef.html">FS::dbdef</A>), optionally from a non-default filename. This command is executed at
+startup unless
+<EM>$FS::Record::setup_hack</EM> is true. Returns a FS::dbdef object.
+
+<DT><STRONG><A NAME="item_dbdef">dbdef</A></STRONG><DD>
+<P>
+Returns the current database definition. See <A HREF="../FS/dbdef.html">FS::dbdef</A>.
+
+<DT><STRONG><A NAME="item__quote">_quote VALUE, TABLE, COLUMN</A></STRONG><DD>
+<P>
+This is an internal function used to construct SQL statements. It returns
+VALUE DBI-quoted (see <EM>DBI</EM>) unless VALUE is a number and the column type (see <A HREF="../FS/dbdef_column.html">FS::dbdef_column</A>) does not end in `char' or `binary'.
+
+<DT><STRONG><A NAME="item_hfields">hfields TABLE</A></STRONG><DD>
+<P>
+This is depriciated. Don't use it.
+
+<P>
+It returns a hash-type list with the fields of this record's table set
+true.
+
+</DL>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: Record.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+This module should probably be renamed, since much of the functionality is
+of general use. It is not completely unlike Adapter::DBI (see below).
+
+<P>
+Exported qsearch and qsearchs should be depriciated in favor of method
+calls (against an FS::Record object like the old search and searchs that
+qsearch and qsearchs were on top of.)
+
+<P>
+The whole fields / hfields mess should be removed.
+
+<P>
+The various WHERE clauses should be subroutined.
+
+<P>
+table string should be depriciated in favor of FS::dbdef_table.
+
+<P>
+No doubt we could benefit from a Tied hash. Documenting how exists /
+defined true maps to the database (and WHERE clauses) would also help.
+
+<P>
+The ut_ methods should ask the dbdef for a default length.
+
+<P>
+ut_sqltype (like ut_varchar) should all be defined
+
+<P>
+A fallback check method should be provided whith uses the dbdef.
+
+<P>
+The ut_money method assumes money has two decimal digits.
+
+<P>
+The Pg money kludge in the new method only strips `$'.
+
+<P>
+The ut_phonen method assumes US-style phone numbers.
+
+<P>
+The _quote function should probably use ut_float instead of a regex.
+
+<P>
+All the subroutines probably should be methods, here or elsewhere.
+
+<P>
+Probably should borrow/use some dbdef methods where appropriate (like sub
+fields)
+
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef.html">FS::dbdef</A>, <A HREF="../FS/UID.html">FS::UID</A>, <EM>DBI</EM>
+
+
+
+<P>
+Adapter::DBI from Ch. 11 of Advanced Perl Programming by Sriram Srinivasan.
+
+</DL>
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/SSH.html b/htdocs/docs/man/FS/SSH.html
new file mode 100644 (file)
index 0000000..aa8929b
--- /dev/null
@@ -0,0 +1,104 @@
+<HTML>
+<HEAD>
+<TITLE>FS::SSH - Subroutines to call ssh and scp</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#SUBROUTINES">SUBROUTINES</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::SSH - Subroutines to call ssh and scp
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::SSH qw(ssh scp issh iscp sshopen2 sshopen3);
+</PRE>
+<P>
+<PRE>  ssh($host, $command);
+</PRE>
+<P>
+<PRE>  issh($host, $command);
+</PRE>
+<P>
+<PRE>  scp($source, $destination);
+</PRE>
+<P>
+<PRE>  iscp($source, $destination);
+</PRE>
+<P>
+<PRE>  sshopen2($host, $reader, $writer, $command);
+</PRE>
+<P>
+<PRE>  sshopen3($host, $reader, $writer, $error, $command);
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+<PRE>  Simple wrappers around ssh and scp commands.
+</PRE>
+<P>
+<HR>
+<H1><A NAME="SUBROUTINES">SUBROUTINES</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_ssh">ssh HOST, COMMAND</A></STRONG><DD>
+<P>
+Calls ssh in batch mode.
+
+<DT><STRONG><A NAME="item_issh">issh HOST, COMMAND</A></STRONG><DD>
+<P>
+Prints the ssh command to be executed, waits for the user to confirm, and
+(optionally) executes the command.
+
+<DT><STRONG><A NAME="item_scp">scp SOURCE, DESTINATION</A></STRONG><DD>
+<P>
+Calls scp in batch mode.
+
+<DT><STRONG><A NAME="item_iscp">iscp SOURCE, DESTINATION</A></STRONG><DD>
+<P>
+Prints the scp command to be executed, waits for the user to confirm, and
+(optionally) executes the command.
+
+<DT><STRONG><A NAME="item_sshopen2">sshopen2 HOST, READER, WRITER, COMMAND</A></STRONG><DD>
+<P>
+Connects the supplied filehandles to the ssh process (in batch mode).
+
+<DT><STRONG><A NAME="item_sshopen3">sshopen3 HOST, WRITER, READER, ERROR, COMMAND</A></STRONG><DD>
+<P>
+Connects the supplied filehandles to the ssh process (in batch mode).
+
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Not OO.
+
+<P>
+scp stuff should transparantly use rsync-over-ssh instead.
+
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<EM>ssh</EM>, <EM>scp</EM>, <A HREF="../IPC/Open2.html">IPC::Open2</A>, <A HREF="../IPC/Open3.html">IPC::Open3</A>
+
+
+
+</DL>
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/UI/Base.html b/htdocs/docs/man/FS/UI/Base.html
new file mode 100644 (file)
index 0000000..91a4df6
--- /dev/null
@@ -0,0 +1,117 @@
+<HTML>
+<HEAD>
+<TITLE>FS::UI::Base - Base class for all user-interface objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#HISTORY">HISTORY</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::UI::Base - Base class for all user-interface objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::UI::SomeInterface;
+  use FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $interface = new FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $error = $interface-&gt;browse;
+  $error = $interface-&gt;search;
+  $error = $interface-&gt;view;
+  $error = $interface-&gt;edit;
+  $error = $interface-&gt;process;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::UI::Base object represents a user interface object. FS::UI::Base is
+intended as a base class for table-specfic classes to inherit from, i.e.
+FS::UI::cust_main. The simplest case, which will provide a default UI for
+your new table, is as follows:
+
+<P>
+<PRE>  package FS::UI::table_name;
+  use vars qw ( @ISA );
+  use FS::UI::Base;
+  @ISA = qw( FS::UI::Base );
+  sub db_table { 'table_name'; }
+</PRE>
+<P>
+Currently available interfaces are: FS::UI::Gtk, an X-Windows UI
+implemented using the Gtk+ toolkit FS::UI::CGI, a web interface implemented
+using CGI.pm, etc.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<DT><STRONG><A NAME="item_browse">browse</A></STRONG><DD>
+<DT><STRONG><A NAME="item_title">title</A></STRONG><DD>
+<DT><STRONG><A NAME="item_addwidget">addwidget</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: Base.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+This documentation is incomplete.
+
+<P>
+There should be some sort of per-(freeside)-user preferences and the
+ability for specific FS::UI:: modules to put their own values there as
+well.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../../FS/UI/Gtk.html">FS::UI::Gtk</A>, <A HREF="../../FS/UI/CGI.html">FS::UI::CGI</A>
+
+
+
+<P>
+<HR>
+<H1><A NAME="HISTORY">HISTORY</A></H1>
+<P>
+$Log: Base.html,v $
+Revision 1.1  1999-08-04 12:13:27  ivan
+new HTML manpages
+ Revision 1.1 1999/08/04 09:03:53 ivan initial checkin of
+module files for proper perl installation
+
+<P>
+Revision 1.1 1999/01/20 09:30:36 ivan skeletal cross-UI UI code.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/UI/CGI.html b/htdocs/docs/man/FS/UI/CGI.html
new file mode 100644 (file)
index 0000000..c3efdc7
--- /dev/null
@@ -0,0 +1,115 @@
+<HTML>
+<HEAD>
+<TITLE>FS::UI::CGI - Base class for CGI user-interface objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#HISTORY">HISTORY</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::UI::CGI - Base class for CGI user-interface objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::UI::CGI;
+  use FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $interface = new FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $error = $interface-&gt;browse;
+  $error = $interface-&gt;search;
+  $error = $interface-&gt;view;
+  $error = $interface-&gt;edit;
+  $error = $interface-&gt;process;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::UI::CGI object represents a CGI interface object.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<DT><STRONG><A NAME="item__header">_header</A></STRONG><DD>
+<DT><STRONG><A NAME="item__footer">_footer</A></STRONG><DD>
+<DT><STRONG><A NAME="item_interface">interface</A></STRONG><DD>
+<P>
+Returns the string `CGI'. Useful for the author of a table-specific UI
+class to conditionally specify certain behaviour.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: CGI.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+This documentation is incomplete.
+
+<P>
+In _Tableborder, headers should be links that sort on their fields.
+
+<P>
+_Link uses a constant <CODE>$BASE_URL</CODE>
+
+<P>
+_Link passes the arguments as a manually-constructed GET string instead of
+POSTing, for compatability while the web interface is upgraded. Once this
+is done it should pass arguements properly (i.e. as a POST, 8-bit clean)
+
+<P>
+Still some small bits of widget code same as FS::UI::Gtk.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../../FS/UI/Base.html">FS::UI::Base</A>
+
+
+
+<P>
+<HR>
+<H1><A NAME="HISTORY">HISTORY</A></H1>
+<P>
+$Log: CGI.html,v $
+Revision 1.1  1999-08-04 12:13:27  ivan
+new HTML manpages
+ Revision 1.1 1999/08/04 09:03:53 ivan initial checkin of
+module files for proper perl installation
+
+<P>
+Revision 1.1 1999/01/20 09:30:36 ivan skeletal cross-UI UI code.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/UI/Gtk.html b/htdocs/docs/man/FS/UI/Gtk.html
new file mode 100644 (file)
index 0000000..cb2a864
--- /dev/null
@@ -0,0 +1,112 @@
+<HTML>
+<HEAD>
+<TITLE>FS::UI::Gtk - Base class for Gtk user-interface objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#HISTORY">HISTORY</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::UI::Gtk - Base class for Gtk user-interface objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::UI::Gtk;
+  use FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $interface = new FS::UI::some_table;
+</PRE>
+<P>
+<PRE>  $error = $interface-&gt;browse;
+  $error = $interface-&gt;search;
+  $error = $interface-&gt;view;
+  $error = $interface-&gt;edit;
+  $error = $interface-&gt;process;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::UI::Gtk object represents a Gtk user interface object.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<DT><STRONG><A NAME="item_interface">interface</A></STRONG><DD>
+<P>
+Returns the string `Gtk'. Useful for the author of a table-specific UI
+class to conditionally specify certain behaviour.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: Gtk.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+This documentation is incomplete.
+
+<P>
+_Tableborder is just a _Table now. _Tableborders should scroll (but not the
+headers) and need and need more decoration. (data in white section ala
+gtksql and sliding field widths) headers should be buttons that callback to
+sort on their fields.
+
+<P>
+There should be a persistant, per-(freeside)-user store for window
+positions and sizes and sort fields etc (see <A HREF="../../FS/UI/CGI.html#BUGS">BUGS</A>.
+
+<P>
+Still some small bits of widget code same as FS::UI::CGI.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../../FS/UI/Base.html">FS::UI::Base</A>
+
+
+
+<P>
+<HR>
+<H1><A NAME="HISTORY">HISTORY</A></H1>
+<P>
+$Log: Gtk.html,v $
+Revision 1.1  1999-08-04 12:13:27  ivan
+new HTML manpages
+ Revision 1.1 1999/08/04 09:03:53 ivan initial checkin of
+module files for proper perl installation
+
+<P>
+Revision 1.1 1999/01/20 09:30:36 ivan skeletal cross-UI UI code.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/UI/agent.html b/htdocs/docs/man/FS/UI/agent.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/htdocs/docs/man/FS/UID.html b/htdocs/docs/man/FS/UID.html
new file mode 100644 (file)
index 0000000..3444462
--- /dev/null
@@ -0,0 +1,160 @@
+<HTML>
+<HEAD>
+<TITLE>FS::UID - Subroutines for database login and assorted other stuff</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#SUBROUTINES">SUBROUTINES</A>
+       <LI><A HREF="#CALLBACKS">CALLBACKS</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::UID - Subroutines for database login and assorted other stuff
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::UID qw(adminsuidsetup cgisuidsetup dbh datasrc getotaker
+  checkeuid checkruid swapuid);
+</PRE>
+<P>
+<PRE>  adminsuidsetup $user;
+</PRE>
+<P>
+<PRE>  $cgi = new CGI;
+  $dbh = cgisuidsetup($cgi);
+</PRE>
+<P>
+<PRE>  $dbh = dbh;
+</PRE>
+<P>
+<PRE>  $datasrc = datasrc;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+Provides a hodgepodge of subroutines. 
+
+<P>
+<HR>
+<H1><A NAME="SUBROUTINES">SUBROUTINES</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_adminsuidsetup">adminsuidsetup USER</A></STRONG><DD>
+<P>
+Sets the user to USER (see config.html from the base documentation). Cleans
+the environment. Make sure the script is running as freeside, or setuid
+freeside. Opens a connection to the database. Swaps real and effective
+UIDs. Runs any defined callbacks (see below). Returns the DBI database
+handle (usually you don't need this).
+
+<DT><STRONG><A NAME="item_cgisuidsetup">cgisuidsetup CGI_object</A></STRONG><DD>
+<P>
+Stores the CGI (see <A HREF=".././FS/CGI.html#">the CGI manpage</A>) object for later use. (CGI::Base is depriciated) Runs adminsuidsetup.
+
+<DT><STRONG><A NAME="item_cgi">cgi</A></STRONG><DD>
+<P>
+Returns the CGI (see <A HREF=".././FS/CGI.html#">the CGI manpage</A>) object.
+
+<DT><STRONG><A NAME="item_dbh">dbh</A></STRONG><DD>
+<P>
+Returns the DBI database handle.
+
+<DT><STRONG><A NAME="item_datasrc">datasrc</A></STRONG><DD>
+<P>
+Returns the DBI data source.
+
+<DT><STRONG><A NAME="item_getotaker">getotaker</A></STRONG><DD>
+<P>
+Returns the current Freeside user.
+
+<DT><STRONG><A NAME="item_cgisetotaker">cgisetotaker</A></STRONG><DD>
+<P>
+Sets and returns the CGI REMOTE_USER. <A HREF="#item__cgi">$cgi</A> should
+be defined as a CGI.pm object. Support for CGI::Base and derived classes is
+depriciated.
+
+<DT><STRONG><A NAME="item_checkeuid">checkeuid</A></STRONG><DD>
+<P>
+Returns true if effective UID is that of the freeside user.
+
+<DT><STRONG><A NAME="item_checkruid">checkruid</A></STRONG><DD>
+<P>
+Returns true if the real UID is that of the freeside user.
+
+<DT><STRONG><A NAME="item_swapuid">swapuid</A></STRONG><DD>
+<P>
+Swaps real and effective UIDs.
+
+<DT><STRONG><A NAME="item_getsecrets">getsecrets [ USER ]</A></STRONG><DD>
+<P>
+Sets the user to USER, if supplied. Sets and returns the DBI datasource,
+username and password for this user from the
+`/usr/local/etc/freeside/mapsecrets' file.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="CALLBACKS">CALLBACKS</A></H1>
+<P>
+Warning: this interface is likely to change in future releases.
+
+<P>
+A package can install a callback to be run in adminsuidsetup by putting a
+coderef into the hash %FS::UID::callback :
+
+<P>
+<PRE>    $coderef = sub { warn &quot;Hi, I'm returning your call!&quot; };
+    $FS::UID::callback{'Package::Name'};
+</PRE>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: UID.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Too many package-global variables.
+
+<P>
+Not OO.
+
+<P>
+No capabilities yet. When mod_perl and Authen::DBI are implemented,
+cgisuidsetup will go away as well.
+
+<P>
+Goes through contortions to support non-OO syntax with multiple datasrc's.
+
+<P>
+Callbacks are inelegant.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF=".././FS/CGI.html#">the CGI manpage</A>, <EM>DBI</EM>, config.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/agent.html b/htdocs/docs/man/FS/agent.html
new file mode 100644 (file)
index 0000000..bdbf019
--- /dev/null
@@ -0,0 +1,130 @@
+<HTML>
+<HEAD>
+<TITLE>FS::agent - Object methods for agent records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::agent - Object methods for agent records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::agent;
+</PRE>
+<P>
+<PRE>  $record = new FS::agent \%hash;
+  $record = new FS::agent { '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>  $agent_type = $record-&gt;agent_type;
+</PRE>
+<P>
+<PRE>  $hashref = $record-&gt;pkgpart_hashref;
+  #may purchase $pkgpart if $hashref-&gt;{$pkgpart};
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::agent object represents an agent. Every customer has an agent.
+Agents can be used to track things like resellers or salespeople. FS::agent
+inherits from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_agemtnum">agemtnum - primary key (assigned automatically for new agents)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_agent">agent - Text name of this agent</A></STRONG><DD>
+<DT><STRONG><A NAME="item_typenum">typenum - Agent type.  See FS::agent_type</A></STRONG><DD>
+<DT><STRONG><A NAME="item_prog">prog - For future use.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_freq">freq - For future use.</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new agent. To add the agent to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this agent to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this agent from the database. Only agents with no customers can be
+deleted. If there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 agent. If there is an error,
+returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG><A NAME="item_agent_type">agent_type</A></STRONG><DD>
+<P>
+Returns the FS::agent_type object (see <A HREF="../FS/agent_type.html">FS::agent_type</A>) for this agent.
+
+<DT><STRONG><A NAME="item_pkgpart_hashref">pkgpart_hashref</A></STRONG><DD>
+<P>
+Returns a hash reference. The keys of the hash are pkgparts. The value is
+true iff this agent may purchase the specified package definition. See
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: agent.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/agent_type.html">FS::agent_type</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, <A HREF="../FS/part_pkg.html">FS::part_pkg</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/agent_type.html b/htdocs/docs/man/FS/agent_type.html
new file mode 100644 (file)
index 0000000..25ed652
--- /dev/null
@@ -0,0 +1,138 @@
+<HTML>
+<HEAD>
+<TITLE>FS::agent_type - Object methods for agent_type records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::agent_type - Object methods for agent_type records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::agent_type;
+</PRE>
+<P>
+<PRE>  $record = new FS::agent_type \%hash;
+  $record = new FS::agent_type { '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>  $hashref = $record-&gt;pkgpart_hashref;
+  #may purchase $pkgpart if $hashref-&gt;{$pkgpart};
+</PRE>
+<P>
+<PRE>  @type_pkgs = $record-&gt;type_pkgs;
+</PRE>
+<P>
+<PRE>  @pkgparts = $record-&gt;pkgpart;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::agent_type object represents an agent type. Every agent (see
+<A HREF="../FS/agent.html">FS::agent</A>) has an agent type. Agent types define which packages (see
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>) may be purchased by customers (see <A HREF="../FS/cust_main.html">FS::cust_main</A>), via FS::type_pkgs records (see <A HREF="../FS/type_pkgs.html">FS::type_pkgs</A>). FS::agent_type inherits from FS::Record. The following fields are
+currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_typenum">typenum - primary key (assigned automatically for new agent types)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_atype">atype - Text name of this agent type</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new agent type. To add the agent type to the database, see
+<A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this agent type to the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this agent type from the database. Only agent types with no agents
+can be deleted. If there is an error, returns the error, otherwise returns
+false.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 agent type. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG><A NAME="item_pkgpart_hashref">pkgpart_hashref</A></STRONG><DD>
+<P>
+Returns a hash reference. The keys of the hash are pkgparts. The value is
+true iff this agent may purchase the specified package definition. See
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>.
+
+<DT><STRONG><A NAME="item_type_pkgs">type_pkgs</A></STRONG><DD>
+<P>
+Returns all FS::type_pkgs objects (see <A HREF="../FS/type_pkgs.html">FS::type_pkgs</A>) for this agent type.
+
+<DT><STRONG><A NAME="item_pkgpart">pkgpart</A></STRONG><DD>
+<P>
+Returns the pkgpart of all package definitions (see <A HREF="../FS/part_pkg.html">FS::part_pkg</A>) for this agent type.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: agent_type.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/agent.html">FS::agent</A>, <A HREF="../FS/type_pkgs.html">FS::type_pkgs</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>,
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_bill.html b/htdocs/docs/man/FS/cust_bill.html
new file mode 100644 (file)
index 0000000..c28aa85
--- /dev/null
@@ -0,0 +1,184 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_bill - Object methods for cust_bill records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_bill - Object methods for cust_bill records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_bill;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_bill \%hash;
+  $record = new FS::cust_bill { '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>  ( $total_previous_balance, @previous_cust_bill ) = $record-&gt;previous;
+</PRE>
+<P>
+<PRE>  @cust_bill_pkg_objects = $cust_bill-&gt;cust_bill_pkg;
+</PRE>
+<P>
+<PRE>  ( $total_previous_credits, @previous_cust_credit ) = $record-&gt;cust_credit;
+</PRE>
+<P>
+<PRE>  @cust_pay_objects = $cust_bill-&gt;cust_pay;
+</PRE>
+<P>
+<PRE>  @lines = $cust_bill-&gt;print_text;
+  @lines = $cust_bill-&gt;print_text $time;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_bill object represents an invoice. FS::cust_bill inherits from
+FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_invnum">invnum - primary key (assigned automatically for new invoices)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_custnum">custnum - customer (see FS::cust_main)</A></STRONG><DD>
+<DT><STRONG><A NAME="item__date">_date - specified as a UNIX timestamp; see perlfunc/&quot;time&quot;.  Also see
+Time::Local and Date::Parse for conversion functions.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_charged">charged - amount of this invoice</A></STRONG><DD>
+<DT><STRONG><A NAME="item_owed">owed - amount still outstanding on this invoice, which is charged minus
+all payments (see FS::cust_pay).</A></STRONG><DD>
+<DT><STRONG><A NAME="item_printed">printed - how many times this invoice has been printed automatically
+(see FS::cust_main/&quot;collect&quot;).</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new invoice. To add the invoice to the database, see <A HREF="#insert">insert</A>. Invoices are normally created by calling the bill method of a customer
+object (see <A HREF="../FS/cust_main.html">FS::cust_main</A>).
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this invoice to the database (``Posts'' the invoice). If there is an
+error, returns the error, otherwise returns false.
+
+<P>
+When adding new invoices, owed must be charged (or null, in which case it
+is automatically set to charged).
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented. I don't remove invoices because there would then
+be no record you ever posted this invoice (which is bad, no?)
+
+<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.
+
+<P>
+Only owed and printed may be changed. Owed is normally updated by creating
+and inserting a payment (see <A HREF="../FS/cust_pay.html">FS::cust_pay</A>). Printed is normally updated by calling the collect method of a customer
+object (see <A HREF="../FS/cust_main.html">FS::cust_main</A>).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid invoice. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG><A NAME="item_previous">previous</A></STRONG><DD>
+<P>
+Returns a list consisting of the total previous balance for this customer,
+followed by the previous outstanding invoices (as FS::cust_bill objects
+also).
+
+<DT><STRONG><A NAME="item_cust_bill_pkg">cust_bill_pkg</A></STRONG><DD>
+<P>
+Returns the line items (see <A HREF="../FS/cust_bill_pkg.html">FS::cust_bill_pkg</A>) for this invoice.
+
+<DT><STRONG><A NAME="item_cust_credit">cust_credit</A></STRONG><DD>
+<P>
+Returns a list consisting of the total previous credited (see
+<A HREF="../FS/cust_credit.html">FS::cust_credit</A>) for this customer, followed by the previous outstanding credits
+(FS::cust_credit objects).
+
+<DT><STRONG><A NAME="item_cust_pay">cust_pay</A></STRONG><DD>
+<P>
+Returns all payments (see <A HREF="../FS/cust_pay.html">FS::cust_pay</A>) for this invoice.
+
+<DT><STRONG><A NAME="item_print_text">print_text [TIME];</A></STRONG><DD>
+<P>
+Returns an ASCII invoice, as a list of lines.
+
+<P>
+TIME an optional value used to control the printing of overdue messages.
+The default is now. It isn't the date of the invoice; that's the `_date'
+field. 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.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_bill.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The delete method.
+
+<P>
+print_text formatting (and some logic :/) is in source, but needs to be
+slurped in from a file. Also number of lines ($=).
+
+<P>
+missing print_ps for a nice postscript copy (maybe HylaFAX-cover-page-style
+or something similar so the look can be completely customized?)
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, <A HREF="../FS/cust_pay.html">FS::cust_pay</A>, <A HREF="../FS/cust_bill_pkg.html">FS::cust_bill_pkg</A>,
+<A HREF="../FS/cust_credit.html">FS::cust_credit</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_bill_pkg.html b/htdocs/docs/man/FS/cust_bill_pkg.html
new file mode 100644 (file)
index 0000000..229e88b
--- /dev/null
@@ -0,0 +1,119 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_bill_pkg - Object methods for cust_bill_pkg records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_bill_pkg - Object methods for cust_bill_pkg records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_bill_pkg;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_bill_pkg \%hash;
+  $record = new FS::cust_bill_pkg { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_bill_pkg object represents an invoice line item.
+FS::cust_bill_pkg inherits from FS::Record. The following fields are
+currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_invnum">invnum - invoice (see FS::cust_bill)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_pkgnum">pkgnum - package (see FS::cust_pkg)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_setup">setup - setup fee</A></STRONG><DD>
+<DT><STRONG><A NAME="item_recur">recur - recurring fee</A></STRONG><DD>
+<DT><STRONG><A NAME="item_sdate">sdate - starting date of recurring fee</A></STRONG><DD>
+<DT><STRONG><A NAME="item_edate">edate - ending date of recurring fee</A></STRONG><DD>
+</DL>
+<P>
+sdate and edate are specified as UNIX timestamps; 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>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new line item. To add the line item to the database, see
+<A HREF="#insert">insert</A>. Line items are normally created by calling the bill method of a customer
+object (see <A HREF="../FS/cust_main.html">FS::cust_main</A>).
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this line item to the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented. I don't remove line items because there would then
+be no record the items ever existed (which is bad, no?)
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Currently unimplemented. This would be even more of an accounting nightmare
+than deleteing the items. Just don't do it.
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid line item. If there is an
+error, returns the error, otherwise returns false. Called by the insert
+method.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_bill_pkg.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_bill.html">FS::cust_bill</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_credit.html b/htdocs/docs/man/FS/cust_credit.html
new file mode 100644 (file)
index 0000000..5683fcd
--- /dev/null
@@ -0,0 +1,126 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_credit - Object methods for cust_credit records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_credit - Object methods for cust_credit records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_credit;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_credit \%hash;
+  $record = new FS::cust_credit { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_credit object represents a credit. FS::cust_credit inherits
+from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_crednum">crednum - primary key (assigned automatically for new credits)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_custnum">custnum - customer (see FS::cust_main)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_amount">amount - amount of the credit</A></STRONG><DD>
+<DT><STRONG><A NAME="item_credited">credited - how much of this credit that is still outstanding, which is
+amount minus all refunds (see FS::cust_refund).</A></STRONG><DD>
+<DT><STRONG><A NAME="item__date">_date - specified as a UNIX timestamp; see perlfunc/&quot;time&quot;.  Also see
+Time::Local and Date::Parse for conversion functions.</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_reason">reason - text</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new credit. To add the credit to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this credit to the database (``Posts'' the credit). If there is an
+error, returns the error, otherwise returns false.
+
+<P>
+When adding new invoices, credited must be amount (or null, in which case
+it is automatically set to amount).
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented.
+
+<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.
+
+<P>
+Only credited may be changed. Credited is normally updated by creating and
+inserting a refund (see <A HREF="../FS/cust_refund.html">FS::cust_refund</A>).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid credit. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_credit.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The delete method.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_refund.html">FS::cust_refund</A>, <A HREF="../FS/cust_bill.html">FS::cust_bill</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_main.html b/htdocs/docs/man/FS/cust_main.html
new file mode 100644 (file)
index 0000000..5e0b8ee
--- /dev/null
@@ -0,0 +1,277 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_main - Object methods for cust_main records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_main - Object methods for cust_main records
+
+<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;
+  $error = $record-&gt;bill %options;
+  $error = $record-&gt;bill 'time' =&gt; $time;
+</PRE>
+<P>
+<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>
+<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:
+
+<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), or `COMP' (free)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payinfo">payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)</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>
+</DL>
+<P>
+<HR>
+<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,
+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
+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>
+(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>
+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>
+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>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_main.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<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).
+
+<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.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_main_county.html b/htdocs/docs/man/FS/cust_main_county.html
new file mode 100644 (file)
index 0000000..a3c1f40
--- /dev/null
@@ -0,0 +1,113 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_main_county - Object methods for cust_main_county objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_main_county - Object methods for cust_main_county objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_main_county;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_main_county \%hash;
+  $record = new FS::cust_main_county { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_main_county object represents a tax rate, defined by locale.
+FS::cust_main_county inherits from FS::Record. The following fields are
+currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_taxnum">taxnum - primary key (assigned automatically for new tax rates)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_state">state</A></STRONG><DD>
+<DT><STRONG><A NAME="item_county">county</A></STRONG><DD>
+<DT><STRONG><A NAME="item_country">country</A></STRONG><DD>
+<DT><STRONG><A NAME="item_tax">tax - percentage</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new tax rate. To add the tax rate to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this tax rate to the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this tax rate from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<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 tax rate. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_main_county.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, <A HREF="../FS/cust_bill.html">FS::cust_bill</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_main_invoice.html b/htdocs/docs/man/FS/cust_main_invoice.html
new file mode 100644 (file)
index 0000000..2fc22b3
--- /dev/null
@@ -0,0 +1,128 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_main_invoice - Object methods for cust_main_invoice records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_main_invoice - Object methods for cust_main_invoice records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_main_invoice;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_main_invoice \%hash;
+  $record = new FS::cust_main_invoice { '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>  $email_address = $record-&gt;address;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_main_invoice object represents an invoice destination.
+FS::cust_main_invoice inherits from FS::Record. The following fields are
+currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_destnum">destnum - primary key</A></STRONG><DD>
+<DT><STRONG><A NAME="item_custnum">custnum - customer (see FS::cust_main)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_dest">dest - Invoice destination: If numeric, a &lt;a href=&quot;#svc_acct&quot;&gt;svcnum&lt;/a&gt;, if string, a literal email address, or `POST' to enable mailing (the default if no cust_main_invoice records exist)</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new invoice destination. To add the invoice destination 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 record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Delete this record from the database.
+
+<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 invoice destination. If
+there is an error, returns the error, otherwise returns false. Called by
+the insert and repalce methods.
+
+<DT><STRONG><A NAME="item_checkdest">checkdest</A></STRONG><DD>
+<P>
+Checks the dest field only.
+
+<DT><STRONG><A NAME="item_address">address</A></STRONG><DD>
+<P>
+Returns the literal email address for this record (or `POST').
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_main_invoice.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_pay.html b/htdocs/docs/man/FS/cust_pay.html
new file mode 100644 (file)
index 0000000..026745e
--- /dev/null
@@ -0,0 +1,116 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_pay - Object methods for cust_pay objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_pay - Object methods for cust_pay objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_pay;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_pay \%hash;
+  $record = new FS::cust_pay { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_pay object represents a payment. FS::cust_pay inherits from
+FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_paynum">paynum - primary key (assigned automatically for new payments)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_invnum">invnum - Invoice (see FS::cust_bill)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_paid">paid - Amount of this payment</A></STRONG><DD>
+<DT><STRONG><A NAME="item__date">_date - specified as a UNIX timestamp; see perlfunc/&quot;time&quot;.  Also see
+Time::Local and Date::Parse for conversion functions.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payby">payby - `CARD' (credit cards), `BILL' (billing), or `COMP' (free)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payinfo">payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_paybatch">paybatch - text field for tracking card processing</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new payment. To add the payment to the databse, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this payment to the databse, and updates the invoice (see
+<A HREF="../FS/cust_bill.html">FS::cust_bill</A>).
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented (accounting reasons).
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Currently unimplemented (accounting reasons).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid payment. If there is an
+error, returns the error, otherwise returns false. Called by the insert
+method.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_pay.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Delete and replace methods.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_bill.html">FS::cust_bill</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_pay_batch.html b/htdocs/docs/man/FS/cust_pay_batch.html
new file mode 100644 (file)
index 0000000..1a5189e
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_pay_batch - Object methods for batch cards</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_pay_batch - Object methods for batch cards
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_pay_batch;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_pay_batch \%hash;
+  $record = new FS::cust_pay_batch { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_pay_batch object represents a credit card transaction ready to
+be batched (sent to a processor). FS::cust_pay_batch inherits from
+FS::Record. Typically called by the collect method of an FS::cust_main
+object. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_trancode">trancode - 77 for charges</A></STRONG><DD>
+<DT><STRONG><A NAME="item_cardnum">cardnum</A></STRONG><DD>
+<DT><STRONG><A NAME="item_exp">exp - card expiration</A></STRONG><DD>
+<DT><STRONG><A NAME="item_amount">amount</A></STRONG><DD>
+<DT><STRONG><A NAME="item_invnum">invnum - invoice</A></STRONG><DD>
+<DT><STRONG><A NAME="item_custnum">custnum - customer</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payname">payname - name on card</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_address1">address1</A></STRONG><DD>
+<DT><STRONG><A NAME="item_address2">address2</A></STRONG><DD>
+<DT><STRONG><A NAME="item_city">city</A></STRONG><DD>
+<DT><STRONG><A NAME="item_state">state</A></STRONG><DD>
+<DT><STRONG><A NAME="item_zip">zip</A></STRONG><DD>
+<DT><STRONG><A NAME="item_country">country</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new record. To add the record 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 record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Delete this record from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+#inactive # #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 transaction. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+repalce methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_pay_batch.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+There should probably be a configuration file with a list of allowed credit
+card types.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/cust_main.html">FS::cust_main</A>, <A HREF="../FS/Record.html">FS::Record</A>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_pkg.html b/htdocs/docs/man/FS/cust_pkg.html
new file mode 100644 (file)
index 0000000..e105a30
--- /dev/null
@@ -0,0 +1,254 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_pkg - Object methods for cust_pkg objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#SUBROUTINES">SUBROUTINES</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_pkg - Object methods for cust_pkg objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_pkg;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_pkg \%hash;
+  $record = new FS::cust_pkg { '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>  $error = $record-&gt;cancel;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;suspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;unsuspend;
+</PRE>
+<P>
+<PRE>  $part_pkg = $record-&gt;part_pkg;
+</PRE>
+<P>
+<PRE>  @labels = $record-&gt;labels;
+</PRE>
+<P>
+<PRE>  $error = FS::cust_pkg::order( $custnum, \@pkgparts );
+  $error = FS::cust_pkg::order( $custnum, \@pkgparts, \@remove_pkgnums ] );
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_pkg object represents a customer billing item. FS::cust_pkg
+inherits from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_pkgnum">pkgnum - primary key (assigned automatically for new billing items)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_custnum">custnum - Customer (see FS::cust_main)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_pkgpart">pkgpart - Billing item definition (see FS::part_pkg)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_setup">setup - date</A></STRONG><DD>
+<DT><STRONG><A NAME="item_bill">bill - date</A></STRONG><DD>
+<DT><STRONG><A NAME="item_susp">susp - date</A></STRONG><DD>
+<DT><STRONG><A NAME="item_expire">expire - date</A></STRONG><DD>
+<DT><STRONG><A NAME="item_cancel">cancel - date</A></STRONG><DD>
+<DT><STRONG><A NAME="item_otaker">otaker - order taker (assigned automatically if null, see FS::UID)</A></STRONG><DD>
+</DL>
+<P>
+Note: setup, bill, susp, expire and cancel are specified as UNIX
+timestamps; 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>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Create a new billing item. To add the item to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this billing item to the database (``Orders'' the item). If there is
+an error, returns the error, otherwise returns false.
+
+<P>
+sub insert { my <CODE>$self</CODE> = shift;
+
+<P>
+<PRE>  # custnum might not have have been defined in sub check (for one-shot new
+  # customers), so check it here instead
+</PRE>
+<P>
+<PRE>  my $error = $self-&gt;ut_number('custnum');
+  return $error if $error
+</PRE>
+<P>
+<PRE>  return &quot;Unknown customer&quot;
+    unless qsearchs( 'cust_main', { 'custnum' =&gt; $self-&gt;custnum } );
+</PRE>
+<P>
+<PRE>  $self-&gt;SUPER::insert;
+</PRE>
+<P>
+}
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented. You don't want to delete billing items, because
+there would then be no record the customer ever purchased the item.
+Instead, see the cancel method.
+
+<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.
+
+<P>
+Currently, custnum, setup, bill, susp, expire, and cancel may be changed.
+
+<P>
+Changing pkgpart may have disasterous effects. See the order subroutine.
+
+<P>
+setup and bill are normally updated by calling the bill method of a
+customer object (see <A HREF="../FS/cust_main.html">FS::cust_main</A>).
+
+<P>
+suspend is normally updated by the suspend and unsuspend methods.
+
+<P>
+cancel is normally updated by the cancel method (and also the order
+subroutine in some cases).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid billing item. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG>cancel</STRONG><DD>
+<P>
+Cancels and removes all services (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A> and <A HREF="../FS/part_svc.html">FS::part_svc</A>) in this package, then cancels the package itself (sets the cancel field
+to now).
+
+<P>
+If there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><DD>
+<P>
+Suspends all services (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A> and <A HREF="../FS/part_svc.html">FS::part_svc</A>) in this package, then suspends the package itself (sets the susp field to
+now).
+
+<P>
+If there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><DD>
+<P>
+Unsuspends all services (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A> and <A HREF="../FS/part_svc.html">FS::part_svc</A>) in this package, then unsuspends the package itself (clears the susp
+field).
+
+<P>
+If there is an error, returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_part_pkg">part_pkg</A></STRONG><DD>
+<P>
+Returns the definition for this billing item, as an FS::part_pkg object
+(see
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>).
+
+<DT><STRONG><A NAME="item_labels">labels</A></STRONG><DD>
+<P>
+Returns a list of lists, calling the label method for all services (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) of this billing item.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="SUBROUTINES">SUBROUTINES</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_order">order CUSTNUM, PKGPARTS_ARYREF, [ REMOVE_PKGNUMS_ARYREF ]</A></STRONG><DD>
+<P>
+CUSTNUM is a customer (see <A HREF="../FS/cust_main.html">FS::cust_main</A>)
+
+<P>
+PKGPARTS is a list of pkgparts specifying the the billing item definitions
+(see
+<A HREF="../FS/part_pkg.html">FS::part_pkg</A>) to order for this customer. Duplicates are of course permitted.
+
+<P>
+REMOVE_PKGNUMS is an optional list of pkgnums specifying the billing items
+to remove for this customer. The services (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) are moved to the new billing items. An error is returned if this is not
+possible (see
+<A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>).
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_pkg.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+sub order is not OO. Perhaps it should be moved to FS::cust_main and made
+so?
+
+<P>
+In sub order, the <CODE>@pkgparts</CODE> array (passed by reference) is
+clobbered.
+
+<P>
+Also in sub order, no money is adjusted. Once FS::part_pkg defines a
+standard method to pass dates to the recur_prog expression, it should do
+so.
+
+<P>
+FS::svc_acct, FS::svc_acct_sm, and FS::svc_domain are loaded via 'use' at
+compile time, rather than via 'require' in sub { setup, suspend, unsuspend,
+cancel } because they use %FS::UID::callback to load configuration values.
+Probably need a subroutine which decides what to do based on whether or not
+we've fetched the user yet, rather than a hash. See FS::UID and the TODO.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, <A HREF="../FS/part_pkg.html">FS::part_pkg</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>
+, <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>, schema.html from the base documentation
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_refund.html b/htdocs/docs/man/FS/cust_refund.html
new file mode 100644 (file)
index 0000000..f1d106c
--- /dev/null
@@ -0,0 +1,116 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_refund - Object method for cust_refund objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_refund - Object method for cust_refund objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_refund;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_refund \%hash;
+  $record = new FS::cust_refund { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_refund represents a refund. FS::cust_refund inherits from
+FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_refundnum">refundnum - primary key (assigned automatically for new refunds)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_crednum">crednum - Credit (see FS::cust_credit)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_refund">refund - Amount of the refund</A></STRONG><DD>
+<DT><STRONG><A NAME="item__date">_date - specified as a UNIX timestamp; see perlfunc/&quot;time&quot;.  Also see
+Time::Local and Date::Parse for conversion functions.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payby">payby - `CARD' (credit cards), `BILL' (billing), or `COMP' (free)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_payinfo">payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_otaker">otaker - order taker (assigned automatically, see FS::UID)</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new refund. To add the refund to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this refund to the database, and updates the credit (see
+<A HREF="../FS/cust_credit.html">FS::cust_credit</A>).
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented (accounting reasons).
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Currently unimplemented (accounting reasons).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid refund. If there is an
+error, returns the error, otherwise returns false. Called by the insert
+method.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_refund.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Delete and replace methods.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_credit.html">FS::cust_credit</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/cust_svc.html b/htdocs/docs/man/FS/cust_svc.html
new file mode 100644 (file)
index 0000000..060fb7f
--- /dev/null
@@ -0,0 +1,134 @@
+<HTML>
+<HEAD>
+<TITLE>FS::cust_svc - Object method for cust_svc objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::cust_svc - Object method for cust_svc objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::cust_svc;
+</PRE>
+<P>
+<PRE>  $record = new FS::cust_svc \%hash
+  $record = new FS::cust_svc { '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>  ($label, $value) = $record-&gt;label;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::cust_svc represents a service. FS::cust_svc inherits from
+FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_svcnum">svcnum - primary key (assigned automatically for new services)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_pkgnum">pkgnum - Package (see FS::cust_pkg)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svcpart">svcpart - Service definition (see FS::part_svc)</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new service. To add the refund to the database, see <A HREF="#insert">insert</A>. Services are normally created by creating FS::svc_ objects (see
+<A HREF="../FS/svc_acct.html">FS::svc_acct</A>, <A HREF="../FS/svc_domain.html">FS::svc_domain</A>, and <A HREF="../FS/svc_acct_sm.html">FS::svc_acct_sm</A>, among others).
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this service to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this service from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<P>
+Called by the cancel method of the package (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</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 service. If there is an
+error, returns the error, otehrwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG><A NAME="item_label">label</A></STRONG><DD>
+<P>
+Returns a list consisting of: - The name of this service (from part_svc) -
+A meaningful identifier (username, domain, or mail alias) - The table name
+(i.e. svc_domain) for this service
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: cust_svc.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Behaviour of changing the svcpart of cust_svc records is undefined and
+should possibly be prohibited, and pkg_svc records are not checked.
+
+<P>
+pkg_svc records are not checked in general (here).
+
+<P>
+Deleting this record doesn't check or delete the svc_* record associated
+with this record.
+
+<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/part_svc.html">FS::part_svc</A>, <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>, schema.html from the base documentation
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef.html b/htdocs/docs/man/FS/dbdef.html
new file mode 100644 (file)
index 0000000..9b8274b
--- /dev/null
@@ -0,0 +1,97 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef - Database objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef - Database objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef;
+</PRE>
+<P>
+<PRE>  $dbdef = new FS::dbdef (@dbdef_table_objects);
+  $dbdef = load FS::dbdef &quot;filename&quot;;
+</PRE>
+<P>
+<PRE>  $dbdef-&gt;save(&quot;filename&quot;);
+</PRE>
+<P>
+<PRE>  $dbdef-&gt;addtable($dbdef_table_object);
+</PRE>
+<P>
+<PRE>  @table_names = $dbdef-&gt;tables;
+</PRE>
+<P>
+<PRE>  $FS_dbdef_table_object = $dbdef-&gt;table;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef objects are collections of FS::dbdef_table objects and represnt a
+database (a collection of tables).
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new TABLE, TABLE, ...</A></STRONG><DD>
+<P>
+Creates a new FS::dbdef object
+
+<DT><STRONG><A NAME="item_load">load FILENAME</A></STRONG><DD>
+<P>
+Loads an FS::dbdef object from a file.
+
+<DT><STRONG><A NAME="item_save">save FILENAME</A></STRONG><DD>
+<P>
+Saves an FS::dbdef object to a file.
+
+<DT><STRONG><A NAME="item_addtable">addtable TABLE</A></STRONG><DD>
+<P>
+Adds this FS::dbdef_table object.
+
+<DT><STRONG><A NAME="item_tables">tables</A></STRONG><DD>
+<P>
+Returns the names of all tables.
+
+<DT><STRONG><A NAME="item_table">table TABLENAME</A></STRONG><DD>
+<P>
+Returns the named FS::dbdef_table object.
+
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Each FS::dbdef object should have a name which corresponds to its name
+within the SQL database engine.
+
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>, <A HREF="../FS/Record.html">FS::Record</A>,
+
+</DL>
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef_colgroup.html b/htdocs/docs/man/FS/dbdef_colgroup.html
new file mode 100644 (file)
index 0000000..9c4f7f4
--- /dev/null
@@ -0,0 +1,86 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef_colgroup - Column group objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef_colgroup - Column group objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef_colgroup;
+</PRE>
+<P>
+<PRE>  $colgroup = new FS::dbdef_colgroup ( $lol );
+  $colgroup = new FS::dbdef_colgroup (
+    [
+      [ 'single_column' ],
+      [ 'multiple_columns', 'another_column', ],
+    ]
+  );
+</PRE>
+<P>
+<PRE>  @sql_lists = $colgroup-&gt;sql_list;
+</PRE>
+<P>
+<PRE>  @singles = $colgroup-&gt;singles;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef_colgroup objects represent sets of sets of columns.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<P>
+Creates a new FS::dbdef_colgroup object.
+
+<DT><STRONG><A NAME="item_sql_list">sql_list</A></STRONG><DD>
+<P>
+Returns a flat list of comma-separated values, for SQL statements.
+
+<DT><STRONG><A NAME="item_singles">singles</A></STRONG><DD>
+<P>
+Returns a flat list of all single item lists.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>, <A HREF="../FS/dbdef_unique.html">FS::dbdef_unique</A>, <A HREF="../FS/dbdef_index.html">FS::dbdef_index</A>,
+<A HREF="../FS/dbdef_column.html">FS::dbdef_column</A>, <A HREF="../FS/dbdef.html">FS::dbdef</A>, <EM>perldsc</EM>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef_column.html b/htdocs/docs/man/FS/dbdef_column.html
new file mode 100644 (file)
index 0000000..c753b52
--- /dev/null
@@ -0,0 +1,118 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef_column - Column object</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef_column - Column object
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef_column;
+</PRE>
+<P>
+<PRE>  $column_object = new FS::dbdef_column ( $name, $sql_type, '' );
+  $column_object = new FS::dbdef_column ( $name, $sql_type, 'NULL' );
+  $column_object = new FS::dbdef_column ( $name, $sql_type, '', $length );
+  $column_object = new FS::dbdef_column ( $name, $sql_type, 'NULL', $length );
+</PRE>
+<P>
+<PRE>  $name = $column_object-&gt;name;
+  $column_object-&gt;name ( 'name' );
+</PRE>
+<P>
+<PRE>  $name = $column_object-&gt;type;
+  $column_object-&gt;name ( 'sql_type' );
+</PRE>
+<P>
+<PRE>  $name = $column_object-&gt;null;
+  $column_object-&gt;name ( 'NOT NULL' );
+</PRE>
+<P>
+<PRE>  $name = $column_object-&gt;length;
+  $column_object-&gt;name ( $length );
+</PRE>
+<P>
+<PRE>  $sql_line = $column-&gt;line;
+  $sql_line = $column-&gt;line $datasrc;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef::column objects represend columns in tables (see <A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>).
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<P>
+Creates a new FS::dbdef_column object.
+
+<DT><STRONG><A NAME="item_name">name</A></STRONG><DD>
+<P>
+Returns or sets the column name.
+
+<DT><STRONG><A NAME="item_type">type</A></STRONG><DD>
+<P>
+Returns or sets the column type.
+
+<DT><STRONG><A NAME="item_null">null</A></STRONG><DD>
+<P>
+Returns or sets the column null flag.
+
+<DT><STRONG>type</STRONG><DD>
+<P>
+Returns or sets the column length.
+
+<DT><STRONG><A NAME="item_line">line [ $datasrc ]</A></STRONG><DD>
+<P>
+Returns an SQL column definition.
+
+<P>
+If passed a DBI <CODE>$datasrc</CODE> specifying <A HREF="../DBD/mysql.html">DBD::mysql</A> or <A HREF="../DBD/Pg.html">DBD::Pg</A>, will use engine-specific syntax.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>, <A HREF="../FS/dbdef.html">FS::dbdef</A>, <EM>DBI</EM>
+
+
+
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: dbdef_column.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef_index.html b/htdocs/docs/man/FS/dbdef_index.html
new file mode 100644 (file)
index 0000000..7a9e503
--- /dev/null
@@ -0,0 +1,58 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef_unique.pm - Index object</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef_unique.pm - Index object
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef_index;
+</PRE>
+<P>
+<PRE>    # see FS::dbdef_colgroup methods
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef_unique objects represent the (non-unique) indices of a table (<A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>). FS::dbdef_unique inherits from FS::dbdef_colgroup.
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Is this empty subclass needed?
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef_colgroup.html">FS::dbdef_colgroup</A>, <A HREF="../FS/dbdef_record.html">FS::dbdef_record</A>, <A HREF="../FS/Record.html">FS::Record</A>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef_table.html b/htdocs/docs/man/FS/dbdef_table.html
new file mode 100644 (file)
index 0000000..7056b0f
--- /dev/null
@@ -0,0 +1,144 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef_table - Table objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+       <LI><A HREF="#VERSION">VERSION</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef_table - Table objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef_table;
+</PRE>
+<P>
+<PRE>  $dbdef_table = new FS::dbdef_table (
+    &quot;table_name&quot;,
+    &quot;primary_key&quot;,
+    $FS_dbdef_unique_object,
+    $FS_dbdef_index_object,
+    @FS_dbdef_column_objects,
+  );
+</PRE>
+<P>
+<PRE>  $dbdef_table-&gt;addcolumn ( $FS_dbdef_column_object );
+</PRE>
+<P>
+<PRE>  $table_name = $dbdef_table-&gt;name;
+  $dbdef_table-&gt;name (&quot;table_name&quot;);
+</PRE>
+<P>
+<PRE>  $table_name = $dbdef_table-&gt;primary_keye;
+  $dbdef_table-&gt;primary_key (&quot;primary_key&quot;);
+</PRE>
+<P>
+<PRE>  $FS_dbdef_unique_object = $dbdef_table-&gt;unique;
+  $dbdef_table-&gt;unique ( $FS_dbdef_unique_object );
+</PRE>
+<P>
+<PRE>  $FS_dbdef_index_object = $dbdef_table-&gt;index;
+  $dbdef_table-&gt;index ( $FS_dbdef_index_object );
+</PRE>
+<P>
+<PRE>  @column_names = $dbdef-&gt;columns;
+</PRE>
+<P>
+<PRE>  $FS_dbdef_column_object = $dbdef-&gt;column;
+</PRE>
+<P>
+<PRE>  @sql_statements = $dbdef-&gt;sql_create_table;
+  @sql_statements = $dbdef-&gt;sql_create_table $datasrc;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef_table objects represent a single database table.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new</A></STRONG><DD>
+<P>
+Creates a new FS::dbdef_table object.
+
+<DT><STRONG><A NAME="item_addcolumn">addcolumn</A></STRONG><DD>
+<P>
+Adds this FS::dbdef_column object. 
+
+<DT><STRONG><A NAME="item_name">name</A></STRONG><DD>
+<P>
+Returns or sets the table name.
+
+<DT><STRONG><A NAME="item_primary_key">primary_key</A></STRONG><DD>
+<P>
+Returns or sets the primary key.
+
+<DT><STRONG><A NAME="item_unique">unique</A></STRONG><DD>
+<P>
+Returns or sets the FS::dbdef_unique object.
+
+<DT><STRONG><A NAME="item_index">index</A></STRONG><DD>
+<P>
+Returns or sets the FS::dbdef_index object.
+
+<DT><STRONG><A NAME="item_columns">columns</A></STRONG><DD>
+<P>
+Returns a list consisting of the names of all columns.
+
+<DT><STRONG><A NAME="item_column">column &quot;column&quot;</A></STRONG><DD>
+<P>
+Returns the column object (see <A HREF="../FS/dbdef_column.html">FS::dbdef_column</A>) for ``column''.
+
+<DT><STRONG><A NAME="item_sql_create_table">sql_create_table [ $datasrc ]</A></STRONG><DD>
+<P>
+Returns an array of SQL statments to create this table.
+
+<P>
+If passed a DBI <CODE>$datasrc</CODE> specifying <A HREF="../DBD/mysql.html">DBD::mysql</A>, will use MySQL-specific syntax. Non-standard syntax for other engines (if
+applicable) may also be supported in the future.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef.html">FS::dbdef</A>, <A HREF="../FS/dbdef_unique.html">FS::dbdef_unique</A>, <A HREF="../FS/dbdef_index.html">FS::dbdef_index</A>, <A HREF="../FS/dbdef_unique.html">FS::dbdef_unique</A>,
+<EM>DBI</EM>
+
+
+
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: dbdef_table.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/dbdef_unique.html b/htdocs/docs/man/FS/dbdef_unique.html
new file mode 100644 (file)
index 0000000..73c885c
--- /dev/null
@@ -0,0 +1,58 @@
+<HTML>
+<HEAD>
+<TITLE>FS::dbdef_unique.pm - Unique object</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+       <LI><A HREF="#NAME">NAME</A>
+       <LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
+       <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+       <LI><A HREF="#BUGS">BUGS</A>
+       <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::dbdef_unique.pm - Unique object
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::dbdef_unique;
+</PRE>
+<P>
+<PRE>  # see FS::dbdef_colgroup methods
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::dbdef_unique objects represent the unique indices of a database table (<A HREF="../FS/dbdef_table.html">FS::dbdef_table</A>). FS::dbdef_unique inherits from FS::dbdef_colgroup.
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Is this empty subclass needed?
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/dbdef_colgroup.html">FS::dbdef_colgroup</A>, <A HREF="../FS/dbdef_record.html">FS::dbdef_record</A>, <A HREF="../FS/Record.html">FS::Record</A>
+
+
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/part_pkg.html b/htdocs/docs/man/FS/part_pkg.html
new file mode 100644 (file)
index 0000000..e36b584
--- /dev/null
@@ -0,0 +1,152 @@
+<HTML>
+<HEAD>
+<TITLE>FS::part_pkg - Object methods for part_pkg objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::part_pkg - Object methods for part_pkg objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::part_pkg;
+</PRE>
+<P>
+<PRE>  $record = new FS::part_pkg \%hash
+  $record = new FS::part_pkg { 'column' =&gt; 'value' };
+</PRE>
+<P>
+<PRE>  $custom_record = $template_record-&gt;clone;
+</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>  @pkg_svc = $record-&gt;pkg_svc;
+</PRE>
+<P>
+<PRE>  $svcnum = $record-&gt;svcpart;
+  $svcnum = $record-&gt;svcpart( 'svc_acct' );
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::part_pkg object represents a billing item definition. FS::part_pkg
+inherits from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_pkgpart">pkgpart - primary key (assigned automatically for new billing item definitions)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_pkg">pkg - Text name of this billing item definition (customer-viewable)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_comment">comment - Text name of this billing item definition (non-customer-viewable)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_setup">setup - Setup fee</A></STRONG><DD>
+<DT><STRONG><A NAME="item_freq">freq - Frequency of recurring fee</A></STRONG><DD>
+<DT><STRONG><A NAME="item_recur">recur - Recurring fee</A></STRONG><DD>
+</DL>
+<P>
+setup and recur are evaluated as Safe perl expressions. You can use numbers
+just as you would normally. More advanced semantics are not yet defined.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new billing item definition. To add the billing item definition
+to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_clone">clone</A></STRONG><DD>
+<P>
+An alternate constructor. Creates a new billing item definition by
+duplicating an existing definition. A new pkgpart is assigned and `(CUSTOM)
+' is prepended to the comment field. To add the billing item definition to
+the database, see
+<A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this billing item definition to the database. If there is an error,
+returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 billing item definition. If
+there is an error, returns the error, otherwise returns false. Called by
+the insert and replace methods.
+
+<DT><STRONG><A NAME="item_pkg_svc">pkg_svc</A></STRONG><DD>
+<P>
+Returns all FS::pkg_svc objects (see <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>) for this package definition.
+
+<DT><STRONG><A NAME="item_svcpart">svcpart [ SVCDB ]</A></STRONG><DD>
+<P>
+Returns the svcpart of a single service definition (see <A HREF="../FS/part_svc.html">FS::part_svc</A>) associated with this billing item definition (see <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>). Returns false if there not exactly one service definition with quantity
+1, or if SVCDB is specified and does not match the svcdb of the service
+definition, 
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: part_pkg.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The delete method is unimplemented.
+
+<P>
+setup and recur semantics are not yet defined (and are implemented in
+FS::cust_bill. hmm.).
+
+<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/type_pkgs.html">FS::type_pkgs</A>, <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>, <EM>Safe</EM>. schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/part_referral.html b/htdocs/docs/man/FS/part_referral.html
new file mode 100644 (file)
index 0000000..b6fd2ce
--- /dev/null
@@ -0,0 +1,113 @@
+<HTML>
+<HEAD>
+<TITLE>FS::part_referral - Object methods for part_referral objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::part_referral - Object methods for part_referral objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::part_referral;
+</PRE>
+<P>
+<PRE>  $record = new FS::part_referral \%hash
+  $record = new FS::part_referral { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::part_referral represents a referral - where a customer heard of your
+services. This can be used to track the effectiveness of a particular piece
+of advertising, for example. FS::part_referral inherits from FS::Record.
+The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_refnum">refnum - primary key (assigned automatically for new referrals)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_referral">referral - Text name of this referral</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new referral. To add the referral to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this referral to the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 referral. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: part_referral.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The delete method is unimplemented.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_main.html">FS::cust_main</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/part_svc.html b/htdocs/docs/man/FS/part_svc.html
new file mode 100644 (file)
index 0000000..fedcbd3
--- /dev/null
@@ -0,0 +1,121 @@
+<HTML>
+<HEAD>
+<TITLE>FS::part_svc - Object methods for part_svc objects</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::part_svc - Object methods for part_svc objects
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::part_svc;
+</PRE>
+<P>
+<PRE>  $record = new FS::part_referral \%hash
+  $record = new FS::part_referral { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::part_svc represents a service definition. FS::part_svc inherits from
+FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_svcpart">svcpart - primary key (assigned automatically for new service definitions)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svc">svc - text name of this service definition</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svcdb">svcdb - table used for this service.  See FS::svc_acct,
+FS::svc_domain, and FS::svc_acct_sm, among others.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svcdb_field">svcdb__field - Default or fixed value for field in svcdb.</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svcdb_field_flag">svcdb__field_flag - defines svcdb__field action: null, `D' for default, or `F' for fixed</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new service definition. To add the service definition to the
+database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this service definition to the database. If there is an error, returns
+the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Currently unimplemented.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 service definition. If there
+is an error, returns the error, otherwise returns false. Called by the
+insert and replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: part_svc.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+Delete is unimplemented.
+
+<P>
+The list of svc_* tables is hardcoded. When svc_acct_pop is renamed, this
+should be fixed.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/part_pkg.html">FS::part_pkg</A>, <A HREF="../FS/pkg_svc.html">FS::pkg_svc</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>,
+<A HREF="../FS/svc_acct.html">FS::svc_acct</A>, <A HREF="../FS/svc_acct_sm.html">FS::svc_acct_sm</A>, <A HREF="../FS/svc_domain.html">FS::svc_domain</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/pkg_svc.html b/htdocs/docs/man/FS/pkg_svc.html
new file mode 100644 (file)
index 0000000..7cd7863
--- /dev/null
@@ -0,0 +1,125 @@
+<HTML>
+<HEAD>
+<TITLE>FS::pkg_svc - Object methods for pkg_svc records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::pkg_svc - Object methods for pkg_svc records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::pkg_svc;
+</PRE>
+<P>
+<PRE>  $record = new FS::pkg_svc \%hash;
+  $record = new FS::pkg_svc { '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>  $part_pkg = $record-&gt;part_pkg;
+</PRE>
+<P>
+<PRE>  $part_svc = $record-&gt;part_svc;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::pkg_svc record links a billing item definition (see <A HREF="../FS/part_pkg.html">FS::part_pkg</A>) to a service definition (see <A HREF="../FS/part_svc.html">FS::part_svc</A>). FS::pkg_svc inherits from FS::Record. The following fields are currently
+supported:
+
+<DL>
+<DT><STRONG><A NAME="item_pkgpart">pkgpart - Billing item definition (see FS::part_pkg)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_svcpart">svcpart - Service definition (see FS::part_svc)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_quantity">quantity - Quantity of this service definition that this billing item
+definition includes</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Create a new record. To add the record to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this record from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 record. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<DT><STRONG><A NAME="item_part_pkg">part_pkg</A></STRONG><DD>
+<P>
+Returns the FS::part_pkg object (see <A HREF="../FS/part_pkg.html">FS::part_pkg</A>).
+
+<DT><STRONG><A NAME="item_part_svc">part_svc</A></STRONG><DD>
+<P>
+Returns the FS::part_svc object (see <A HREF="../FS/part_svc.html">FS::part_svc</A>).
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: pkg_svc.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/part_pkg.html">FS::part_pkg</A>, <A HREF="../FS/part_svc.html">FS::part_svc</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/svc_Common.html b/htdocs/docs/man/FS/svc_Common.html
new file mode 100644 (file)
index 0000000..d8d81a0
--- /dev/null
@@ -0,0 +1,109 @@
+<HTML>
+<HEAD>
+<TITLE>FS::svc_Common - Object method for all svc_ records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::svc_Common - Object method for all svc_ records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+use FS::svc_Common;
+
+<P>
+<CODE>@ISA</CODE> = <CODE>qw(</CODE> FS::svc_Common );
+
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+FS::svc_Common is intended as a base class for table-specific classes to
+inherit from, i.e. FS::svc_acct. FS::svc_Common inherits from FS::Record.
+
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<P>
+The additional fields pkgnum and svcpart (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) should be defined. An FS::cust_svc record will be created and inserted.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this account from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<P>
+The corresponding FS::cust_svc record will be deleted as well.
+
+<DT><STRONG><A NAME="item_setfixed">setfixed</A></STRONG><DD>
+<P>
+Sets any fixed fields for this service (see <A HREF="../FS/part_svc.html">FS::part_svc</A>). If there is an error, returns the error, otherwise returns the
+FS::part_svc object (use <CODE>ref()</CODE> to test the return). Usually
+called by the check method.
+
+<DT><STRONG><A NAME="item_setdefault">setdefault</A></STRONG><DD>
+<P>
+Sets all fields to their defaults (see <A HREF="../FS/part_svc.html">FS::part_svc</A>), overriding their current values. If there is an error, returns the
+error, otherwise returns the FS::part_svc object (use <CODE>ref()</CODE> to
+test the return).
+
+<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><DD>
+<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><DD>
+<DT><STRONG><A NAME="item_cancel">cancel</A></STRONG><DD>
+<P>
+Stubs - return false (no error) so derived classes don't need to define
+these methods. Called by the cancel method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: svc_Common.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The setfixed method return value.
+
+<P>
+The new method should set defaults from part_svc (like the check method
+sets fixed values)?
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>, <A HREF="../FS/part_svc.html">FS::part_svc</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/svc_acct.html b/htdocs/docs/man/FS/svc_acct.html
new file mode 100644 (file)
index 0000000..4b30745
--- /dev/null
@@ -0,0 +1,210 @@
+<HTML>
+<HEAD>
+<TITLE>FS::svc_acct - Object methods for svc_acct records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::svc_acct - Object methods for svc_acct records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::svc_acct;
+</PRE>
+<P>
+<PRE>  $record = new FS::svc_acct \%hash;
+  $record = new FS::svc_acct { '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>  $error = $record-&gt;suspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;unsuspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;cancel;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::svc_acct object represents an account. FS::svc_acct inherits from
+FS::svc_Common. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_svcnum">svcnum - primary key (assigned automatcially for new accounts)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_username">username</A></STRONG><DD>
+<DT><STRONG><A NAME="item__password">_password - generated if blank</A></STRONG><DD>
+<DT><STRONG><A NAME="item_popnum">popnum - Point of presence (see FS::svc_acct_pop)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_uid">uid</A></STRONG><DD>
+<DT><STRONG><A NAME="item_gid">gid</A></STRONG><DD>
+<DT><STRONG><A NAME="item_finger">finger - GECOS</A></STRONG><DD>
+<DT><STRONG><A NAME="item_dir">dir - set automatically if blank (and uid is not)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_shell">shell</A></STRONG><DD>
+<DT><STRONG><A NAME="item_quota">quota - (unimplementd)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_slipip">slipip - IP address</A></STRONG><DD>
+<DT><STRONG><A NAME="item_radius_Radius_Attribute">radius_Radius_Attribute - Radius-Attribute</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new account. To add the account to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this account to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<P>
+The additional fields pkgnum and svcpart (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) should be defined. An FS::cust_svc record will be created and inserted.
+
+<P>
+If the configuration value (see <A HREF="../FS/Conf.html">FS::Conf</A>) shellmachine exists, and the username, uid, and dir fields are defined,
+the command
+
+<P>
+<PRE>  useradd -d $dir -m -s $shell -u $uid $username
+</PRE>
+<P>
+is executed on shellmachine via ssh. This behaviour can be surpressed by
+setting $FS::svc_acct::nossh_hack true.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this account from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<P>
+The corresponding FS::cust_svc record will be deleted as well.
+
+<P>
+If the configuration value (see <A HREF="../FS/Conf.html">FS::Conf</A>) shellmachine exists, the command:
+
+<P>
+<PRE>  userdel $username
+</PRE>
+<P>
+is executed on shellmachine via ssh. This behaviour can be surpressed by
+setting $FS::svc_acct::nossh_hack true.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces OLD_RECORD with this one in the database. If there is an error,
+returns the error, otherwise returns false.
+
+<P>
+If the configuration value (see <A HREF="../FS/Conf.html">FS::Conf</A>) shellmachine exists, and the dir field has changed, the command:
+
+<P>
+<PRE>  [ -d $old_dir ] &amp;&amp; (
+    chmod u+t $old_dir;
+    umask 022;
+    mkdir $new_dir;
+    cd $old_dir;
+    find . -depth -print | cpio -pdm $new_dir;
+    chmod u-t $new_dir;
+    chown -R $uid.$gid $new_dir;
+    rm -rf $old_dir
+  )
+</PRE>
+<P>
+is executed on shellmachine via ssh. This behaviour can be surpressed by
+setting $FS::svc_acct::nossh_hack true.
+
+<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><DD>
+<P>
+Suspends this account by prefixing *SUSPENDED* to the password. If there is
+an error, returns the error, otherwise returns false.
+
+<P>
+Called by the suspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><DD>
+<P>
+Unsuspends this account by removing *SUSPENDED* from the password. If there
+is an error, returns the error, otherwise returns false.
+
+<P>
+Called by the unsuspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_cancel">cancel</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the cancel method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid service. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<P>
+Sets any fixed values; see <A HREF="../FS/part_svc.html">FS::part_svc</A>.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: svc_acct.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The remote commands should be configurable.
+
+<P>
+The bits which ssh should fork before doing so.
+
+<P>
+The <CODE>$recref</CODE> stuff in sub check should be cleaned up.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/svc_Common.html">FS::svc_Common</A>, <A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/Conf.html">FS::Conf</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>,
+<A HREF="../FS/part_svc.html">FS::part_svc</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>, <A HREF="../FS/SSH.html">FS::SSH</A>, <EM>ssh</EM>, <A HREF="../FS/svc_acct_pop.html">FS::svc_acct_pop</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/svc_acct_pop.html b/htdocs/docs/man/FS/svc_acct_pop.html
new file mode 100644 (file)
index 0000000..0deee2e
--- /dev/null
@@ -0,0 +1,115 @@
+<HTML>
+<HEAD>
+<TITLE>FS::svc_acct_pop - Object methods for svc_acct_pop records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::svc_acct_pop - Object methods for svc_acct_pop records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::svc_acct_pop;
+</PRE>
+<P>
+<PRE>  $record = new FS::svc_acct_pop \%hash;
+  $record = new FS::svc_acct_pop { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::svc_acct object represents an point of presence. FS::svc_acct_pop
+inherits from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_popnum">popnum - primary key (assigned automatically for new accounts)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_city">city</A></STRONG><DD>
+<DT><STRONG><A NAME="item_state">state</A></STRONG><DD>
+<DT><STRONG><A NAME="item_ac">ac - area code</A></STRONG><DD>
+<DT><STRONG><A NAME="item_exch">exch - exchange</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new point of presence (if only it were that easy!). To add the
+point of presence to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this point of presence to the database. If there is an error, returns
+the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Removes this point of presence from the database.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 point of presence. If there
+is an error, returns the error, otherwise returns false. Called by the
+insert and replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: svc_acct_pop.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+It should be renamed to part_pop.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF=".././FS/svc_acct.html#">the svc_acct manpage</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/svc_acct_sm.html b/htdocs/docs/man/FS/svc_acct_sm.html
new file mode 100644 (file)
index 0000000..2b83485
--- /dev/null
@@ -0,0 +1,172 @@
+<HTML>
+<HEAD>
+<TITLE>FS::svc_acct_sm - Object methods for svc_acct_sm records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::svc_acct_sm - Object methods for svc_acct_sm records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::svc_acct_sm;
+</PRE>
+<P>
+<PRE>  $record = new FS::svc_acct_sm \%hash;
+  $record = new FS::svc_acct_sm { '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>  $error = $record-&gt;suspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;unsuspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;cancel;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::svc_acct object represents a virtual mail alias. FS::svc_acct
+inherits from FS::Record. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_svcnum">svcnum - primary key (assigned automatcially for new accounts)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_domsvc">domsvc - svcnum of the virtual domain (see FS::svc_domain)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_domuid">domuid - uid of the target account (see FS::svc_acct)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_domuser">domuser - virtual username</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new virtual mail alias. To add the virtual mail alias to the
+database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this virtual mail alias to the database. If there is an error, returns
+the error, otherwise returns false.
+
+<P>
+The additional fields pkgnum and svcpart (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) should be defined. An FS::cust_svc record will be created and inserted.
+
+<P>
+If the configuration values (see <A HREF="../FS/Conf.html">FS::Conf</A>) shellmachine and qmailmachines exist, and domuser is `*' (meaning a
+catch-all mailbox), the command:
+
+<P>
+<PRE>  [ -e $dir/.qmail-$qdomain-default ] || {
+    touch $dir/.qmail-$qdomain-default;
+    chown $uid:$gid $dir/.qmail-$qdomain-default;
+  }
+</PRE>
+<P>
+is executed on shellmachine via ssh (see <EM>dot-qmail</EM>). This behaviour can be surpressed by setting $FS::svc_acct_sm::nossh_hack
+true.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this virtual mail alias from the database. If there is an error,
+returns the error, otherwise returns false.
+
+<P>
+The corresponding FS::cust_svc record will be deleted as well.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces OLD_RECORD with this one in the database. If there is an error,
+returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the suspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the unsuspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_cancel">cancel</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the cancel method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid virtual mail alias. If there
+is an error, returns the error, otherwise returns false. Called by the
+insert and replace methods.
+
+<P>
+Sets any fixed values; see <A HREF="../FS/part_svc.html">FS::part_svc</A>.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: svc_acct_sm.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+The remote commands should be configurable.
+
+<P>
+The <CODE>$recref</CODE> stuff in sub check should be cleaned up.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/Conf.html">FS::Conf</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>, <A HREF="../FS/part_svc.html">FS::part_svc</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>,
+<A HREF="../FS/svc_acct.html">FS::svc_acct</A>, <A HREF="../FS/svc_domain.html">FS::svc_domain</A>, <A HREF="../FS/SSH.html">FS::SSH</A>, <EM>ssh</EM>, <EM>dot-qmail</EM>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/svc_domain.html b/htdocs/docs/man/FS/svc_domain.html
new file mode 100644 (file)
index 0000000..9b5e1a5
--- /dev/null
@@ -0,0 +1,196 @@
+<HTML>
+<HEAD>
+<TITLE>FS::svc_domain - Object methods for svc_domain records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::svc_domain - Object methods for svc_domain records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::svc_domain;
+</PRE>
+<P>
+<PRE>  $record = new FS::svc_domain \%hash;
+  $record = new FS::svc_domain { '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>  $error = $record-&gt;suspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;unsuspend;
+</PRE>
+<P>
+<PRE>  $error = $record-&gt;cancel;
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::svc_domain object represents a domain. FS::svc_domain inherits from
+FS::svc_Common. The following fields are currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_svcnum">svcnum - primary key (assigned automatically for new accounts)</A></STRONG><DD>
+<DT><STRONG><A NAME="item_domain">domain</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Creates a new domain. To add the domain to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this domain to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<P>
+The additional fields <EM>pkgnum</EM> and <EM>svcpart</EM> (see <A HREF="../FS/cust_svc.html">FS::cust_svc</A>) should be defined. An FS::cust_svc record will be created and inserted.
+
+<P>
+The additional field <EM>action</EM> should be set to <EM>N</EM> for new domains or <EM>M</EM>
+for transfers.
+
+<P>
+A registration or transfer email will be submitted unless
+$FS::svc_domain::whois_hack is true.
+
+<P>
+The additional field <EM>email</EM> can be used to manually set the admin contact email address on this email.
+Otherwise, the svc_acct records for this package (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>) are searched. If there is exactly one svc_acct record in the same
+package, it is automatically used. Otherwise an error is returned.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this domain from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<P>
+The corresponding FS::cust_svc record will be deleted as well.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces OLD_RECORD with this one in the database. If there is an error,
+returns the error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_suspend">suspend</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the suspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_unsuspend">unsuspend</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the unsuspend method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_cancel">cancel</A></STRONG><DD>
+<P>
+Just returns false (no error) for now.
+
+<P>
+Called by the cancel method of FS::cust_pkg (see <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>).
+
+<DT><STRONG><A NAME="item_check">check</A></STRONG><DD>
+<P>
+Checks all fields to make sure this is a valid domain. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+<P>
+Sets any fixed values; see <A HREF="../FS/part_svc.html">FS::part_svc</A>.
+
+<DT><STRONG><A NAME="item_whois">whois</A></STRONG><DD>
+<P>
+Returns the Net::Whois object corresponding to this domain, or undef if the
+domain is not found in whois.
+
+<P>
+(If $FS::svc_domain::whois_hack is true, returns that in all cases
+instead.)
+
+<DT><STRONG><A NAME="item__whois">_whois</A></STRONG><DD>
+<P>
+Depriciated.
+
+<DT><STRONG><A NAME="item_submit_internic">submit_internic</A></STRONG><DD>
+<P>
+Submits a registration email for this domain.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: svc_domain.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+All BIND/DNS fields should be included (and exported).
+
+<P>
+Delete doesn't send a registration template.
+
+<P>
+All registries should be supported.
+
+<P>
+Should change action to a real field.
+
+<P>
+The <CODE>$recref</CODE> stuff in sub check should be cleaned up.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/svc_Common.html">FS::svc_Common</A>, <A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/Conf.html">FS::Conf</A>, <A HREF="../FS/cust_svc.html">FS::cust_svc</A>,
+<A HREF="../FS/part_svc.html">FS::part_svc</A>, <A HREF="../FS/cust_pkg.html">FS::cust_pkg</A>, <A HREF="../FS/SSH.html">FS::SSH</A>, <A HREF="../Net/Whois.html">Net::Whois</A>, <EM>ssh</EM>,
+<EM>dot-qmail</EM>, schema.html from the base documentation, config.html from the base
+documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/FS/type_pkgs.html b/htdocs/docs/man/FS/type_pkgs.html
new file mode 100644 (file)
index 0000000..aa55cce
--- /dev/null
@@ -0,0 +1,109 @@
+<HTML>
+<HEAD>
+<TITLE>FS::type_pkgs - Object methods for type_pkgs records</TITLE>
+<LINK REV="made" HREF="mailto:ivan@rootwood.sisd.com">
+</HEAD>
+
+<BODY>
+
+<!-- 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>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+FS::type_pkgs - Object methods for type_pkgs records
+
+<P>
+<HR>
+<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
+<P>
+<PRE>  use FS::type_pkgs;
+</PRE>
+<P>
+<PRE>  $record = new FS::type_pkgs \%hash;
+  $record = new FS::type_pkgs { '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>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+An FS::type_pkgs record links an agent type (see <A HREF="../FS/agent_type.html">FS::agent_type</A>) to a billing item definition (see <A HREF="../FS/part_pkg.html">FS::part_pkg</A>). FS::type_pkgs inherits from FS::Record. The following fields are
+currently supported:
+
+<DL>
+<DT><STRONG><A NAME="item_typenum">typenum - Agent type, see FS::agent_type</A></STRONG><DD>
+<DT><STRONG><A NAME="item_pkgpart">pkgpart - Billing item definition, see FS::part_pkg</A></STRONG><DD>
+</DL>
+<P>
+<HR>
+<H1><A NAME="METHODS">METHODS</A></H1>
+<DL>
+<DT><STRONG><A NAME="item_new">new HASHREF</A></STRONG><DD>
+<P>
+Create a new record. To add the record to the database, see <A HREF="#insert">insert</A>.
+
+<DT><STRONG><A NAME="item_insert">insert</A></STRONG><DD>
+<P>
+Adds this record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+<DT><STRONG><A NAME="item_delete">delete</A></STRONG><DD>
+<P>
+Deletes this record from the database. If there is an error, returns the
+error, otherwise returns false.
+
+<DT><STRONG><A NAME="item_replace">replace OLD_RECORD</A></STRONG><DD>
+<P>
+Replaces 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 record. If there is an
+error, returns the error, otherwise returns false. Called by the insert and
+replace methods.
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="VERSION">VERSION</A></H1>
+<P>
+$Id: type_pkgs.html,v 1.1 1999-08-04 12:13:27 ivan Exp $
+
+<P>
+<HR>
+<H1><A NAME="BUGS">BUGS</A></H1>
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<A HREF="../FS/Record.html">FS::Record</A>, <A HREF="../FS/agent_type.html">FS::agent_type</A>, <A HREF="../FS/part_pkgs.html">FS::part_pkgs</A>, schema.html from the base documentation.
+
+</BODY>
+
+</HTML>
diff --git a/htdocs/docs/man/Invoice.txt b/htdocs/docs/man/Invoice.txt
deleted file mode 100644 (file)
index d0ca37f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-NAME
-    FS::Invoice - Legacy stub
-
-SYNOPSIS
-    The functionality of FS::Invoice has been integrated in
-    FS::cust_bill.
-
-HISTORY
-    ivan@voicenet.com 97-jun-25 - 27
-
-    maybe should be changed to be OO-functions on $cust_bill
-    objects? (instead of passing invnum, ugh).
-
-    ISA cust_bill and return inovice instead of passing filehandle
-    ivan@sisd.com 98-mar-13 (add postscript output!)
-
-    close our kid when we're done ivan@sisd.com 98-jun-4
-
-    separated code which shuffled data from code which formatted.
-    (so i could) fixed past due notices showing up when balance due
-    =< 0 return address comes from /var/spool/freeside/conf/address
-    ivan@sisd.com 98-jul-2
-
-    pod ivan@sisd.com 98-sep-20something
-
-    s/ISA/@ISA/ in use vars ivan@sisd.com 98-sep-27
-
diff --git a/htdocs/docs/man/Record.txt b/htdocs/docs/man/Record.txt
deleted file mode 100644 (file)
index 1708e3c..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-NAME
-    FS::Record - Database record objects
-
-SYNOPSIS
-        use FS::Record;
-        use FS::Record qw(dbh fields qsearch qsearchs dbdef);
-
-        $record = new FS::Record 'table', \%hash;
-        $record = new FS::Record 'table', { 'column' => 'value', ... };
-
-        $record  = qsearchs FS::Record 'table', \%hash;
-        $record  = qsearchs FS::Record 'table', { 'column' => 'value', ... };
-        @records = qsearch  FS::Record 'table', \%hash; 
-        @records = qsearch  FS::Record 'table', { 'column' => 'value', ... };
-
-        $table = $record->table;
-        $dbdef_table = $record->dbdef_table;
-
-        $value = $record->get('column');
-        $value = $record->getfield('column');
-        $value = $record->column;
-
-        $record->set( 'column' => 'value' );
-        $record->setfield( 'column' => 'value' );
-        $record->column('value');
-
-        %hash = $record->hash;
-
-        $hashref = $record->hashref;
-
-        $error = $record->insert;
-        #$error = $record->add; #depriciated
-
-        $error = $record->delete;
-        #$error = $record->del; #depriciated
-
-        $error = $new_record->replace($old_record);
-        #$error = $new_record->rep($old_record); #depriciated
-
-        $value = $record->unique('column');
-
-        $value = $record->ut_float('column');
-        $value = $record->ut_number('column');
-        $value = $record->ut_numbern('column');
-        $value = $record->ut_money('column');
-        $value = $record->ut_text('column');
-        $value = $record->ut_textn('column');
-        $value = $record->ut_alpha('column');
-        $value = $record->ut_alphan('column');
-        $value = $record->ut_phonen('column');
-        $value = $record->ut_anythingn('column');
-
-        $dbdef = reload_dbdef;
-        $dbdef = reload_dbdef "/non/standard/filename";
-        $dbdef = dbdef;
-
-        $quoted_value = _quote($value,'table','field');
-
-        #depriciated
-        $fields = hfields('table');
-        if ( $fields->{Field} ) { # etc.
-
-        @fields = fields 'table'; #as a subroutine
-        @fields = $record->fields; #as a method call
-
-DESCRIPTION
-    (Mostly) object-oriented interface to database records. Records
-    are currently implemented on top of DBI. FS::Record is intended
-    as a base class for table-specific classes to inherit from, i.e.
-    FS::cust_main.
-
-CONSTRUCTORS
-    new [ TABLE, ] HASHREF
-        Creates a new record. It doesn't store it in the database,
-        though. See the section on "insert" for that.
-
-        Note that the object stores this hash reference, not a
-        distinct copy of the hash it points to. You can ask the
-        object for a copy with the *hash* method.
-
-        TABLE can only be omitted when a dervived class overrides
-        the table method.
-
-    qsearch TABLE, HASHREF
-        Searches the database for all records matching (at least)
-        the key/value pairs in HASHREF. Returns all the records
-        found as `FS::TABLE' objects if that module is loaded (i.e.
-        via `use FS::cust_main;'), otherwise returns FS::Record
-        objects.
-
-    qsearchs TABLE, HASHREF
-        Same as qsearch, except that if more than one record
-        matches, it carps but returns the first. If this happens,
-        you either made a logic error in asking for a single item,
-        or your data is corrupted.
-
-METHODS
-    table
-        Returns the table name.
-
-    dbdef_table
-        Returns the FS::dbdef_table object for the table.
-
-    get, getfield COLUMN
-        Returns the value of the column/field/key COLUMN.
-
-    set, setfield COLUMN, VALUE
-        Sets the value of the column/field/key COLUMN to VALUE.
-        Returns VALUE.
-
-    AUTLOADED METHODS
-        $record->column is a synonym for $record->get('column');
-
-        $record->column('value') is a synonym for $record-
-        >set('column','value');
-
-    hash
-        Returns a list of the column/value pairs, usually for
-        assigning to a new hash.
-
-        To make a distinct duplicate of an FS::Record object, you
-        can do:
-
-            $new = new FS::Record ( $old->table, { $old->hash } );
-
-    hashref
-        Returns a reference to the column/value hash.
-
-    insert
-        Inserts this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    add Depriciated (use insert instead).
-
-    delete
-        Delete this record from the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    del Depriciated (use delete instead).
-
-    replace OLD_RECORD
-        Replace the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-    rep Depriciated (use replace instead).
-
-    check
-        Not yet implemented, croaks. Derived classes should provide
-        a check method.
-
-    unique COLUMN
-        Replaces COLUMN in record with a unique number. Called by
-        the add method on primary keys and single-field unique
-        columns (see the FS::dbdef_table manpage). Returns the new
-        value.
-
-    ut_float COLUMN
-        Check/untaint floating point numeric data: 1.1, 1, 1.1e10,
-        1e10. May not be null. If there is an error, returns the
-        error, otherwise returns false.
-
-    ut_number COLUMN
-        Check/untaint simple numeric data (whole numbers). May not
-        be null. If there is an error, returns the error, otherwise
-        returns false.
-
-    ut_numbern COLUMN
-        Check/untaint simple numeric data (whole numbers). May be
-        null. If there is an error, returns the error, otherwise
-        returns false.
-
-    ut_money COLUMN
-        Check/untaint monetary numbers. May be negative. Set to 0 if
-        null. If there is an error, returns the error, otherwise
-        returns false.
-
-    ut_text COLUMN
-        Check/untaint text. Alphanumerics, spaces, and the following
-        punctuation symbols are currently permitted: ! @ # $ % & ( )
-        - + ; : ' " , . ? / May not be null. If there is an error,
-        returns the error, otherwise returns false.
-
-    ut_textn COLUMN
-        Check/untaint text. Alphanumerics, spaces, and the following
-        punctuation symbols are currently permitted: ! @ # $ % & ( )
-        - + ; : ' " , . ? / May be null. If there is an error,
-        returns the error, otherwise returns false.
-
-    ut_alpha COLUMN
-        Check/untaint alphanumeric strings (no spaces). May not be
-        null. If there is an error, returns the error, otherwise
-        returns false.
-
-    ut_alpha COLUMN
-        Check/untaint alphanumeric strings (no spaces). May be null.
-        If there is an error, returns the error, otherwise returns
-        false.
-
-    ut_phonen COLUMN
-        Check/untaint phone numbers. May be null. If there is an
-        error, returns the error, otherwise returns false.
-
-    ut_anything COLUMN
-        Untaints arbitrary data. Be careful.
-
-    fields [ TABLE ]
-        This can be used as both a subroutine and a method call. It
-        returns a list of the columns in this record's table, or an
-        explicitly specified table. (See the dbdef_table manpage).
-
-SUBROUTINES
-    reload_dbdef([FILENAME])
-            Load a database definition (see the FS::dbdef manpage),
-            optionally from a non-default filename. This command is
-            executed at startup unless *$FS::Record::setup_hack* is
-            true. Returns a FS::dbdef object.
-
-    dbdef   Returns the current database definition. See the FS::dbdef
-            manpage.
-
-    _quote VALUE, TABLE, COLUMN
-            This is an internal function used to construct SQL
-            statements. It returns VALUE DBI-quoted (see the section
-            on "quote" in the DBI manpage) unless VALUE is a number
-            and the column type (see the dbdef_column manpage) does
-            not end in `char' or `binary'.
-
-    hfields TABLE
-            This is depriciated. Don't use it.
-
-            It returns a hash-type list with the fields of this
-            record's table set true.
-
-VERSION
-        $Id: Record.txt,v 1.5 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-        This module should probably be renamed, since much of the
-        functionality is of general use. It is not completely unlike
-        Adapter::DBI (see below).
-
-        Exported qsearch and qsearchs should be depriciated in favor
-        of method calls (against an FS::Record object like the old
-        search and searchs that qsearch and qsearchs were on top
-        of.)
-
-        The whole fields / hfields mess should be removed.
-
-        The various WHERE clauses should be subroutined.
-
-        table string should be depriciated in favor of
-        FS::dbdef_table.
-
-        No doubt we could benefit from a Tied hash. Documenting how
-        exists / defined true maps to the database (and WHERE
-        clauses) would also help.
-
-        The ut_ methods should ask the dbdef for a default length.
-
-        ut_sqltype (like ut_varchar) should all be defined
-
-        A fallback check method should be provided whith uses the
-        dbdef.
-
-        The ut_money method assumes money has two decimal digits.
-
-        The Pg money kludge in the new method only strips `$'.
-
-        The ut_phonen method assumes US-style phone numbers.
-
-        The _quote function should probably use ut_float instead of
-        a regex.
-
-        All the subroutines probably should be methods, here or
-        elsewhere.
-
-        Probably should borrow/use some dbdef methods where
-        appropriate (like sub fields)
-
-SEE ALSO
-        the FS::dbdef manpage, the FS::UID manpage, the DBI manpage
-
-        Adapter::DBI from Ch. 11 of Advanced Perl Programming by
-        Sriram Srinivasan.
-
-HISTORY
-        ivan@voicenet.com 97-jun-2 - 9, 19, 25, 27, 30
-
-        DBI version ivan@sisd.com 97-nov-8 - 12
-
-        cleaned up, added autoloaded $self->any_field calls, moved
-        DBI login stuff to FS::UID ivan@sisd.com 97-nov-21-23
-
-        since AUTO_INCREMENT is MySQL specific, use my own unique
-        number generator (again) ivan@sisd.com 97-dec-4
-
-        untaint $user in unique (web demo hack...bah) make unique
-        skip multiple-field unique's from dbdef ivan@sisd.com 97-
-        dec-11
-
-        merge with FS::Search, which after all was just alternate
-        constructors for FS::Record objects. Makes lots of things
-        cleaner. :) ivan@sisd.com 97-dec-13
-
-        use FS::dbdef::primary key in replace searches, hopefully
-        for all practical purposes the string/number problem in SQL
-        statements should be gone? (SQL bites) ivan@sisd.com 98-jan-
-        20
-
-        Put all SQL statments in $statment before we $sth=$dbh-
-        >prepare( them, for debugging reasons (warn $statement)
-        ivan@sisd.com 98-feb-19
-
-        (sigh)... use dbdef type (char, etc.) instead of a regex to
-        decide what to quote in _quote (more sillines...) SQL bites.
-        ivan@sisd.com 98-feb-20
-
-        more friendly error messages ivan@sisd.com 98-mar-13
-
-        Added import of datasrc from FS::UID to allow Pg6.3 to work
-        Added code to right-trim strings read from Pg6.3 databases
-        Modified 'add' to only insert fields that actually have data
-        Added ut_float to handle floating point numbers (for sales
-        tax). Pg6.3 does not have a "SHOW FIELDS" statement, so I
-        faked it 8). bmccane@maxbaud.net 98-apr-3
-
-        commented out Pg wrapper around `` Modified 'add' to only
-        insert fields that actually have data '' ivan@sisd.com 98-
-        apr-16
-
-        dbdef usage changes ivan@sisd.com 98-jun-1
-
-        sub fields now asks dbdef, not database ivan@sisd.com 98-
-        jun-2
-
-        added debugging method ->_dump ivan@sisd.com 98-jun-16
-
-        use FS::dbdef::primary key in delete searches as well as
-        replace searches (SQL still bites) ivan@sisd.com 98-jun-22
-
-        sub dbdef_table ivan@sisd.com 98-jun-28
-
-        removed Pg wrapper around `` Modified 'add' to only insert
-        fields that actually have data '' ivan@sisd.com 98-jul-14
-
-        sub fields croaks on errors ivan@sisd.com 98-jul-17
-
-        $rc eq '0E0' doesn't mean we couldn't delete for all rdbmss
-        ivan@sisd.com 98-jul-18
-
-        commented out code to right-trim strings read from Pg6.3
-        databases; ChopBlanks is in UID.pm ivan@sisd.com 98-aug-16
-
-        added code (with Pg wrapper) to deal with Pg money fields
-        ivan@sisd.com 98-aug-18
-
-        added pod documentation ivan@sisd.com 98-sep-6
-
-        ut_phonen got ''; at the end ivan@sisd.com 98-sep-27
-
-        $Log: Record.txt,v $
-        Revision 1.5  1999-04-08 13:39:31  ivan
-        convert from pod for 1.2.0 release
- Revision 1.15 1999/04/08 12:08:59 ivan
-        fix up PostgreSQL money fields so you can actually use them
-        as numbers. bah.
-
-        Revision 1.14 1999/04/07 14:58:31 ivan more kludges to get
-        around different null/empty handling in Perl vs. MySQL vs.
-        PostgreSQL etc.
-
-        Revision 1.13 1999/03/29 11:55:43 ivan eliminate warnings in
-        ut_money
-
-        Revision 1.12 1999/01/25 12:26:06 ivan yet more mod_perl
-        stuff
-
-        Revision 1.11 1999/01/18 09:22:38 ivan changes to track
-        email addresses for email invoicing
-
-        Revision 1.10 1998/12/29 11:59:33 ivan mostly properly OO,
-        some work still to be done with svc_ stuff
-
-        Revision 1.9 1998/11/21 07:26:45 ivan "Records identical"
-        carp tells us it is just a warning.
-
-        Revision 1.8 1998/11/15 11:02:04 ivan bugsquash
-
-        Revision 1.7 1998/11/15 10:56:31 ivan qsearch gets sames "IS
-        NULL" semantics as other WHERE clauses
-
-        Revision 1.6 1998/11/15 05:31:03 ivan bugfix for new config
-        layout
-
-        Revision 1.5 1998/11/13 09:56:51 ivan change configuration
-        file layout to support multiple distinct databases (with own
-        set of config files, export, etc.)
-
-        Revision 1.4 1998/11/10 07:45:25 ivan doc clarification
-
-        Revision 1.2 1998/11/07 05:17:18 ivan In sub new, Pg wrapper
-        for money fields from dbdef (FS::Record::fields $table), not
-        keys of supplied hashref.
-
diff --git a/htdocs/docs/man/SSH.txt b/htdocs/docs/man/SSH.txt
deleted file mode 100644 (file)
index b6d205b..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-NAME
-    FS::SSH - Subroutines to call ssh and scp
-
-SYNOPSIS
-      use FS::SSH qw(ssh scp issh iscp sshopen2 sshopen3);
-
-      ssh($host, $command);
-
-      issh($host, $command);
-
-      scp($source, $destination);
-
-      iscp($source, $destination);
-
-      sshopen2($host, $reader, $writer, $command);
-
-      sshopen3($host, $reader, $writer, $error, $command);
-
-DESCRIPTION
-      Simple wrappers around ssh and scp commands.
-
-SUBROUTINES
-    ssh HOST, COMMAND
-        Calls ssh in batch mode.
-
-    issh HOST, COMMAND
-        Prints the ssh command to be executed, waits for the user to
-        confirm, and (optionally) executes the command.
-
-    scp SOURCE, DESTINATION
-        Calls scp in batch mode.
-
-    iscp SOURCE, DESTINATION
-        Prints the scp command to be executed, waits for the user to
-        confirm, and (optionally) executes the command.
-
-    sshopen2 HOST, READER, WRITER, COMMAND
-        Connects the supplied filehandles to the ssh process (in
-        batch mode).
-
-    sshopen3 HOST, WRITER, READER, ERROR, COMMAND
-        Connects the supplied filehandles to the ssh process (in
-        batch mode).
-
-BUGS
-        Not OO.
-
-        scp stuff should transparantly use rsync-over-ssh instead.
-
-SEE ALSO
-        the ssh manpage, the scp manpage, the IPC::Open2 manpage,
-        the IPC::Open3 manpage
-
-HISTORY
-        ivan@voicenet.com 97-jul-17
-
-        added sshopen2 and sshopen3 ivan@sisd.com 98-mar-9
-
-        added iscp ivan@sisd.com 98-jul-25 now iscp asks y/n, issh
-        and took out path ivan@sisd.com 98-jul-30
-
-        pod ivan@sisd.com 98-sep-21
-
diff --git a/htdocs/docs/man/UID.txt b/htdocs/docs/man/UID.txt
deleted file mode 100644 (file)
index efe3b66..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-NAME
-    FS::UID - Subroutines for database login and assorted other
-    stuff
-
-SYNOPSIS
-      use FS::UID qw(adminsuidsetup cgisuidsetup dbh datasrc getotaker
-      checkeuid checkruid swapuid);
-
-      adminsuidsetup $user;
-
-      $cgi = new CGI;
-      $dbh = cgisuidsetup($cgi);
-
-      $dbh = dbh;
-
-      $datasrc = datasrc;
-
-DESCRIPTION
-    Provides a hodgepodge of subroutines.
-
-SUBROUTINES
-    adminsuidsetup USER
-        Sets the user to USER (see config.html from the base
-        documentation). Cleans the environment. Make sure the script
-        is running as freeside, or setuid freeside. Opens a
-        connection to the database. Swaps real and effective UIDs.
-        Runs any defined callbacks (see below). Returns the DBI
-        database handle (usually you don't need this).
-
-    cgisuidsetup CGI_object
-        Stores the CGI (see the CGI manpage) object for later use.
-        (CGI::Base is depriciated) Runs adminsuidsetup.
-
-    cgi Returns the CGI (see the CGI manpage) object.
-
-    dbh Returns the DBI database handle.
-
-    datasrc
-        Returns the DBI data source.
-
-    getotaker
-        Returns the current Freeside user.
-
-    cgisetotaker
-        Sets and returns the CGI REMOTE_USER. $cgi should be defined
-        as a CGI.pm object. Support for CGI::Base and derived
-        classes is depriciated.
-
-    checkeuid
-        Returns true if effective UID is that of the freeside user.
-
-    checkruid
-        Returns true if the real UID is that of the freeside user.
-
-    swapuid
-        Swaps real and effective UIDs.
-
-    getsecrets [ USER ]
-        Sets the user to USER, if supplied. Sets and returns the DBI
-        datasource, username and password for this user from the
-        `/usr/local/etc/freeside/mapsecrets' file.
-
-CALLBACKS
-    Warning: this interface is likely to change in future releases.
-
-    A package can install a callback to be run in adminsuidsetup by
-    putting a coderef into the hash %FS::UID::callback :
-
-        $coderef = sub { warn "Hi, I'm returning your call!" };
-        $FS::UID::callback{'Package::Name'};
-
-VERSION
-    $Id: UID.txt,v 1.4 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-    Too many package-global variables.
-
-    Not OO.
-
-    No capabilities yet. When mod_perl and Authen::DBI are
-    implemented, cgisuidsetup will go away as well.
-
-    Goes through contortions to support non-OO syntax with multiple
-    datasrc's.
-
-    Callbacks are inelegant.
-
-SEE ALSO
-    the FS::Record manpage, the CGI manpage, the DBI manpage,
-    config.html from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jun-4 - 9 untaint otaker ivan@voicenet.com
-    97-jul-7
-
-    generalize and auto-get uid (getotaker still needs to be db'ed)
-    ivan@sisd.com 97-nov-10
-
-    &cgisuidsetup logs into database. other cleaning. ivan@sisd.com
-    97-nov-22,23
-
-    &adminsuidsetup logs into database with otaker='freeside' (for
-    automated tasks like billing) ivan@sisd.com 97-dec-13
-
-    added sub datasrc for fs-setup ivan@sisd.com 98-feb-21
-
-    datasrc, user and pass now come from conf/secrets ivan@sisd.com
-    98-jun-28
-
-    added ChopBlanks to DBI call (see man DBI) ivan@sisd.com 98-aug-
-    16
-
-    pod, use FS::Conf, implemented cgisuidsetup as adminsuidsetup,
-    inlined suidsetup ivan@sisd.com 98-sep-12
-
-    $Log: UID.txt,v $
-    Revision 1.4  1999-04-08 13:39:31  ivan
-    convert from pod for 1.2.0 release
- Revision 1.8 1999/02/23 07:23:23 ivan oops,
-    don't comment out &swapuid in &adminsuidsetup!
-
-    Revision 1.7 1999/01/18 09:22:40 ivan changes to track email
-    addresses for email invoicing
-
-    Revision 1.6 1998/11/15 05:27:48 ivan bugfix for new
-    configuration layout
-
-    Revision 1.5 1998/11/15 00:51:51 ivan eliminated some warnings
-    on certain fatal errors (well, it is less confusing)
-
-    Revision 1.4 1998/11/13 09:56:52 ivan change configuration file
-    layout to support multiple distinct databases (with own set of
-    config files, export, etc.)
-
-    Revision 1.3 1998/11/08 10:45:42 ivan got sub cgi for FS::CGI
-
-    Revision 1.2 1998/11/08 09:38:43 ivan cgisuidsetup complains if
-    you pass it a isa CGI::Base instead of an isa CGI (first step in
-    migrating from CGI-modules to CGI.pm)
-
diff --git a/htdocs/docs/man/agent.txt b/htdocs/docs/man/agent.txt
deleted file mode 100644 (file)
index 13a4f0c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-NAME
-    FS::agent - Object methods for agent records
-
-SYNOPSIS
-      use FS::agent;
-
-      $record = new FS::agent \%hash;
-      $record = new FS::agent { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::agent object represents an agent. Every customer has an
-    agent. Agents can be used to track things like resellers or
-    salespeople. FS::agent inherits from FS::Record. The following
-    fields are currently supported:
-
-    agemtnum - primary key (assigned automatically for new agents)
-    agent - Text name of this agent
-    typenum - Agent type.  See the FS::agent_type manpage
-    prog - For future use.
-    freq - For future use.
-METHODS
-    new HASHREF
-        Creates a new agent. To add the agent to the database, see
-        the section on "insert".
-
-    insert
-        Adds this agent to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this agent from the database. Only agents with no
-        customers can be deleted. If there is an error, returns the
-        error, otherwise returns false.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid agent. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: agent.txt,v 1.3 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::agent_type manpage, the
-    FS::cust_main manpage, schema.html from the base documentation.
-
-HISTORY
-    Class dealing with agent (resellers)
-
-    ivan@sisd.com 97-nov-13, 97-dec-10
-
-    pod, added check in ->delete ivan@sisd.com 98-sep-22
-
diff --git a/htdocs/docs/man/agent_type.txt b/htdocs/docs/man/agent_type.txt
deleted file mode 100644 (file)
index 5983fee..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-NAME
-    FS::agent_type - Object methods for agent_type records
-
-SYNOPSIS
-      use FS::agent_type;
-
-      $record = new FS::agent_type \%hash;
-      $record = new FS::agent_type { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::agent_type object represents an agent type. Every agent
-    (see the FS::agent manpage) has an agent type. Agent types
-    define which packages (see the FS::part_pkg manpage) may be
-    purchased by customers (see the FS::cust_main manpage), via
-    FS::type_pkgs records (see the FS::type_pkgs manpage).
-    FS::agent_type inherits from FS::Record. The following fields
-    are currently supported:
-
-    typenum - primary key (assigned automatically for new agent types)
-    atype - Text name of this agent type
-METHODS
-    new HASHREF
-        Creates a new agent type. To add the agent type to the
-        database, see the section on "insert".
-
-    insert
-        Adds this agent type to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this agent type from the database. Only agent types
-        with no agents can be deleted. If there is an error, returns
-        the error, otherwise returns false.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid agent type.
-        If there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: agent_type.txt,v 1.3 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::agent manpage, the FS::type_pkgs
-    manpage, the FS::cust_main manpage, the FS::part_pkg manpage,
-    schema.html from the base documentation.
-
-HISTORY
-    Class for the different sets of allowable packages you can
-    assign to an agent.
-
-    ivan@sisd.com 97-nov-13
-
-    ut_ FS::Record methods ivan@sisd.com 97-dec-10
-
-    Changed 'type' to 'atype' because Pg6.3 reserves the type word
-    bmccane@maxbaud.net 98-apr-3
-
-    pod, added check in delete ivan@sisd.com 98-sep-21
-
-    $Log: agent_type.txt,v $
-    Revision 1.3  1999-04-08 13:39:31  ivan
-    convert from pod for 1.2.0 release
- Revision 1.2 1998/12/29 11:59:35 ivan
-    mostly properly OO, some work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/cust_bill.txt b/htdocs/docs/man/cust_bill.txt
deleted file mode 100644 (file)
index c118401..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-NAME
-    FS::cust_bill - Object methods for cust_bill records
-
-SYNOPSIS
-      use FS::cust_bill;
-
-      $record = new FS::cust_bill \%hash;
-      $record = new FS::cust_bill { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      ( $total_previous_balance, @previous_cust_bill ) = $record->previous;
-
-      @cust_bill_pkg_objects = $cust_bill->cust_bill_pkg;
-
-      ( $total_previous_credits, @previous_cust_credit ) = $record->cust_credit;
-
-      @cust_pay_objects = $cust_bill->cust_pay;
-
-      @lines = $cust_bill->print_text;
-      @lines = $cust_bill->print_text $time;
-
-DESCRIPTION
-    An FS::cust_bill object represents an invoice. FS::cust_bill
-    inherits from FS::Record. The following fields are currently
-    supported:
-
-    invnum - primary key (assigned automatically for new invoices)
-    custnum - customer (see the FS::cust_main manpage)
-    _date - specified as a UNIX timestamp; see the section on "time" in the perlfunc manpage.  Also see
-    the Time::Local manpage and the Date::Parse manpage for conversion functions.
-    charged - amount of this invoice
-    owed - amount still outstanding on this invoice, which is charged minus
-    all payments (see the FS::cust_pay manpage).
-    printed - how many times this invoice has been printed automatically
-    (see the section on "collect" in the FS::cust_main manpage).
-METHODS
-    new HASHREF
-        Creates a new invoice. To add the invoice to the database,
-        see the section on "insert". Invoices are normally created
-        by calling the bill method of a customer object (see the
-        FS::cust_main manpage).
-
-    insert
-        Adds this invoice to the database ("Posts" the invoice). If
-        there is an error, returns the error, otherwise returns
-        false.
-
-        When adding new invoices, owed must be charged (or null, in
-        which case it is automatically set to charged).
-
-    delete
-        Currently unimplemented. I don't remove invoices because
-        there would then be no record you ever posted this invoice
-        (which is bad, no?)
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-        Only owed and printed may be changed. Owed is normally
-        updated by creating and inserting a payment (see the
-        FS::cust_pay manpage). Printed is normally updated by
-        calling the collect method of a customer object (see the
-        FS::cust_main manpage).
-
-    check
-        Checks all fields to make sure this is a valid invoice. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-    previous
-        Returns a list consisting of the total previous balance for
-        this customer, followed by the previous outstanding invoices
-        (as FS::cust_bill objects also).
-
-    cust_bill_pkg
-        Returns the line items (see the FS::cust_bill_pkg manpage)
-        for this invoice.
-
-    cust_credit
-        Returns a list consisting of the total previous credited
-        (see the FS::cust_credit manpage) for this customer,
-        followed by the previous outstanding credits
-        (FS::cust_credit objects).
-
-    cust_pay
-        Returns all payments (see the FS::cust_pay manpage) for this
-        invoice.
-
-    print_text [TIME];
-        Returns an ASCII invoice, as a list of lines.
-
-        TIME an optional value used to control the printing of
-        overdue messages. The default is now. It isn't the date of
-        the invoice; that's the `_date' field. It is specified as a
-        UNIX timestamp; see the section on "time" in the perlfunc
-        manpage. Also see the Time::Local manpage and the
-        Date::Parse manpage for conversion functions.
-
-VERSION
-    $Id: cust_bill.txt,v 1.4 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-    The delete method.
-
-    print_text formatting (and some logic :/) is in source, but
-    needs to be slurped in from a file. Also number of lines ($=).
-
-    missing print_ps for a nice postscript copy (maybe HylaFAX-
-    cover-page-style or something similar so the look can be
-    completely customized?)
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_main manpage, the
-    FS::cust_pay manpage, the FS::cust_bill_pkg manpage, the
-    FS::cust_credit manpage, schema.html from the base
-    documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-1
-
-    small fix for new API ivan@sisd.com 98-mar-14
-
-    charges can be negative ivan@sisd.com 98-jul-13
-
-    pod, ingegrate with FS::Invoice ivan@sisd.com 98-sep-20
-
-    $Log: cust_bill.txt,v $
-    Revision 1.4  1999-04-08 13:39:31  ivan
-    convert from pod for 1.2.0 release
- Revision 1.7 1999/02/09 09:55:05 ivan
-    invoices show line items for each service in a package (see the
-    label method of FS::cust_svc)
-
-    Revision 1.6 1999/01/25 12:26:07 ivan yet more mod_perl stuff
-
-    Revision 1.5 1999/01/18 21:58:03 ivan esthetic: eq and ne were
-    used in a few places instead of == and !=
-
-    Revision 1.4 1998/12/29 11:59:36 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
-    Revision 1.3 1998/11/13 09:56:53 ivan change configuration file
-    layout to support multiple distinct databases (with own set of
-    config files, export, etc.)
-
-    Revision 1.2 1998/11/07 10:24:24 ivan don't use depriciated
-    FS::Bill and FS::Invoice, other miscellania
-
diff --git a/htdocs/docs/man/cust_bill_pkg.txt b/htdocs/docs/man/cust_bill_pkg.txt
deleted file mode 100644 (file)
index d725c94..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-NAME
-    FS::cust_bill_pkg - Object methods for cust_bill_pkg records
-
-SYNOPSIS
-      use FS::cust_bill_pkg;
-
-      $record = new FS::cust_bill_pkg \%hash;
-      $record = new FS::cust_bill_pkg { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_bill_pkg object represents an invoice line item.
-    FS::cust_bill_pkg inherits from FS::Record. The following fields
-    are currently supported:
-
-    invnum - invoice (see the FS::cust_bill manpage)
-    pkgnum - package (see the FS::cust_pkg manpage)
-    setup - setup fee
-    recur - recurring fee
-    sdate - starting date of recurring fee
-    edate - ending date of recurring fee
-    sdate and edate are specified as UNIX timestamps; see the
-    section on "time" in the perlfunc manpage. Also see the
-    Time::Local manpage and the Date::Parse manpage for conversion
-    functions.
-
-METHODS
-    new HASHREF
-        Creates a new line item. To add the line item to the
-        database, see the section on "insert". Line items are
-        normally created by calling the bill method of a customer
-        object (see the FS::cust_main manpage).
-
-    insert
-        Adds this line item to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Currently unimplemented. I don't remove line items because
-        there would then be no record the items ever existed (which
-        is bad, no?)
-
-    replace OLD_RECORD
-        Currently unimplemented. This would be even more of an
-        accounting nightmare than deleteing the items. Just don't do
-        it.
-
-    check
-        Checks all fields to make sure this is a valid line item. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert method.
-
-VERSION
-    $Id: cust_bill_pkg.txt,v 1.3 1999-04-08 13:39:31 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::cust_bill manpage, the
-    FS::cust_pkg manpage, the FS::cust_main manpage, schema.html
-    from the base documentation.
-
-HISTORY
-    ivan@sisd.com 98-mar-13
-
-    pod ivan@sisd.com 98-sep-21
-
diff --git a/htdocs/docs/man/cust_credit.txt b/htdocs/docs/man/cust_credit.txt
deleted file mode 100644 (file)
index c26c1fb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-NAME
-    FS::cust_credit - Object methods for cust_credit records
-
-SYNOPSIS
-      use FS::cust_credit;
-
-      $record = new FS::cust_credit \%hash;
-      $record = new FS::cust_credit { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_credit object represents a credit. FS::cust_credit
-    inherits from FS::Record. The following fields are currently
-    supported:
-
-    crednum - primary key (assigned automatically for new credits)
-    custnum - customer (see the FS::cust_main manpage)
-    amount - amount of the credit
-    credited - how much of this credit that is still outstanding, which is
-    amount minus all refunds (see the FS::cust_refund manpage).
-    _date - specified as a UNIX timestamp; see the section on "time" in the perlfunc manpage.  Also see
-    the Time::Local manpage and the Date::Parse manpage for conversion functions.
-    otaker - order taker (assigned automatically, see the FS::UID manpage)
-    reason - text
-METHODS
-    new HASHREF
-        Creates a new credit. To add the credit to the database, see
-        the section on "insert".
-
-    insert
-        Adds this credit to the database ("Posts" the credit). If
-        there is an error, returns the error, otherwise returns
-        false.
-
-        When adding new invoices, credited must be amount (or null,
-        in which case it is automatically set to amount).
-
-    delete
-        Currently unimplemented.
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-        Only credited may be changed. Credited is normally updated
-        by creating and inserting a refund (see the FS::cust_refund
-        manpage).
-
-    check
-        Checks all fields to make sure this is a valid credit. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: cust_credit.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The delete method.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_refund manpage, the
-    FS::cust_bill manpage, schema.html from the base documentation.
-
-HISTORY
-    ivan@sisd.com 98-mar-17
-
-    pod, otaker from FS::UID ivan@sisd.com 98-sep-21
-
-    $Log: cust_credit.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.4 1999/01/25 12:26:08 ivan
-    yet more mod_perl stuff
-
-    Revision 1.3 1999/01/18 21:58:04 ivan esthetic: eq and ne were
-    used in a few places instead of == and !=
-
-    Revision 1.2 1998/12/29 11:59:38 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/cust_main.txt b/htdocs/docs/man/cust_main.txt
deleted file mode 100644 (file)
index bef2b9d..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-NAME
-    FS::cust_main - Object methods for cust_main records
-
-SYNOPSIS
-      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',
-                              ;
-
-DESCRIPTION
-    An FS::cust_main object represents a customer. FS::cust_main
-    inherits from FS::Record. The following fields are currently
-    supported:
-
-    custnum - primary key (assigned automatically for new customers)
-    agentnum - agent (see the FS::agent manpage)
-    refnum - referral (see the FS::part_referral manpage)
-    first - name
-    last - name
-    ss - social security number (optional)
-    company - (optional)
-    address1
-    address2 - (optional)
-    city
-    county - (optional, see the FS::cust_main_county manpage)
-    state - (see the FS::cust_main_county manpage)
-    zip
-    country - (see the FS::cust_main_county manpage)
-    daytime - phone (optional)
-    night - phone (optional)
-    payby - `CARD' (credit cards), `BILL' (billing), or `COMP' (free)
-    payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)
-    paydate - expiration date, mm/yyyy, m/yyyy, mm/yy or m/yy
-    payname - name on card or billing name
-    tax - tax exempt, empty or `Y'
-    otaker - order taker (assigned automatically, see the FS::UID manpage)
-METHODS
-    new HASHREF
-        Creates a new customer. To add the customer to the database,
-        see the section on "insert".
-
-        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.
-
-    insert
-        Adds this customer to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Currently unimplemented. Maybe cancel all of this customer's
-        packages (cust_pkg)?
-
-        I don't remove the customer record in the database because
-        there would then be no record the customer ever existed
-        (which is bad, no?)
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-    check
-        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.
-
-    all_pkgs
-        Returns all packages (see the FS::cust_pkg manpage) for this
-        customer.
-
-    ncancelled_pkgs
-        Returns all non-cancelled packages (see the FS::cust_pkg
-        manpage) for this customer.
-
-    bill OPTIONS
-        Generates invoices (see the FS::cust_bill manpage) for this
-        customer. Usually used in conjunction with the collect
-        method.
-
-        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 the section on "time" in the perlfunc
-        manpage). 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.
-
-    collect OPTIONS
-        (Attempt to) collect money for this customer's outstanding
-        invoices (see the FS::cust_bill manpage). Usually used after
-        the bill method.
-
-        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 the section on
-        "time" in the perlfunc manpage). 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.
-
-    total_owed
-        Returns the total owed for this customer on all invoices
-        (see the FS::cust_bill manpage).
-
-    total_credited
-        Returns the total credits (see the FS::cust_credit manpage)
-        for this customer.
-
-    balance
-        Returns the balance for this customer (total owed minus
-        total credited).
-
-    invoicing_list [ ARRAYREF ]
-        If an arguement is given, sets these email addresses as
-        invoice recipients (see the FS::cust_main_invoice manpage).
-        Errors are not fatal and are not reported (except as
-        warnings), so use check_invoicing_list first.
-
-        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.
-
-    check_invoicing_list ARRAYREF
-        Checks these arguements as valid input for the
-        invoicing_list method. If there is an error, returns the
-        error, otherwise returns false.
-
-VERSION
-    $Id: cust_main.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The delete method.
-
-    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).
-
-SEE ALSO
-    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.
-
-HISTORY
-    ivan@voicenet.com 97-jul-28
-
-    Changed to standard Business::CreditCard no more TableUtil
-    EXPORT_OK FS::Record's hfields removed unique calls and locking
-    (not needed here now) wrapped the (now) optional fields in if
-    statements in sub check (notyetdone!) ivan@sisd.com 97-nov-12
-
-    updated paydate with SQL-type date info ivan@sisd.com 98-mar-5
-
-    Added export of datasrc from UID.pm for Pg6.3 changed 'day' to
-    'daytime' because Pg6.3 reserves the day word
-    bmccane@maxbaud.net 98-apr-3
-
-    in ->create, s/svc_acct/cust_main/, now it should actually
-    eliminate the warnings it was meant to ivan@sisd.com 98-jul-16
-
-    don't require a phone number and allow '/' in company names
-    ivan@sisd.com 98-jul-18
-
-    use ut_ and rewrite &check, &*_pkgs ivan@sisd.com 98-sep-5
-
-    pod, merge with FS::Bill (about time!), total_owed,
-    total_credited and balance methods, cleaned collect method,
-    source modifications no longer necessary to enable cybercash,
-    cybercash v3 support, don't need to import
-    FS::UID::{datasrc,checkruid} ivan@sisd.com 98-sep-19-21
-
-    $Log: cust_main.txt,v $
-    Revision 1.4  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.16 1999/04/07 14:32:19 ivan
-    more &invoicing_list logic to skip searches when there is no
-    custnum
-
-    Revision 1.15 1999/04/07 13:41:54 ivan in &invoicing_list, don't
-    search if there's no custnum yet
-
-    Revision 1.14 1999/03/29 12:06:15 ivan buglet in email invoices
-    fixed
-
-    Revision 1.13 1999/02/28 20:09:03 ivan allow spaces in zip
-    codes, for (at least) canada. pointed out by Clayton Gray
-    <clgray@bcgroup.net>
-
-    Revision 1.12 1999/02/27 21:24:22 ivan parse paydate correctly
-    for cybercash
-
-    Revision 1.11 1999/02/23 08:09:27 ivan beginnings of one-screen
-    new customer entry and some other miscellania
-
-    Revision 1.10 1999/01/25 12:26:09 ivan yet more mod_perl stuff
-
-    Revision 1.9 1999/01/18 09:22:41 ivan changes to track email
-    addresses for email invoicing
-
-    Revision 1.8 1998/12/29 11:59:39 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
-    Revision 1.7 1998/12/16 09:58:52 ivan library support for
-    editing email invoice destinations (not in sub collect yet)
-
-    Revision 1.6 1998/11/18 09:01:42 ivan i18n! i18n!
-
-    Revision 1.5 1998/11/15 11:23:14 ivan use FS::table_name for all
-    searches to eliminate warnings, emit state/county when they
-    don't match
-
-    Revision 1.4 1998/11/15 05:30:48 ivan bugfix for new config
-    layout
-
-    Revision 1.3 1998/11/13 09:56:54 ivan change configuration file
-    layout to support multiple distinct databases (with own set of
-    config files, export, etc.)
-
-    Revision 1.2 1998/11/07 10:24:25 ivan don't use depriciated
-    FS::Bill and FS::Invoice, other miscellania
-
diff --git a/htdocs/docs/man/cust_main_county.txt b/htdocs/docs/man/cust_main_county.txt
deleted file mode 100644 (file)
index 9a4a60e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-NAME
-    FS::cust_main_county - Object methods for cust_main_county
-    objects
-
-SYNOPSIS
-      use FS::cust_main_county;
-
-      $record = new FS::cust_main_county \%hash;
-      $record = new FS::cust_main_county { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_main_county object represents a tax rate, defined by
-    locale. FS::cust_main_county inherits from FS::Record. The
-    following fields are currently supported:
-
-    taxnum - primary key (assigned automatically for new tax rates)
-    state
-    county
-    country
-    tax - percentage
-METHODS
-    new HASHREF
-        Creates a new tax rate. To add the tax rate to the database,
-        see the section on "insert".
-
-    insert
-        Adds this tax rate to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this tax rate from the database. If there is an
-        error, returns the error, otherwise returns false.
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-    check
-        Checks all fields to make sure this is a valid tax rate. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: cust_main_county.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::cust_main manpage, the
-    FS::cust_bill manpage, schema.html from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-dec-16
-
-    Changed check for 'tax' to use the new ut_float subroutine
-    bmccane@maxbaud.net 98-apr-3
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: cust_main_county.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1998/12/29 11:59:41
-    ivan mostly properly OO, some work still to be done with svc_
-    stuff
-
-    Revision 1.2 1998/11/18 09:01:43 ivan i18n! i18n!
-
diff --git a/htdocs/docs/man/cust_main_invoice.txt b/htdocs/docs/man/cust_main_invoice.txt
deleted file mode 100644 (file)
index 5d50a9f..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-NAME
-    FS::cust_main_invoice - Object methods for cust_main_invoice
-    records
-
-SYNOPSIS
-      use FS::cust_main_invoice;
-
-      $record = new FS::cust_main_invoice \%hash;
-      $record = new FS::cust_main_invoice { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      $email_address = $record->address;
-
-DESCRIPTION
-    An FS::cust_main_invoice object represents an invoice
-    destination. FS::cust_main_invoice inherits from FS::Record. The
-    following fields are currently supported:
-
-    destnum - primary key
-    custnum - customer (see the FS::cust_main manpage)
-    dest - Invoice destination: If numeric, a <a href="#svc_acct">svcnum</a>, if string, a literal email address, or `POST' to enable mailing (the default if no cust_main_invoice records exist)
-METHODS
-    new HASHREF
-        Creates a new invoice destination. To add the invoice
-        destination to the database, see the section on "insert".
-
-        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.
-
-    insert
-        Adds this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Delete this record from the database.
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-    check
-        Checks all fields to make sure this is a valid invoice
-        destination. If there is an error, returns the error,
-        otherwise returns false. Called by the insert and repalce
-        methods.
-
-    checkdest
-        Checks the dest field only.
-
-    address
-        Returns the literal email address for this record (or
-        `POST').
-
-VERSION
-    $Id: cust_main_invoice.txt,v 1.1 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::cust_main manpage
-
-HISTORY
-    ivan@voicenet.com 97-jul-1
-
-    added hfields ivan@sisd.com 97-nov-13
-
-    $Log: cust_main_invoice.txt,v $
-    Revision 1.1  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.6 1999/01/25 12:26:10
-    ivan yet more mod_perl stuff
-
-    Revision 1.5 1999/01/18 21:58:05 ivan esthetic: eq and ne were
-    used in a few places instead of == and !=
-
-    Revision 1.4 1999/01/18 09:22:42 ivan changes to track email
-    addresses for email invoicing
-
-    Revision 1.3 1998/12/29 11:59:42 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
-    Revision 1.2 1998/12/16 09:58:53 ivan library support for
-    editing email invoice destinations (not in sub collect yet)
-
-    Revision 1.1 1998/12/16 07:40:02 ivan new table
-
-    Revision 1.3 1998/11/15 04:33:00 ivan updates for newest versoin
-
-    Revision 1.2 1998/11/15 03:48:49 ivan update for current version
-
diff --git a/htdocs/docs/man/cust_pay.txt b/htdocs/docs/man/cust_pay.txt
deleted file mode 100644 (file)
index 14843d0..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-NAME
-    FS::cust_pay - Object methods for cust_pay objects
-
-SYNOPSIS
-      use FS::cust_pay;
-
-      $record = new FS::cust_pay \%hash;
-      $record = new FS::cust_pay { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_pay object represents a payment. FS::cust_pay
-    inherits from FS::Record. The following fields are currently
-    supported:
-
-    paynum - primary key (assigned automatically for new payments)
-    invnum - Invoice (see the FS::cust_bill manpage)
-    paid - Amount of this payment
-    _date - specified as a UNIX timestamp; see the section on "time" in the perlfunc manpage.  Also see
-    the Time::Local manpage and the Date::Parse manpage for conversion functions.
-    payby - `CARD' (credit cards), `BILL' (billing), or `COMP' (free)
-    payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)
-    paybatch - text field for tracking card processing
-METHODS
-    new HASHREF
-        Creates a new payment. To add the payment to the databse,
-        see the section on "insert".
-
-    insert
-        Adds this payment to the databse, and updates the invoice
-        (see the FS::cust_bill manpage).
-
-    delete
-        Currently unimplemented (accounting reasons).
-
-    replace OLD_RECORD
-        Currently unimplemented (accounting reasons).
-
-    check
-        Checks all fields to make sure this is a valid payment. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert method.
-
-VERSION
-    $Id: cust_pay.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    Delete and replace methods.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_bill manpage, schema.html
-    from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-1 - 25 - 29
-
-    new api ivan@sisd.com 98-mar-13
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: cust_pay.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/01/25 12:26:11 ivan yet
-    more mod_perl stuff
-
-    Revision 1.2 1998/12/29 11:59:43 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/cust_pay_batch.txt b/htdocs/docs/man/cust_pay_batch.txt
deleted file mode 100644 (file)
index 2d62678..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-NAME
-    FS::cust_pay_batch - Object methods for batch cards
-
-SYNOPSIS
-      use FS::cust_pay_batch;
-
-      $record = new FS::cust_pay_batch \%hash;
-      $record = new FS::cust_pay_batch { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_pay_batch object represents a credit card
-    transaction ready to be batched (sent to a processor).
-    FS::cust_pay_batch inherits from FS::Record. Typically called by
-    the collect method of an FS::cust_main object. The following
-    fields are currently supported:
-
-    trancode - 77 for charges
-    cardnum
-    exp - card expiration
-    amount
-    invnum - invoice
-    custnum - customer
-    payname - name on card
-    first - name
-    last - name
-    address1
-    address2
-    city
-    state
-    zip
-    country
-METHODS
-    new HASHREF
-        Creates a new record. To add the record to the database, see
-        the section on "insert".
-
-        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.
-
-    insert
-        Adds this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Delete this record from the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    replace OLD_RECORD
-        #inactive # #Replaces the OLD_RECORD with this one in the
-        database. If there is an error, #returns the error,
-        otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid transaction.
-        If there is an error, returns the error, otherwise returns
-        false. Called by the insert and repalce methods.
-
-VERSION
-    $Id: cust_pay_batch.txt,v 1.1 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    There should probably be a configuration file with a list of
-    allowed credit card types.
-
-SEE ALSO
-    the FS::cust_main manpage, the FS::Record manpage
-
-HISTORY
-    ivan@voicenet.com 97-jul-1
-
-    added hfields ivan@sisd.com 97-nov-13
-
-    $Log: cust_pay_batch.txt,v $
-    Revision 1.1  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1998/12/29 11:59:44
-    ivan mostly properly OO, some work still to be done with svc_
-    stuff
-
-    Revision 1.2 1998/11/18 09:01:44 ivan i18n! i18n!
-
-    Revision 1.1 1998/11/15 05:19:58 ivan long overdue
-
-    Revision 1.3 1998/11/15 04:33:00 ivan updates for newest versoin
-
-    Revision 1.2 1998/11/15 03:48:49 ivan update for current version
-
diff --git a/htdocs/docs/man/cust_pkg.txt b/htdocs/docs/man/cust_pkg.txt
deleted file mode 100644 (file)
index 3954031..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-NAME
-    FS::cust_pkg - Object methods for cust_pkg objects
-
-SYNOPSIS
-      use FS::cust_pkg;
-
-      $record = new FS::cust_pkg \%hash;
-      $record = new FS::cust_pkg { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      $error = $record->cancel;
-
-      $error = $record->suspend;
-
-      $error = $record->unsuspend;
-
-      $part_pkg = $record->part_pkg;
-
-      @labels = $record->labels;
-
-      $error = FS::cust_pkg::order( $custnum, \@pkgparts );
-      $error = FS::cust_pkg::order( $custnum, \@pkgparts, \@remove_pkgnums ] );
-
-DESCRIPTION
-    An FS::cust_pkg object represents a customer billing item.
-    FS::cust_pkg inherits from FS::Record. The following fields are
-    currently supported:
-
-    pkgnum - primary key (assigned automatically for new billing items)
-    custnum - Customer (see the FS::cust_main manpage)
-    pkgpart - Billing item definition (see the FS::part_pkg manpage)
-    setup - date
-    bill - date
-    susp - date
-    expire - date
-    cancel - date
-    otaker - order taker (assigned automatically if null, see the FS::UID manpage)
-    Note: setup, bill, susp, expire and cancel are specified as UNIX
-    timestamps; see the section on "time" in the perlfunc manpage.
-    Also see the Time::Local manpage and the Date::Parse manpage for
-    conversion functions.
-
-METHODS
-    new HASHREF
-        Create a new billing item. To add the item to the database,
-        see the section on "insert".
-
-    insert
-        Adds this billing item to the database ("Orders" the item).
-        If there is an error, returns the error, otherwise returns
-        false.
-
-        sub insert { my $self = shift;
-
-          # custnum might not have have been defined in sub check (for one-shot new
-          # customers), so check it here instead
-
-          my $error = $self->ut_number('custnum');
-          return $error if $error
-
-          return "Unknown customer"
-            unless qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
-
-          $self->SUPER::insert;
-
-        }
-
-    delete
-        Currently unimplemented. You don't want to delete billing
-        items, because there would then be no record the customer
-        ever purchased the item. Instead, see the cancel method.
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-        Currently, custnum, setup, bill, susp, expire, and cancel
-        may be changed.
-
-        Changing pkgpart may have disasterous effects. See the order
-        subroutine.
-
-        setup and bill are normally updated by calling the bill
-        method of a customer object (see the FS::cust_main manpage).
-
-        suspend is normally updated by the suspend and unsuspend
-        methods.
-
-        cancel is normally updated by the cancel method (and also
-        the order subroutine in some cases).
-
-    check
-        Checks all fields to make sure this is a valid billing item.
-        If there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-    cancel
-        Cancels and removes all services (see the FS::cust_svc
-        manpage and the FS::part_svc manpage) in this package, then
-        cancels the package itself (sets the cancel field to now).
-
-        If there is an error, returns the error, otherwise returns
-        false.
-
-    suspend
-        Suspends all services (see the FS::cust_svc manpage and the
-        FS::part_svc manpage) in this package, then suspends the
-        package itself (sets the susp field to now).
-
-        If there is an error, returns the error, otherwise returns
-        false.
-
-    unsuspend
-        Unsuspends all services (see the FS::cust_svc manpage and
-        the FS::part_svc manpage) in this package, then unsuspends
-        the package itself (clears the susp field).
-
-        If there is an error, returns the error, otherwise returns
-        false.
-
-    part_pkg
-        Returns the definition for this billing item, as an
-        FS::part_pkg object (see L<FS::part_pkg).
-
-    labels
-        Returns a list of lists, calling the label method for all
-        services (see the FS::cust_svc manpage) of this billing
-        item.
-
-SUBROUTINES
-    order CUSTNUM, PKGPARTS_ARYREF, [ REMOVE_PKGNUMS_ARYREF ]
-        CUSTNUM is a customer (see the FS::cust_main manpage)
-
-        PKGPARTS is a list of pkgparts specifying the the billing
-        item definitions (see the FS::part_pkg manpage) to order for
-        this customer. Duplicates are of course permitted.
-
-        REMOVE_PKGNUMS is an optional list of pkgnums specifying the
-        billing items to remove for this customer. The services (see
-        the FS::cust_svc manpage) are moved to the new billing
-        items. An error is returned if this is not possible (see the
-        FS::pkg_svc manpage).
-
-VERSION
-    $Id: cust_pkg.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    sub order is not OO. Perhaps it should be moved to FS::cust_main
-    and made so?
-
-    In sub order, the @pkgparts array (passed by reference) is
-    clobbered.
-
-    Also in sub order, no money is adjusted. Once FS::part_pkg
-    defines a standard method to pass dates to the recur_prog
-    expression, it should do so.
-
-    FS::svc_acct, FS::svc_acct_sm, and FS::svc_domain are loaded via
-    'use' at compile time, rather than via 'require' in sub { setup,
-    suspend, unsuspend, cancel } because they use %FS::UID::callback
-    to load configuration values. Probably need a subroutine which
-    decides what to do based on whether or not we've fetched the
-    user yet, rather than a hash. See FS::UID and the TODO.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_main manpage, the
-    FS::part_pkg manpage, the FS::cust_svc manpage , the FS::pkg_svc
-    manpage, schema.html from the base documentation
-
-HISTORY
-    ivan@voicenet.com 97-jul-1 - 21
-
-    fixed for new agent->agent_type->type_pkgs in &order
-    ivan@sisd.com 98-mar-7
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: cust_pkg.txt,v $
-    Revision 1.4  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.9 1999/03/29 01:11:51 ivan use
-    FS::type_pkgs
-
-    Revision 1.8 1999/03/25 13:48:14 ivan allow empty custnum in sub
-    check (but call that an error in sub insert), for one-screen new
-    customer entry
-
-    Revision 1.7 1999/02/09 09:55:06 ivan invoices show line items
-    for each service in a package (see the label method of
-    FS::cust_svc)
-
-    Revision 1.6 1999/01/25 12:26:12 ivan yet more mod_perl stuff
-
-    Revision 1.5 1999/01/18 21:58:07 ivan esthetic: eq and ne were
-    used in a few places instead of == and !=
-
-    Revision 1.4 1998/12/29 11:59:45 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
-    Revision 1.3 1998/11/15 13:01:35 ivan allow pkgpart changing
-    (for per-customer custom pricing). warn about it in doc
-
-    Revision 1.2 1998/11/12 03:42:45 ivan added label method
-
diff --git a/htdocs/docs/man/cust_refund.txt b/htdocs/docs/man/cust_refund.txt
deleted file mode 100644 (file)
index a982ca6..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-NAME
-    FS::cust_refund - Object method for cust_refund objects
-
-SYNOPSIS
-      use FS::cust_refund;
-
-      $record = new FS::cust_refund \%hash;
-      $record = new FS::cust_refund { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::cust_refund represents a refund. FS::cust_refund inherits
-    from FS::Record. The following fields are currently supported:
-
-    refundnum - primary key (assigned automatically for new refunds)
-    crednum - Credit (see the FS::cust_credit manpage)
-    refund - Amount of the refund
-    _date - specified as a UNIX timestamp; see the section on "time" in the perlfunc manpage.  Also see
-    the Time::Local manpage and the Date::Parse manpage for conversion functions.
-    payby - `CARD' (credit cards), `BILL' (billing), or `COMP' (free)
-    payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)
-    otaker - order taker (assigned automatically, see the FS::UID manpage)
-METHODS
-    new HASHREF
-        Creates a new refund. To add the refund to the database, see
-        the section on "insert".
-
-    insert
-        Adds this refund to the database, and updates the credit
-        (see the FS::cust_credit manpage).
-
-    delete
-        Currently unimplemented (accounting reasons).
-
-    replace OLD_RECORD
-        Currently unimplemented (accounting reasons).
-
-    check
-        Checks all fields to make sure this is a valid refund. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert method.
-
-VERSION
-    $Id: cust_refund.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    Delete and replace methods.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_credit manpage, schema.html
-    from the base documentation.
-
-HISTORY
-    ivan@sisd.com 98-mar-18
-
-    ->create had wrong tablename ivan@sisd.com 98-jun-16 (finish
-    me!)
-
-    pod and finish up ivan@sisd.com 98-sep-21
-
-    $Log: cust_refund.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/01/25 12:26:13 ivan
-    yet more mod_perl stuff
-
-    Revision 1.2 1998/12/29 11:59:46 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/cust_svc.txt b/htdocs/docs/man/cust_svc.txt
deleted file mode 100644 (file)
index 206d9d3..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-NAME
-    FS::cust_svc - Object method for cust_svc objects
-
-SYNOPSIS
-      use FS::cust_svc;
-
-      $record = new FS::cust_svc \%hash
-      $record = new FS::cust_svc { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      ($label, $value) = $record->label;
-
-DESCRIPTION
-    An FS::cust_svc represents a service. FS::cust_svc inherits from
-    FS::Record. The following fields are currently supported:
-
-    svcnum - primary key (assigned automatically for new services)
-    pkgnum - Package (see the FS::cust_pkg manpage)
-    svcpart - Service definition (see the FS::part_svc manpage)
-METHODS
-    new HASHREF
-        Creates a new service. To add the refund to the database,
-        see the section on "insert". Services are normally created
-        by creating FS::svc_ objects (see the FS::svc_acct manpage,
-        the FS::svc_domain manpage, and the FS::svc_acct_sm manpage,
-        among others).
-
-    insert
-        Adds this service to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this service from the database. If there is an
-        error, returns the error, otherwise returns false.
-
-        Called by the cancel method of the package (see the
-        FS::cust_pkg manpage).
-
-    replace OLD_RECORD
-        Replaces the OLD_RECORD with this one in the database. If
-        there is an error, returns the error, otherwise returns
-        false.
-
-    check
-        Checks all fields to make sure this is a valid service. If
-        there is an error, returns the error, otehrwise returns
-        false. Called by the insert and replace methods.
-
-    label
-        Returns a list consisting of: - The name of this service
-        (from part_svc) - A meaningful identifier (username, domain,
-        or mail alias) - The table name (i.e. svc_domain) for this
-        service
-
-VERSION
-    $Id: cust_svc.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    Behaviour of changing the svcpart of cust_svc records is
-    undefined and should possibly be prohibited, and pkg_svc records
-    are not checked.
-
-    pkg_svc records are not checked in general (here).
-
-    Deleting this record doesn't check or delete the svc_* record
-    associated with this record.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_pkg manpage, the
-    FS::part_svc manpage, the FS::pkg_svc manpage, schema.html from
-    the base documentation
-
-HISTORY
-    ivan@voicenet.com 97-jul-10,14
-
-    no TableUtil, no FS::Lock ivan@sisd.com 98-mar-7
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: cust_svc.txt,v $
-    Revision 1.4  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.5 1998/12/29 11:59:47 ivan
-    mostly properly OO, some work still to be done with svc_ stuff
-
-    Revision 1.4 1998/11/12 07:58:15 ivan added svcdb to label
-
-    Revision 1.3 1998/11/12 03:45:38 ivan use FS::table_name for all
-    tables qsearch()'ed
-
-    Revision 1.2 1998/11/12 03:32:46 ivan added label method
-
diff --git a/htdocs/docs/man/dbdef.txt b/htdocs/docs/man/dbdef.txt
deleted file mode 100644 (file)
index 6f1215a..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-NAME
-    FS::dbdef - Database objects
-
-SYNOPSIS
-      use FS::dbdef;
-
-      $dbdef = new FS::dbdef (@dbdef_table_objects);
-      $dbdef = load FS::dbdef "filename";
-
-      $dbdef->save("filename");
-
-      $dbdef->addtable($dbdef_table_object);
-
-      @table_names = $dbdef->tables;
-
-      $FS_dbdef_table_object = $dbdef->table;
-
-DESCRIPTION
-    FS::dbdef objects are collections of FS::dbdef_table objects and
-    represnt a database (a collection of tables).
-
-METHODS
-    new TABLE, TABLE, ...
-        Creates a new FS::dbdef object
-
-    load FILENAME
-        Loads an FS::dbdef object from a file.
-
-    save FILENAME
-        Saves an FS::dbdef object to a file.
-
-    addtable TABLE
-        Adds this FS::dbdef_table object.
-
-    tables
-        Returns the names of all tables.
-
-    table TABLENAME
-        Returns the named FS::dbdef_table object.
-
-BUGS
-        Each FS::dbdef object should have a name which corresponds
-        to its name within the SQL database engine.
-
-SEE ALSO
-        the FS::dbdef_table manpage, the FS::Record manpage,
-
-HISTORY
-        beginning of abstraction into a class (not really)
-
-        ivan@sisd.com 97-dec-4
-
-        added primary_key ivan@sisd.com 98-jan-20
-
-        added datatype (very kludgy and needs to be cleaned)
-        ivan@sisd.com 98-feb-21
-
-        perltrap (sigh) masked by mysql 3.20->3,21 ivan@sisd.com 98-
-        mar-2
-
-        Change 'type' to 'atype' in agent_type Changed attributes to
-        special words which are changed in fs-setup ie. double(10,2)
-        <=> MONEYTYPE Changed order of some of the field definitions
-        because Pg6.3 is picky Changed 'day' to 'daytime' in
-        cust_main Changed type of tax from tinyint to real Change
-        'password' to '_password' in svc_acct Pg6.3 does not allow
-        'field char(x) NULL' bmccane@maxbaud.net 98-apr-3
-
-        rewrite: now properly OO. See also
-        FS::dbdef_{table,column,unique,index}
-
-        ivan@sisd.com 98-apr-17
-
-        gained some extra functions ivan@sisd.com 98-may-11
-
-        now knows how to Freeze and Thaw itself ivan@sisd.com 98-
-        jun-2
-
-        pod ivan@sisd.com 98-sep-23
-
diff --git a/htdocs/docs/man/dbdef_colgroup.txt b/htdocs/docs/man/dbdef_colgroup.txt
deleted file mode 100644 (file)
index a7eebc6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-NAME
-    FS::dbdef_colgroup - Column group objects
-
-SYNOPSIS
-      use FS::dbdef_colgroup;
-
-      $colgroup = new FS::dbdef_colgroup ( $lol );
-      $colgroup = new FS::dbdef_colgroup (
-        [
-          [ 'single_column' ],
-          [ 'multiple_columns', 'another_column', ],
-        ]
-      );
-
-      @sql_lists = $colgroup->sql_list;
-
-      @singles = $colgroup->singles;
-
-DESCRIPTION
-    FS::dbdef_colgroup objects represent sets of sets of columns.
-
-METHODS
-    new Creates a new FS::dbdef_colgroup object.
-
-    sql_list
-        Returns a flat list of comma-separated values, for SQL
-        statements.
-
-    singles
-        Returns a flat list of all single item lists.
-
-BUGS
-SEE ALSO
-    the FS::dbdef_table manpage, the FS::dbdef_unique manpage, the
-    FS::dbdef_index manpage, the FS::dbdef_column manpage, the
-    FS::dbdef manpage, the perldsc manpage
-
-HISTORY
-    class for dealing with groups of groups of columns (used as a
-    base class by FS::dbdef_{unique,index} )
-
-    ivan@sisd.com 98-apr-19
-
-    added singles, fixed sql_list to skip empty lists ivan@sisd.com
-    98-jun-2
-
-    untaint things we're returning in sub singels ivan@sisd.com 98-
-    jun-4
-
-    pod ivan@sisd.com 98-sep-24
-
diff --git a/htdocs/docs/man/dbdef_column.txt b/htdocs/docs/man/dbdef_column.txt
deleted file mode 100644 (file)
index 6747a32..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-NAME
-    FS::dbdef_column - Column object
-
-SYNOPSIS
-      use FS::dbdef_column;
-
-      $column_object = new FS::dbdef_column ( $name, $sql_type, '' );
-      $column_object = new FS::dbdef_column ( $name, $sql_type, 'NULL' );
-      $column_object = new FS::dbdef_column ( $name, $sql_type, '', $length );
-      $column_object = new FS::dbdef_column ( $name, $sql_type, 'NULL', $length );
-
-      $name = $column_object->name;
-      $column_object->name ( 'name' );
-
-      $name = $column_object->type;
-      $column_object->name ( 'sql_type' );
-
-      $name = $column_object->null;
-      $column_object->name ( 'NOT NULL' );
-
-      $name = $column_object->length;
-      $column_object->name ( $length );
-
-      $sql_line = $column->line;
-      $sql_line = $column->line $datasrc;
-
-DESCRIPTION
-    FS::dbdef::column objects represend columns in tables (see the
-    FS::dbdef_table manpage).
-
-METHODS
-    new Creates a new FS::dbdef_column object.
-
-    name
-        Returns or sets the column name.
-
-    type
-        Returns or sets the column type.
-
-    null
-        Returns or sets the column null flag.
-
-    type
-        Returns or sets the column length.
-
-    line [ $datasrc ]
-        Returns an SQL column definition.
-
-        If passed a DBI $datasrc specifying the DBD::mysql manpage
-        or the DBD::Pg manpage, will use engine-specific syntax.
-
-BUGS
-SEE ALSO
-    the FS::dbdef_table manpage, the FS::dbdef manpage, the DBI
-    manpage
-
-VERSION
-    $Id: dbdef_column.txt,v 1.5 1999-04-08 13:39:32 ivan Exp $
-
-HISTORY
-    class for dealing with column definitions
-
-    ivan@sisd.com 98-apr-17
-
-    now methods can be used to get or set data ivan@sisd.com 98-may-
-    11
-
-    mySQL-specific hack for null (what should be default?)
-    ivan@sisd.com 98-jun-2
-
-    $Log: dbdef_column.txt,v $
-    Revision 1.5  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1998/10/13 13:04:17 ivan
-    fixed doc to indicate Pg specific syntax too
-
-    Revision 1.2 1998/10/12 23:40:28 ivan added Pg-specific
-    behaviour in sub line
-
diff --git a/htdocs/docs/man/dbdef_index.txt b/htdocs/docs/man/dbdef_index.txt
deleted file mode 100644 (file)
index 8cf339b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-NAME
-    FS::dbdef_unique.pm - Index object
-
-SYNOPSIS
-      use FS::dbdef_index;
-
-        # see FS::dbdef_colgroup methods
-
-DESCRIPTION
-    FS::dbdef_unique objects represent the (non-unique) indices of a
-    table (the FS::dbdef_table manpage). FS::dbdef_unique inherits
-    from FS::dbdef_colgroup.
-
-BUGS
-    Is this empty subclass needed?
-
-SEE ALSO
-    the FS::dbdef_colgroup manpage, the FS::dbdef_record manpage,
-    the FS::Record manpage
-
-HISTORY
-    class for dealing with index definitions
-
-    ivan@sisd.com 98-apr-19
-
-    pod ivan@sisd.com 98-sep-24
-
diff --git a/htdocs/docs/man/dbdef_table.txt b/htdocs/docs/man/dbdef_table.txt
deleted file mode 100644 (file)
index 1a18871..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-NAME
-    FS::dbdef_table - Table objects
-
-SYNOPSIS
-      use FS::dbdef_table;
-
-      $dbdef_table = new FS::dbdef_table (
-        "table_name",
-        "primary_key",
-        $FS_dbdef_unique_object,
-        $FS_dbdef_index_object,
-        @FS_dbdef_column_objects,
-      );
-
-      $dbdef_table->addcolumn ( $FS_dbdef_column_object );
-
-      $table_name = $dbdef_table->name;
-      $dbdef_table->name ("table_name");
-
-      $table_name = $dbdef_table->primary_keye;
-      $dbdef_table->primary_key ("primary_key");
-
-      $FS_dbdef_unique_object = $dbdef_table->unique;
-      $dbdef_table->unique ( $FS_dbdef_unique_object );
-
-      $FS_dbdef_index_object = $dbdef_table->index;
-      $dbdef_table->index ( $FS_dbdef_index_object );
-
-      @column_names = $dbdef->columns;
-
-      $FS_dbdef_column_object = $dbdef->column;
-
-      @sql_statements = $dbdef->sql_create_table;
-      @sql_statements = $dbdef->sql_create_table $datasrc;
-
-DESCRIPTION
-    FS::dbdef_table objects represent a single database table.
-
-METHODS
-    new Creates a new FS::dbdef_table object.
-
-    addcolumn
-        Adds this FS::dbdef_column object.
-
-    name
-        Returns or sets the table name.
-
-    primary_key
-        Returns or sets the primary key.
-
-    unique
-        Returns or sets the FS::dbdef_unique object.
-
-    index
-        Returns or sets the FS::dbdef_index object.
-
-    columns
-        Returns a list consisting of the names of all columns.
-
-    column "column"
-        Returns the column object (see the FS::dbdef_column manpage)
-        for "column".
-
-    sql_create_table [ $datasrc ]
-        Returns an array of SQL statments to create this table.
-
-        If passed a DBI $datasrc specifying the DBD::mysql manpage,
-        will use MySQL-specific syntax. Non-standard syntax for
-        other engines (if applicable) may also be supported in the
-        future.
-
-BUGS
-SEE ALSO
-    the FS::dbdef manpage, the FS::dbdef_unique manpage, the
-    FS::dbdef_index manpage, the FS::dbdef_unique manpage, the DBI
-    manpage
-
-VERSION
-    $Id: dbdef_table.txt,v 1.5 1999-04-08 13:39:32 ivan Exp $
-
-HISTORY
-    class for dealing with table definitions
-
-    ivan@sisd.com 98-apr-18
-
-    gained extra functions (should %columns be an IxHash?)
-    ivan@sisd.com 98-may-11
-
-    sql_create_table returns a list of statments, not just one, and
-    now it does indices (plus mysql hack) ivan@sisd.com 98-jun-2
-
-    untaint primary_key... hmm. is this a hack around a bigger
-    problem? looks like, did the same thing singles in colgroup!
-    ivan@sisd.com 98-jun-4
-
-    pod ivan@sisd.com 98-sep-24
-
-    $Log: dbdef_table.txt,v $
-    Revision 1.5  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.2 1998/10/14 07:05:06 ivan
-    1.1.4 release, fix postgresql
-
diff --git a/htdocs/docs/man/dbdef_unique.txt b/htdocs/docs/man/dbdef_unique.txt
deleted file mode 100644 (file)
index 0e4f015..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-NAME
-    FS::dbdef_unique.pm - Unique object
-
-SYNOPSIS
-      use FS::dbdef_unique;
-
-      # see FS::dbdef_colgroup methods
-
-DESCRIPTION
-    FS::dbdef_unique objects represent the unique indices of a
-    database table (the FS::dbdef_table manpage). FS::dbdef_unique
-    inherits from FS::dbdef_colgroup.
-
-BUGS
-    Is this empty subclass needed?
-
-SEE ALSO
-    the FS::dbdef_colgroup manpage, the FS::dbdef_record manpage,
-    the FS::Record manpage
-
-HISTORY
-    class for dealing with unique definitions
-
-    ivan@sisd.com 98-apr-19
-
-    pod ivan@sisd.com 98-sep-24
-
diff --git a/htdocs/docs/man/index.html b/htdocs/docs/man/index.html
deleted file mode 100644 (file)
index 79fda2e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<head>
-  <title>Perl API</title>
-</head>
-<body>
-  <h1>Perl API</h1>
-  <ul>
-<li><a href="agent.txt">FS::agent</a>
-<li><a href="agent_type.txt">FS::agent_type</a>
-<li><a href="cust_bill.txt">FS::cust_bill</a>
-<li><a href="cust_bill_pkg.txt">FS::cust_bill_pkg</a>
-<li><a href="cust_credit.txt">FS::cust_credit</a>
-<li><a href="cust_main.txt">FS::cust_main</a>
-<li><a href="cust_main_county.txt">FS::cust_main_county</a>
-<li><a href="cust_main_invoice.txt">FS::cust_main_invoice</a>
-<li><a href="cust_pay.txt">FS::cust_pay</a>
-<li><a href="cust_pay_batch.txt">FS::cust_pay_batch</a>
-<li><a href="cust_pkg.txt">FS::cust_pkg</a>
-<li><a href="cust_refund.txt">FS::cust_refund</a>
-<li><a href="cust_svc.txt">FS::cust_svc</a>
-<li><a href="part_pkg.txt">FS::part_pkg</a>
-<li><a href="part_referral.txt">FS::part_referral</a>
-<li><a href="part_svc.txt">FS::part_svc</a>
-<li><a href="pkg_svc.txt">FS::pkg_svc</a>
-<li><a href="svc_Common.txt">FS::svc_Common</a>
-<li><a href="svc_acct.txt">FS::svc_acct</a>
-<li><a href="svc_acct_pop.txt">FS::svc_acct_pop</a>
-<li><a href="svc_acct_sm.txt">FS::svc_acct_sm</a>
-<li><a href="svc_domain.txt">FS::svc_domain</a>
-<li><a href="type_pkgs.txt">FS::type_pkgs</a>
-</ul>
-<br>
-<ul>
-<li><a href="Bill.txt">FS::Bill</a>
-<li><a href="CGI.txt">FS::CGI</a>
-<li><a href="Conf.txt">FS::Conf</a>
-<li><a href="Invoice.txt">FS::Invoice</a>
-<li><a href="Record.txt">FS::Record</a>
-<li><a href="SSH.txt">FS::SSH</a>
-<li><a href="UID.txt">FS::UID</a>
-</ul>
-<br>
-<ul>
-<li><a href="dbdef.txt">FS::dbdef</a>
-<li><a href="dbdef_colgroup.txt">FS::dbdef_colgroup</a>
-<li><a href="dbdef_column.txt">FS::dbdef_column</a>
-<li><a href="dbdef_index.txt">FS::dbdef_index</a>
-<li><a href="dbdef_table.txt">FS::dbdef_table</a>
-<li><a href="dbdef_unique.txt">FS::dbdef_unique</a>
-
-<ul>
-</body>
diff --git a/htdocs/docs/man/part_pkg.txt b/htdocs/docs/man/part_pkg.txt
deleted file mode 100644 (file)
index 02aa109..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-NAME
-    FS::part_pkg - Object methods for part_pkg objects
-
-SYNOPSIS
-      use FS::part_pkg;
-
-      $record = new FS::part_pkg \%hash
-      $record = new FS::part_pkg { 'column' => 'value' };
-
-      $custom_record = $template_record->clone;
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::part_pkg object represents a billing item definition.
-    FS::part_pkg inherits from FS::Record. The following fields are
-    currently supported:
-
-    pkgpart - primary key (assigned automatically for new billing item definitions)
-    pkg - Text name of this billing item definition (customer-viewable)
-    comment - Text name of this billing item definition (non-customer-viewable)
-    setup - Setup fee
-    freq - Frequency of recurring fee
-    recur - Recurring fee
-    setup and recur are evaluated as Safe perl expressions. You can
-    use numbers just as you would normally. More advanced semantics
-    are not yet defined.
-
-METHODS
-    new HASHREF
-        Creates a new billing item definition. To add the billing
-        item definition to the database, see the section on
-        "insert".
-
-    clone
-        An alternate constructor. Creates a new billing item
-        definition by duplicating an existing definition. A new
-        pkgpart is assigned and `(CUSTOM) ' is prepended to the
-        comment field. To add the billing item definition to the
-        database, see the section on "insert".
-
-    insert
-        Adds this billing item definition to the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    delete
-        Currently unimplemented.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid billing item
-        definition. If there is an error, returns the error,
-        otherwise returns false. Called by the insert and replace
-        methods.
-
-VERSION
-    $Id: part_pkg.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    It doesn't properly override FS::Record yet.
-
-    The delete method is unimplemented.
-
-    setup and recur semantics are not yet defined (and are
-    implemented in FS::cust_bill. hmm.).
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_pkg manpage, the
-    FS::type_pkgs manpage, the FS::pkg_svc manpage, the Safe
-    manpage. schema.html from the base documentation.
-
-HISTORY
-    ivan@sisd.com 97-dec-5
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: part_pkg.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.5 1998/12/31 01:04:16 ivan doc
-
-    Revision 1.3 1998/11/15 13:00:15 ivan bugfix in clone method,
-    clone method doc clarification
-
diff --git a/htdocs/docs/man/part_referral.txt b/htdocs/docs/man/part_referral.txt
deleted file mode 100644 (file)
index fbc141c..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-NAME
-    FS::part_referral - Object methods for part_referral objects
-
-SYNOPSIS
-      use FS::part_referral;
-
-      $record = new FS::part_referral \%hash
-      $record = new FS::part_referral { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::part_referral represents a referral - where a customer
-    heard of your services. This can be used to track the
-    effectiveness of a particular piece of advertising, for example.
-    FS::part_referral inherits from FS::Record. The following fields
-    are currently supported:
-
-    refnum - primary key (assigned automatically for new referrals)
-    referral - Text name of this referral
-METHODS
-    new HASHREF
-        Creates a new referral. To add the referral to the database,
-        see the section on "insert".
-
-    insert
-        Adds this referral to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Currently unimplemented.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid referral. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: part_referral.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The delete method is unimplemented.
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_main manpage, schema.html
-    from the base documentation.
-
-HISTORY
-    Class dealing with referrals
-
-    ivan@sisd.com 98-feb-23
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: part_referral.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.2 1998/12/29 11:59:49 ivan
-    mostly properly OO, some work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/part_svc.txt b/htdocs/docs/man/part_svc.txt
deleted file mode 100644 (file)
index 71af2c4..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-NAME
-    FS::part_svc - Object methods for part_svc objects
-
-SYNOPSIS
-      use FS::part_svc;
-
-      $record = new FS::part_referral \%hash
-      $record = new FS::part_referral { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::part_svc represents a service definition. FS::part_svc
-    inherits from FS::Record. The following fields are currently
-    supported:
-
-    svcpart - primary key (assigned automatically for new service definitions)
-    svc - text name of this service definition
-    svcdb - table used for this service.  See the FS::svc_acct manpage,
-    the FS::svc_domain manpage, and the FS::svc_acct_sm manpage, among others.
-    *svcdb*__*field* - Default or fixed value for *field* in *svcdb*.
-    *svcdb*__*field*_flag - defines *svcdb*__*field* action: null, `D' for default, or `F' for fixed
-METHODS
-    new HASHREF
-        Creates a new service definition. To add the service
-        definition to the database, see the section on "insert".
-
-    insert
-        Adds this service definition to the database. If there is an
-        error, returns the error, otherwise returns false.
-
-    delete
-        Currently unimplemented.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid service
-        definition. If there is an error, returns the error,
-        otherwise returns false. Called by the insert and replace
-        methods.
-
-VERSION
-    $Id: part_svc.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    Delete is unimplemented.
-
-    The list of svc_* tables is hardcoded. When svc_acct_pop is
-    renamed, this should be fixed.
-
-SEE ALSO
-    the FS::Record manpage, the FS::part_pkg manpage, the
-    FS::pkg_svc manpage, the FS::cust_svc manpage, the FS::svc_acct
-    manpage, the FS::svc_acct_sm manpage, the FS::svc_domain
-    manpage, schema.html from the base documentation.
-
-HISTORY
-    ivan@sisd.com 97-nov-14
-
-    data checking/untainting calls into FS::Record added
-    ivan@sisd.com 97-dec-6
-
-    pod ivan@sisd.com 98-sep-21
-
-    $Log: part_svc.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/02/07 09:59:44 ivan more
-    mod_perl fixes, and bugfixes Peter Wemm sent via email
-
-    Revision 1.2 1998/12/29 11:59:50 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/pkg_svc.txt b/htdocs/docs/man/pkg_svc.txt
deleted file mode 100644 (file)
index d921642..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-NAME
-    FS::pkg_svc - Object methods for pkg_svc records
-
-SYNOPSIS
-      use FS::pkg_svc;
-
-      $record = new FS::pkg_svc \%hash;
-      $record = new FS::pkg_svc { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::pkg_svc record links a billing item definition (see the
-    FS::part_pkg manpage) to a service definition (see the
-    FS::part_svc manpage). FS::pkg_svc inherits from FS::Record. The
-    following fields are currently supported:
-
-    pkgpart - Billing item definition (see the FS::part_pkg manpage)
-    svcpart - Service definition (see the FS::part_svc manpage)
-    quantity - Quantity of this service definition that this billing item
-    definition includes
-METHODS
-    new HASHREF
-        Create a new record. To add the record to the database, see
-        the section on "insert".
-
-    insert
-        Adds this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this record from the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid record. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: pkg_svc.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::part_pkg manpage, the
-    FS::part_svc manpage, schema.html from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-1 added hfields ivan@sisd.com 97-nov-13
-
-    pod ivan@sisd.com 98-sep-22
-
-    $Log: pkg_svc.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/01/18 21:58:08 ivan
-    esthetic: eq and ne were used in a few places instead of == and
-    !=
-
-    Revision 1.2 1998/12/29 11:59:51 ivan mostly properly OO, some
-    work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/svc_Common.txt b/htdocs/docs/man/svc_Common.txt
deleted file mode 100644 (file)
index d63b8f2..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-NAME
-    FS::svc_Common - Object method for all svc_ records
-
-SYNOPSIS
-    use FS::svc_Common;
-
-    @ISA = qw( FS::svc_Common );
-
-DESCRIPTION
-    FS::svc_Common is intended as a base class for table-specific
-    classes to inherit from, i.e. FS::svc_acct. FS::svc_Common
-    inherits from FS::Record.
-
-METHODS
-    insert
-        Adds this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-        The additional fields pkgnum and svcpart (see the
-        FS::cust_svc manpage) should be defined. An FS::cust_svc
-        record will be created and inserted.
-
-    delete
-        Deletes this account from the database. If there is an
-        error, returns the error, otherwise returns false.
-
-        The corresponding FS::cust_svc record will be deleted as
-        well.
-
-    setfixed
-        Sets any fixed fields for this service (see the FS::part_svc
-        manpage). If there is an error, returns the error, otherwise
-        returns the FS::part_svc object (use ref() to test the
-        return). Usually called by the check method.
-
-    setdefault
-        Sets all fields to their defaults (see the FS::part_svc
-        manpage), overriding their current values. If there is an
-        error, returns the error, otherwise returns the FS::part_svc
-        object (use ref() to test the return).
-
-    suspend
-    unsuspend
-    cancel
-        Stubs - return false (no error) so derived classes don't
-        need to define these methods. Called by the cancel method of
-        FS::cust_pkg (see the FS::cust_pkg manpage).
-
-VERSION
-    $Id: svc_Common.txt,v 1.1 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The setfixed method return value.
-
-    The new method should set defaults from part_svc (like the check
-    method sets fixed values)?
-
-SEE ALSO
-    the FS::Record manpage, the FS::cust_svc manpage, the
-    FS::part_svc manpage, the FS::cust_pkg manpage, schema.html from
-    the base documentation.
-
-HISTORY
-    $Log: svc_Common.txt,v $
-    Revision 1.1  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.3 1999/03/25 13:31:29 ivan
-    added setdefault method (generalized setfixed method to setx
-    method)
-
-    Revision 1.2 1999/01/25 12:26:14 ivan yet more mod_perl stuff
-
-    Revision 1.1 1998/12/30 00:30:45 ivan svc_ stuff is more
-    properly OO - has a common superclass FS::svc_Common
-
diff --git a/htdocs/docs/man/svc_acct.txt b/htdocs/docs/man/svc_acct.txt
deleted file mode 100644 (file)
index 7eb5be4..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-NAME
-    FS::svc_acct - Object methods for svc_acct records
-
-SYNOPSIS
-      use FS::svc_acct;
-
-      $record = new FS::svc_acct \%hash;
-      $record = new FS::svc_acct { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      $error = $record->suspend;
-
-      $error = $record->unsuspend;
-
-      $error = $record->cancel;
-
-DESCRIPTION
-    An FS::svc_acct object represents an account. FS::svc_acct
-    inherits from FS::svc_Common. The following fields are currently
-    supported:
-
-    svcnum - primary key (assigned automatcially for new accounts)
-    username
-    _password - generated if blank
-    popnum - Point of presence (see the FS::svc_acct_pop manpage)
-    uid
-    gid
-    finger - GECOS
-    dir - set automatically if blank (and uid is not)
-    shell
-    quota - (unimplementd)
-    slipip - IP address
-    radius_*Radius_Attribute* - *Radius-Attribute*
-METHODS
-    new HASHREF
-        Creates a new account. To add the account to the database,
-        see the section on "insert".
-
-    insert
-        Adds this account to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-        The additional fields pkgnum and svcpart (see the
-        FS::cust_svc manpage) should be defined. An FS::cust_svc
-        record will be created and inserted.
-
-        If the configuration value (see the FS::Conf manpage)
-        shellmachine exists, and the username, uid, and dir fields
-        are defined, the command
-
-          useradd -d $dir -m -s $shell -u $uid $username
-
-        is executed on shellmachine via ssh. This behaviour can be
-        surpressed by setting $FS::svc_acct::nossh_hack true.
-
-    delete
-        Deletes this account from the database. If there is an
-        error, returns the error, otherwise returns false.
-
-        The corresponding FS::cust_svc record will be deleted as
-        well.
-
-        If the configuration value (see the FS::Conf manpage)
-        shellmachine exists, the command:
-
-          userdel $username
-
-        is executed on shellmachine via ssh. This behaviour can be
-        surpressed by setting $FS::svc_acct::nossh_hack true.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-        If the configuration value (see the FS::Conf manpage)
-        shellmachine exists, and the dir field has changed, the
-        command:
-
-          [ -d $old_dir ] && (
-            chmod u+t $old_dir;
-            umask 022;
-            mkdir $new_dir;
-            cd $old_dir;
-            find . -depth -print | cpio -pdm $new_dir;
-            chmod u-t $new_dir;
-            chown -R $uid.$gid $new_dir;
-            rm -rf $old_dir
-          )
-
-        is executed on shellmachine via ssh. This behaviour can be
-        surpressed by setting $FS::svc_acct::nossh_hack true.
-
-    suspend
-        Suspends this account by prefixing *SUSPENDED* to the
-        password. If there is an error, returns the error, otherwise
-        returns false.
-
-        Called by the suspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    unsuspend
-        Unsuspends this account by removing *SUSPENDED* from the
-        password. If there is an error, returns the error, otherwise
-        returns false.
-
-        Called by the unsuspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    cancel
-        Just returns false (no error) for now.
-
-        Called by the cancel method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    check
-        Checks all fields to make sure this is a valid service. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-        Sets any fixed values; see the FS::part_svc manpage.
-
-VERSION
-    $Id: svc_acct.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The remote commands should be configurable.
-
-    The bits which ssh should fork before doing so.
-
-    The $recref stuff in sub check should be cleaned up.
-
-SEE ALSO
-    the FS::svc_Common manpage, the FS::Record manpage, the FS::Conf
-    manpage, the FS::cust_svc manpage, the FS::part_svc manpage, the
-    FS::cust_pkg manpage, the FS::SSH manpage, the ssh manpage, the
-    FS::svc_acct_pop manpage, schema.html from the base
-    documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-16 - 21
-
-    rewrite (among other things, now know about part_svc)
-    ivan@sisd.com 98-mar-8
-
-    Changed 'password' to '_password' because Pg6.3 reserves the
-    password word bmccane@maxbaud.net 98-apr-3
-
-    username length and shell no longer hardcoded ivan@sisd.com 98-
-    jun-28
-
-    eww but needed: ignore uid duplicates for 'fax' and 'hylafax'
-    ivan@sisd.com 98-jun-29
-
-    $nossh_hack ivan@sisd.com 98-jul-13
-
-    protections against UID/GID of 0 for incorrectly-setup RDBMSs
-    (also in bin/svc_acct.export) ivan@sisd.com 98-jul-13
-
-    arbitrary radius attributes ivan@sisd.com 98-aug-13
-
-    /var/spool/freeside/conf/shellmachine ivan@sisd.com 98-aug-13
-
-    pod and FS::conf ivan@sisd.com 98-sep-22
-
-    $Log: svc_acct.txt,v $
-    Revision 1.4  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.7 1999/04/07 14:37:37 ivan use
-    FS::part_svc and FS::svc_acct_pop to avoid warnings
-
-    Revision 1.6 1999/01/25 12:26:15 ivan yet more mod_perl stuff
-
-    Revision 1.5 1999/01/18 21:58:09 ivan esthetic: eq and ne were
-    used in a few places instead of == and !=
-
-    Revision 1.4 1998/12/30 00:30:45 ivan svc_ stuff is more
-    properly OO - has a common superclass FS::svc_Common
-
-    Revision 1.2 1998/11/13 09:56:55 ivan change configuration file
-    layout to support multiple distinct databases (with own set of
-    config files, export, etc.)
-
diff --git a/htdocs/docs/man/svc_acct_pop.txt b/htdocs/docs/man/svc_acct_pop.txt
deleted file mode 100644 (file)
index e8629fd..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-NAME
-    FS::svc_acct_pop - Object methods for svc_acct_pop records
-
-SYNOPSIS
-      use FS::svc_acct_pop;
-
-      $record = new FS::svc_acct_pop \%hash;
-      $record = new FS::svc_acct_pop { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::svc_acct object represents an point of presence.
-    FS::svc_acct_pop inherits from FS::Record. The following fields
-    are currently supported:
-
-    popnum - primary key (assigned automatically for new accounts)
-    city
-    state
-    ac - area code
-    exch - exchange
-METHODS
-    new HASHREF
-        Creates a new point of presence (if only it were that
-        easy!). To add the point of presence to the database, see
-        the section on "insert".
-
-    insert
-        Adds this point of presence to the database. If there is an
-        error, returns the error, otherwise returns false.
-
-    delete
-        Removes this point of presence from the database.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid point of
-        presence. If there is an error, returns the error, otherwise
-        returns false. Called by the insert and replace methods.
-
-VERSION
-    $Id: svc_acct_pop.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    It should be renamed to part_pop.
-
-SEE ALSO
-    the FS::Record manpage, the svc_acct manpage, schema.html from
-    the base documentation.
-
-HISTORY
-    Class dealing with pops
-
-    ivan@sisd.com 98-mar-8
-
-    pod ivan@sisd.com 98-sep-23
-
-    $Log: svc_acct_pop.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.2 1998/12/29 11:59:53 ivan
-    mostly properly OO, some work still to be done with svc_ stuff
-
diff --git a/htdocs/docs/man/svc_acct_sm.txt b/htdocs/docs/man/svc_acct_sm.txt
deleted file mode 100644 (file)
index dc0773f..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-NAME
-    FS::svc_acct_sm - Object methods for svc_acct_sm records
-
-SYNOPSIS
-      use FS::svc_acct_sm;
-
-      $record = new FS::svc_acct_sm \%hash;
-      $record = new FS::svc_acct_sm { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      $error = $record->suspend;
-
-      $error = $record->unsuspend;
-
-      $error = $record->cancel;
-
-DESCRIPTION
-    An FS::svc_acct object represents a virtual mail alias.
-    FS::svc_acct inherits from FS::Record. The following fields are
-    currently supported:
-
-    svcnum - primary key (assigned automatcially for new accounts)
-    domsvc - svcnum of the virtual domain (see the FS::svc_domain manpage)
-    domuid - uid of the target account (see the FS::svc_acct manpage)
-    domuser - virtual username
-METHODS
-    new HASHREF
-        Creates a new virtual mail alias. To add the virtual mail
-        alias to the database, see the section on "insert".
-
-    insert
-        Adds this virtual mail alias to the database. If there is an
-        error, returns the error, otherwise returns false.
-
-        The additional fields pkgnum and svcpart (see the
-        FS::cust_svc manpage) should be defined. An FS::cust_svc
-        record will be created and inserted.
-
-        If the configuration values (see the FS::Conf manpage)
-        shellmachine and qmailmachines exist, and domuser is `*'
-        (meaning a catch-all mailbox), the command:
-
-          [ -e $dir/.qmail-$qdomain-default ] || {
-            touch $dir/.qmail-$qdomain-default;
-            chown $uid:$gid $dir/.qmail-$qdomain-default;
-          }
-
-        is executed on shellmachine via ssh (see the section on
-        "EXTENSION ADDRESSES" in the dot-qmail manpage). This
-        behaviour can be surpressed by setting
-        $FS::svc_acct_sm::nossh_hack true.
-
-    delete
-        Deletes this virtual mail alias from the database. If there
-        is an error, returns the error, otherwise returns false.
-
-        The corresponding FS::cust_svc record will be deleted as
-        well.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    suspend
-        Just returns false (no error) for now.
-
-        Called by the suspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    unsuspend
-        Just returns false (no error) for now.
-
-        Called by the unsuspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    cancel
-        Just returns false (no error) for now.
-
-        Called by the cancel method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    check
-        Checks all fields to make sure this is a valid virtual mail
-        alias. If there is an error, returns the error, otherwise
-        returns false. Called by the insert and replace methods.
-
-        Sets any fixed values; see the FS::part_svc manpage.
-
-VERSION
-    $Id: svc_acct_sm.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    The remote commands should be configurable.
-
-    The $recref stuff in sub check should be cleaned up.
-
-SEE ALSO
-    the FS::Record manpage, the FS::Conf manpage, the FS::cust_svc
-    manpage, the FS::part_svc manpage, the FS::cust_pkg manpage, the
-    FS::svc_acct manpage, the FS::svc_domain manpage, the FS::SSH
-    manpage, the ssh manpage, the dot-qmail manpage, schema.html
-    from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-16 - 21
-
-    rewrite ivan@sisd.com 98-mar-10
-
-    s/qsearchs/qsearch/ to eliminate warning ivan@sisd.com 98-apr-19
-
-    uses conf/shellmachine and has an nossh_hack ivan@sisd.com 98-
-    jul-14
-
-    s/\./:/g in .qmail-domain:com ivan@sisd.com 98-aug-13
-
-    pod, FS::Conf, moved .qmail file from check to insert 98-sep-23
-
diff --git a/htdocs/docs/man/svc_domain.txt b/htdocs/docs/man/svc_domain.txt
deleted file mode 100644 (file)
index 939a940..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-NAME
-    FS::svc_domain - Object methods for svc_domain records
-
-SYNOPSIS
-      use FS::svc_domain;
-
-      $record = new FS::svc_domain \%hash;
-      $record = new FS::svc_domain { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-      $error = $record->suspend;
-
-      $error = $record->unsuspend;
-
-      $error = $record->cancel;
-
-DESCRIPTION
-    An FS::svc_domain object represents a domain. FS::svc_domain
-    inherits from FS::svc_Common. The following fields are currently
-    supported:
-
-    svcnum - primary key (assigned automatically for new accounts)
-    domain
-METHODS
-    new HASHREF
-        Creates a new domain. To add the domain to the database, see
-        the section on "insert".
-
-    insert
-        Adds this domain to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-        The additional fields *pkgnum* and *svcpart* (see the
-        FS::cust_svc manpage) should be defined. An FS::cust_svc
-        record will be created and inserted.
-
-        The additional field *action* should be set to *N* for new
-        domains or *M* for transfers.
-
-        A registration or transfer email will be submitted unless
-        $FS::svc_domain::whois_hack is true.
-
-        The additional field *email* can be used to manually set the
-        admin contact email address on this email. Otherwise, the
-        svc_acct records for this package (see the FS::cust_pkg
-        manpage) are searched. If there is exactly one svc_acct
-        record in the same package, it is automatically used.
-        Otherwise an error is returned.
-
-    delete
-        Deletes this domain from the database. If there is an error,
-        returns the error, otherwise returns false.
-
-        The corresponding FS::cust_svc record will be deleted as
-        well.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    suspend
-        Just returns false (no error) for now.
-
-        Called by the suspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    unsuspend
-        Just returns false (no error) for now.
-
-        Called by the unsuspend method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    cancel
-        Just returns false (no error) for now.
-
-        Called by the cancel method of FS::cust_pkg (see the
-        FS::cust_pkg manpage).
-
-    check
-        Checks all fields to make sure this is a valid domain. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-        Sets any fixed values; see the FS::part_svc manpage.
-
-    _whois
-        Executes the command:
-
-          whois do $domain
-
-        and returns the output.
-
-        (Always returns *No match for domian "$domain".* if
-        $FS::svc_domain::whois_hack is set true.)
-
-    submit_internic
-        Submits a registration email for this domain.
-
-VERSION
-    $Id: svc_domain.txt,v 1.4 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-    All BIND/DNS fields should be included (and exported).
-
-    Delete doesn't send a registration template.
-
-    All registries should be supported.
-
-    Should change action to a real field.
-
-    The $recref stuff in sub check should be cleaned up.
-
-SEE ALSO
-    the FS::svc_Common manpage, the FS::Record manpage, the FS::Conf
-    manpage, the FS::cust_svc manpage, the FS::part_svc manpage, the
-    FS::cust_pkg manpage, the FS::SSH manpage, the ssh manpage, the
-    dot-qmail manpage, schema.html from the base documentation,
-    config.html from the base documentation.
-
-HISTORY
-    ivan@voicenet.com 97-jul-21
-
-    rewrite ivan@sisd.com 98-mar-10
-
-    add internic bits ivan@sisd.com 98-mar-14
-
-    Changed 'day' to 'daytime' because Pg6.3 reserves the day word
-    bmccane@maxbaud.net 98-apr-3
-
-    /var/spool/freeside/conf/registries/internic/, Mail::Internet,
-    etc. ivan@sisd.com 98-jul-17-19
-
-    pod, some FS::Conf (not complete) ivan@sisd.com 98-sep-23
-
-    $Log: svc_domain.txt,v $
-    Revision 1.4  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.7 1999/04/07 14:40:15 ivan
-    use all stuff that's qsearch'ed to avoid warnings
-
-    Revision 1.6 1999/01/25 12:26:17 ivan yet more mod_perl stuff
-
-    Revision 1.5 1998/12/30 00:30:47 ivan svc_ stuff is more
-    properly OO - has a common superclass FS::svc_Common
-
-    Revision 1.3 1998/11/13 09:56:57 ivan change configuration file
-    layout to support multiple distinct databases (with own set of
-    config files, export, etc.)
-
-    Revision 1.2 1998/10/14 08:18:21 ivan More informative error
-    messages and better doc for admin contact email stuff
-
diff --git a/htdocs/docs/man/type_pkgs.txt b/htdocs/docs/man/type_pkgs.txt
deleted file mode 100644 (file)
index f575e20..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-NAME
-    FS::type_pkgs - Object methods for type_pkgs records
-
-SYNOPSIS
-      use FS::type_pkgs;
-
-      $record = new FS::type_pkgs \%hash;
-      $record = new FS::type_pkgs { 'column' => 'value' };
-
-      $error = $record->insert;
-
-      $error = $new_record->replace($old_record);
-
-      $error = $record->delete;
-
-      $error = $record->check;
-
-DESCRIPTION
-    An FS::type_pkgs record links an agent type (see the
-    FS::agent_type manpage) to a billing item definition (see the
-    FS::part_pkg manpage). FS::type_pkgs inherits from FS::Record.
-    The following fields are currently supported:
-
-    typenum - Agent type, see the FS::agent_type manpage
-    pkgpart - Billing item definition, see the FS::part_pkg manpage
-METHODS
-    new HASHREF
-        Create a new record. To add the record to the database, see
-        the section on "insert".
-
-    insert
-        Adds this record to the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    delete
-        Deletes this record from the database. If there is an error,
-        returns the error, otherwise returns false.
-
-    replace OLD_RECORD
-        Replaces OLD_RECORD with this one in the database. If there
-        is an error, returns the error, otherwise returns false.
-
-    check
-        Checks all fields to make sure this is a valid record. If
-        there is an error, returns the error, otherwise returns
-        false. Called by the insert and replace methods.
-
-VERSION
-    $Id: type_pkgs.txt,v 1.3 1999-04-08 13:39:32 ivan Exp $
-
-BUGS
-SEE ALSO
-    the FS::Record manpage, the FS::agent_type manpage, the
-    FS::part_pkgs manpage, schema.html from the base documentation.
-
-HISTORY
-    Defines the relation between agent types and pkgparts (Which
-    pkgparts can the different [types of] agents sell?)
-
-    ivan@sisd.com 97-nov-13
-
-    change to ut_ FS::Record, fixed bugs ivan@sisd.com 97-dec-10
-
-    $Log: type_pkgs.txt,v $
-    Revision 1.3  1999-04-08 13:39:32  ivan
-    convert from pod for 1.2.0 release
- Revision 1.2 1998/12/29 11:59:58 ivan
-    mostly properly OO, some work still to be done with svc_ stuff
-