From 08f52e31c5f777963d565085d077c9d8d9734e17 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 25 Sep 1998 08:52:48 +0000 Subject: [PATCH] Initial revision --- bin/pod2x | 23 +++ htdocs/docs/man/Bill.txt | 29 +++ htdocs/docs/man/CGI.txt | 47 +++++ htdocs/docs/man/Conf.txt | 47 +++++ htdocs/docs/man/Invoice.txt | 23 +++ htdocs/docs/man/Record.txt | 332 +++++++++++++++++++++++++++++++++++ htdocs/docs/man/SSH.txt | 63 +++++++ htdocs/docs/man/UID.txt | 79 +++++++++ htdocs/docs/man/agent.txt | 65 +++++++ htdocs/docs/man/agent_type.txt | 72 ++++++++ htdocs/docs/man/cust_bill.txt | 140 +++++++++++++++ htdocs/docs/man/cust_bill_pkg.txt | 72 ++++++++ htdocs/docs/man/cust_credit.txt | 75 ++++++++ htdocs/docs/man/cust_main.txt | 200 +++++++++++++++++++++ htdocs/docs/man/cust_main_county.txt | 67 +++++++ htdocs/docs/man/cust_pay.txt | 66 +++++++ htdocs/docs/man/cust_pkg.txt | 150 ++++++++++++++++ htdocs/docs/man/cust_refund.txt | 66 +++++++ htdocs/docs/man/cust_svc.txt | 72 ++++++++ htdocs/docs/man/dbdef.txt | 80 +++++++++ htdocs/docs/man/dbdef_colgroup.txt | 51 ++++++ htdocs/docs/man/dbdef_column.txt | 69 ++++++++ htdocs/docs/man/dbdef_index.txt | 27 +++ htdocs/docs/man/dbdef_table.txt | 94 ++++++++++ htdocs/docs/man/dbdef_unique.txt | 27 +++ htdocs/docs/man/index.html | 48 +++++ htdocs/docs/man/part_pkg.txt | 73 ++++++++ htdocs/docs/man/part_referral.txt | 63 +++++++ htdocs/docs/man/part_svc.txt | 69 ++++++++ htdocs/docs/man/pkg_svc.txt | 61 +++++++ htdocs/docs/man/svc_acct.txt | 168 ++++++++++++++++++ htdocs/docs/man/svc_acct_pop.txt | 65 +++++++ htdocs/docs/man/svc_acct_sm.txt | 121 +++++++++++++ htdocs/docs/man/svc_domain.txt | 131 ++++++++++++++ htdocs/docs/man/type_pkgs.txt | 55 ++++++ 35 files changed, 2890 insertions(+) create mode 100755 bin/pod2x create mode 100644 htdocs/docs/man/Bill.txt create mode 100644 htdocs/docs/man/CGI.txt create mode 100644 htdocs/docs/man/Conf.txt create mode 100644 htdocs/docs/man/Invoice.txt create mode 100644 htdocs/docs/man/Record.txt create mode 100644 htdocs/docs/man/SSH.txt create mode 100644 htdocs/docs/man/UID.txt create mode 100644 htdocs/docs/man/agent.txt create mode 100644 htdocs/docs/man/agent_type.txt create mode 100644 htdocs/docs/man/cust_bill.txt create mode 100644 htdocs/docs/man/cust_bill_pkg.txt create mode 100644 htdocs/docs/man/cust_credit.txt create mode 100644 htdocs/docs/man/cust_main.txt create mode 100644 htdocs/docs/man/cust_main_county.txt create mode 100644 htdocs/docs/man/cust_pay.txt create mode 100644 htdocs/docs/man/cust_pkg.txt create mode 100644 htdocs/docs/man/cust_refund.txt create mode 100644 htdocs/docs/man/cust_svc.txt create mode 100644 htdocs/docs/man/dbdef.txt create mode 100644 htdocs/docs/man/dbdef_colgroup.txt create mode 100644 htdocs/docs/man/dbdef_column.txt create mode 100644 htdocs/docs/man/dbdef_index.txt create mode 100644 htdocs/docs/man/dbdef_table.txt create mode 100644 htdocs/docs/man/dbdef_unique.txt create mode 100644 htdocs/docs/man/index.html create mode 100644 htdocs/docs/man/part_pkg.txt create mode 100644 htdocs/docs/man/part_referral.txt create mode 100644 htdocs/docs/man/part_svc.txt create mode 100644 htdocs/docs/man/pkg_svc.txt create mode 100644 htdocs/docs/man/svc_acct.txt create mode 100644 htdocs/docs/man/svc_acct_pop.txt create mode 100644 htdocs/docs/man/svc_acct_sm.txt create mode 100644 htdocs/docs/man/svc_domain.txt create mode 100644 htdocs/docs/man/type_pkgs.txt diff --git a/bin/pod2x b/bin/pod2x new file mode 100755 index 000000000..1edb1c41e --- /dev/null +++ b/bin/pod2x @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +#use Pod::Text; +#$Pod::Text::termcap=1; + +my $site_perl = "./site_perl"; +#my $catman = "./catman"; +my $catman = "./htdocs/docs/man"; +#my $html = "./htdocs/docs/man"; + +$|=1; + +die "Can't find $site_perl and $catman" + unless [ -d $site_perl ] && [ -d $catman ] && [ -d $html ]; + +foreach my $file (glob("$site_perl/*.pm")) { + $file =~ /\/([\w\-]+)\.pm$/ or die "oops file $file"; + my $name = $1; + print "$name\n"; + system "pod2text $file >$catman/$name.txt"; +# system "pod2html --podpath=$site_perl $file >$html/$name.html"; +# system "pod2html $file >$html/$name.html"; +} diff --git a/htdocs/docs/man/Bill.txt b/htdocs/docs/man/Bill.txt new file mode 100644 index 000000000..545dd1a4c --- /dev/null +++ b/htdocs/docs/man/Bill.txt @@ -0,0 +1,29 @@ +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 new file mode 100644 index 000000000..54f9b8a6a --- /dev/null +++ b/htdocs/docs/man/CGI.txt @@ -0,0 +1,47 @@ +NAME + FS::CGI - Subroutines for the web interface + +SYNOPSIS + use FS::CGI qw(header menubar idiot eidiot); + + print header( 'Title', '' ); + print header( 'Title', menubar('item', 'URL', ... ) ); + + idiot "error message"; + eidiot "error message"; + +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 + Sends headers and an HTML error message. + + eidiot ERROR + Sends headers and an HTML error message, then exits. + +BUGS + Not OO. + + Not complete. + + Uses CGI-modules instead of CGI.pm + +SEE ALSO + 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 + diff --git a/htdocs/docs/man/Conf.txt b/htdocs/docs/man/Conf.txt new file mode 100644 index 000000000..c46c9ee6a --- /dev/null +++ b/htdocs/docs/man/Conf.txt @@ -0,0 +1,47 @@ +NAME + FS::Conf - Read access to Freeside configuration values + +SYNOPSIS + use FS::Conf; + + $conf = new FS::Conf; + $conf = new FS::Conf "/non/standard/config/directory"; + + $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. Optionally, a non-default + directory may be specified. + + 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 + The option to specify a non-default directory should probably be + removed. + + Write access (with locking) should be implemented. + +SEE ALSO + config.html from the base documentation contains a list of + configuration files. + +HISTORY + Ivan Kohler 98-sep-6 + diff --git a/htdocs/docs/man/Invoice.txt b/htdocs/docs/man/Invoice.txt new file mode 100644 index 000000000..17953d51d --- /dev/null +++ b/htdocs/docs/man/Invoice.txt @@ -0,0 +1,23 @@ +NAME + FS::Invoice - Legacy stub + +SYNOPSIS + The functioanlity 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 + diff --git a/htdocs/docs/man/Record.txt b/htdocs/docs/man/Record.txt new file mode 100644 index 000000000..0accb65d1 --- /dev/null +++ b/htdocs/docs/man/Record.txt @@ -0,0 +1,332 @@ +NAME + FS::Record - Database record objects + +SYNOPSIS + use FS::Record; + use FS::Record qw(dbh fields hfields 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->add; + + $error = $record->del; + + $error = $new_record->rep($old_record); + + $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'; + +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. + +METHODS + new TABLE, HASHREF + Creates a new record. It doesn't store it in the database, + though. See the section on "add" 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. + + 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::Record objects. + + qsearchs TABLE, HASHREF + Searches the database for a record matching (at least) the + key/value pairs in HASHREF, and returns the record found as + an FS::Record object. 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. + + 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. + + add Adds this record to the database. If there is an error, returns + the error, otherwise returns false. + + del Delete this record from the database. If there is an error, + returns the error, otherwise returns false. + + rep OLD_RECORD + Replace the OLD_RECORD with this one in the database. If + there is an error, returns the error, otherwise returns + false. + + 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. + +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. + + fields TABLE + This returns a list of the columns in this record's + table (See the dbdef_table manpage). + +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 with 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. + +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 + diff --git a/htdocs/docs/man/SSH.txt b/htdocs/docs/man/SSH.txt new file mode 100644 index 000000000..b6d205b55 --- /dev/null +++ b/htdocs/docs/man/SSH.txt @@ -0,0 +1,63 @@ +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 new file mode 100644 index 000000000..bf9f6b4bd --- /dev/null +++ b/htdocs/docs/man/UID.txt @@ -0,0 +1,79 @@ +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; + + $cgi = new CGI::Base; + $cgi->get; + $dbh = cgisuidsetup($cgi); + + $dbh = dbh; + + $datasrc = datasrc; + +DESCRIPTION + Provides a hodgepodge of subroutines. + +SUBROUTINES + adminsuidsetup + 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. Returns the DBI + database handle (usually you don't need this). + + dbh Returns the DBI database handle. + + datasrc + Returns the DBI data source. + + getotaker + Returns the current Freeside user. Currently that means the + CGI REMOTE_USER, or 'freeside'. + + 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. + +BUGS + Not OO. + + No capabilities yet. When mod_perl and Authen::DBI are + implemented, cgisuidsetup will go away as well. + +SEE ALSO + the FS::Record manpage, the CGI::Base manpage, the DBI manpage + +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 + diff --git a/htdocs/docs/man/agent.txt b/htdocs/docs/man/agent.txt new file mode 100644 index 000000000..b0317f6f7 --- /dev/null +++ b/htdocs/docs/man/agent.txt @@ -0,0 +1,65 @@ +NAME + FS::agent - Object methods for agent records + +SYNOPSIS + use FS::agent; + + $record = create FS::agent \%hash; + $record = create 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 + create 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. + +BUGS + It doesn't properly override FS::Record yet. + +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 new file mode 100644 index 000000000..ea1edec0c --- /dev/null +++ b/htdocs/docs/man/agent_type.txt @@ -0,0 +1,72 @@ +NAME + FS::agent_type - Object methods for agent_type records + +SYNOPSIS + use FS::agent_type; + + $record = create FS::agent_type \%hash; + $record = create 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 + create 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. + +BUGS + It doesn't properly override FS::Record yet. + +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 + diff --git a/htdocs/docs/man/cust_bill.txt b/htdocs/docs/man/cust_bill.txt new file mode 100644 index 000000000..9762dd3ca --- /dev/null +++ b/htdocs/docs/man/cust_bill.txt @@ -0,0 +1,140 @@ +NAME + FS::cust_bill - Object methods for cust_bill records + +SYNOPSIS + use FS::cust_bill; + + $record = create FS::cust_bill \%hash; + $record = create 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 + create 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. + +BUGS + The delete method. + + It doesn't properly override FS::Record yet. + + print_text formatting (and some logic :/) is in source as a + format declaration, which needs to be slurped in from a file. + the fork is rather kludgy as well. It could be cleaned with + swrite from man perlform, and the picture could be put in a + /var/spool/freeside/conf 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?) + + There is an off-by-one error in print_text which causes a visual + error: "Page 1 of 2" printed on some single-page invoices? + +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 + diff --git a/htdocs/docs/man/cust_bill_pkg.txt b/htdocs/docs/man/cust_bill_pkg.txt new file mode 100644 index 000000000..1ca4b8cca --- /dev/null +++ b/htdocs/docs/man/cust_bill_pkg.txt @@ -0,0 +1,72 @@ +NAME + FS::cust_bill_pkg - Object methods for cust_bill_pkg records + +SYNOPSIS + use FS::cust_bill_pkg; + + $record = create FS::cust_bill_pkg \%hash; + $record = create 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 + create 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. + +BUGS + It doesn't properly override FS::Record yet. + +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 new file mode 100644 index 000000000..84591ee81 --- /dev/null +++ b/htdocs/docs/man/cust_credit.txt @@ -0,0 +1,75 @@ +NAME + FS::cust_credit - Object methods for cust_credit records + +SYNOPSIS + use FS::cust_credit; + + $record = create FS::cust_credit \%hash; + $record = create 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 + create 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. + +BUGS + The delete method. + + It doesn't properly override FS::Record yet. + +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 + diff --git a/htdocs/docs/man/cust_main.txt b/htdocs/docs/man/cust_main.txt new file mode 100644 index 000000000..df7848744 --- /dev/null +++ b/htdocs/docs/man/cust_main.txt @@ -0,0 +1,200 @@ +NAME + FS::cust_main - Object methods for cust_main records + +SYNOPSIS + use FS::cust_main; + + $record = create FS::cust_main \%hash; + $record = create 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 + create 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). + +BUGS + The delete method. + + It doesn't properly override FS::Record yet. + + hfields should be removed. + + 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. + +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::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 + diff --git a/htdocs/docs/man/cust_main_county.txt b/htdocs/docs/man/cust_main_county.txt new file mode 100644 index 000000000..8e99397cc --- /dev/null +++ b/htdocs/docs/man/cust_main_county.txt @@ -0,0 +1,67 @@ +NAME + FS::cust_main_county - Object methods for cust_main_county + objects + +SYNOPSIS + use FS::cust_main_county; + + $record = create FS::cust_main_county \%hash; + $record = create 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 + tax - percentage +METHODS + create 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. + +BUGS + It doesn't properly override FS::Record yet. + + A country field (and possibly a currency field) should be added. + +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 + diff --git a/htdocs/docs/man/cust_pay.txt b/htdocs/docs/man/cust_pay.txt new file mode 100644 index 000000000..9f28d0822 --- /dev/null +++ b/htdocs/docs/man/cust_pay.txt @@ -0,0 +1,66 @@ +NAME + FS::cust_pay - Object methods for cust_pay objects + +SYNOPSIS + use FS::cust_pay; + + $record = create FS::cust_pay \%hash; + $record = create 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 + create 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. + +BUGS + It doesn't properly override FS::Record yet. + + 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 + diff --git a/htdocs/docs/man/cust_pkg.txt b/htdocs/docs/man/cust_pkg.txt new file mode 100644 index 000000000..5409083d8 --- /dev/null +++ b/htdocs/docs/man/cust_pkg.txt @@ -0,0 +1,150 @@ +NAME + FS::cust_pkg - Object methods for cust_pkg objects + +SYNOPSIS + use FS::cust_pkg; + + $record = create FS::cust_pkg \%hash; + $record = create 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; + + $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 + create 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. + + 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. + + sub delete { return "Can't delete cust_pkg records!"; } + + 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. + + pkgpart may not be changed, but 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. + +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). + +BUGS + It doesn't properly override FS::Record yet. + + 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. + +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 + diff --git a/htdocs/docs/man/cust_refund.txt b/htdocs/docs/man/cust_refund.txt new file mode 100644 index 000000000..392a0b57a --- /dev/null +++ b/htdocs/docs/man/cust_refund.txt @@ -0,0 +1,66 @@ +NAME + FS::cust_refund - Object method for cust_refund objects + +SYNOPSIS + use FS::cust_refund; + + $record = create FS::cust_refund \%hash; + $record = create 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 + create 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. + +BUGS + It doesn't properly override FS::Record yet. + + 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 + diff --git a/htdocs/docs/man/cust_svc.txt b/htdocs/docs/man/cust_svc.txt new file mode 100644 index 000000000..d863ea852 --- /dev/null +++ b/htdocs/docs/man/cust_svc.txt @@ -0,0 +1,72 @@ +NAME + FS::cust_svc - Object method for cust_svc objects + +SYNOPSIS + use FS::cust_svc; + + $record = create FS::cust_svc \%hash + $record = create FS::cust_svc { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +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 + create 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. + +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 checket in general (here). + +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 + diff --git a/htdocs/docs/man/dbdef.txt b/htdocs/docs/man/dbdef.txt new file mode 100644 index 000000000..6f1215a84 --- /dev/null +++ b/htdocs/docs/man/dbdef.txt @@ -0,0 +1,80 @@ +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 new file mode 100644 index 000000000..a7eebc6c7 --- /dev/null +++ b/htdocs/docs/man/dbdef_colgroup.txt @@ -0,0 +1,51 @@ +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 new file mode 100644 index 000000000..93e239517 --- /dev/null +++ b/htdocs/docs/man/dbdef_column.txt @@ -0,0 +1,69 @@ +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, + 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_table manpage, the FS::dbdef manpage, the DBI + manpage + +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 + diff --git a/htdocs/docs/man/dbdef_index.txt b/htdocs/docs/man/dbdef_index.txt new file mode 100644 index 000000000..8cf339b84 --- /dev/null +++ b/htdocs/docs/man/dbdef_index.txt @@ -0,0 +1,27 @@ +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 new file mode 100644 index 000000000..25e010d8b --- /dev/null +++ b/htdocs/docs/man/dbdef_table.txt @@ -0,0 +1,94 @@ +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 + +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 + diff --git a/htdocs/docs/man/dbdef_unique.txt b/htdocs/docs/man/dbdef_unique.txt new file mode 100644 index 000000000..0e4f0150b --- /dev/null +++ b/htdocs/docs/man/dbdef_unique.txt @@ -0,0 +1,27 @@ +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 new file mode 100644 index 000000000..4f33dd485 --- /dev/null +++ b/htdocs/docs/man/index.html @@ -0,0 +1,48 @@ + + Perl API + + +

Perl API

+ +
+ +
+