diff options
Diffstat (limited to 'eg')
-rwxr-xr-x | eg/TEMPLATE_cust_main.import | 23 | ||||
-rw-r--r-- | eg/export_template.pm | 56 | ||||
-rw-r--r-- | eg/table_template-svc.pm | 161 | ||||
-rw-r--r-- | eg/table_template.pm | 112 |
4 files changed, 345 insertions, 7 deletions
diff --git a/eg/TEMPLATE_cust_main.import b/eg/TEMPLATE_cust_main.import index 39a5785db..e91a2f1d2 100755 --- a/eg/TEMPLATE_cust_main.import +++ b/eg/TEMPLATE_cust_main.import @@ -1,17 +1,21 @@ #!/usr/bin/perl -w - +# # Template for importing legacy customer data # -# ivan@sisd.com 98-aug-17 - 20 +# $Id: TEMPLATE_cust_main.import,v 1.4 2001-08-21 02:44:47 ivan Exp $ use strict; +use Date::Parse; use FS::UID qw(adminsuidsetup datasrc); use FS::Record qw(fields qsearch qsearchs); use FS::cust_main; use FS::cust_pkg; -use Date::Parse; +use FS::cust_svc; +use FS::svc_acct; +use FS::pkg_svc; -adminsuidsetup; +my $user = shift or die &usage; +adminsuidsetup $user; # use these for the imported cust_main records (unless you have these in legacy # data) @@ -90,7 +94,7 @@ while (<CLIENT>) { $svc{'First'} =~ s/&/and/go; $svc{'Zip'} =~ s/\s+$//go; - my($cust_main) = create FS::cust_main ( { + my($cust_main) = new FS::cust_main ( { 'custnum' => $svc{'custnum'}, 'agentnum' => $agentnum, 'last' => $svc{'last'}, @@ -121,7 +125,7 @@ while (<CLIENT>) { die $error; } - my($cust_pkg)=create FS::cust_pkg ( { + my($cust_pkg)=new FS::cust_pkg ( { 'custnum' => $svc{'custnum'}, 'pkgpart' => $pkgpart{$svc{'LegacyBillingData'}}, 'setup' => '', @@ -168,7 +172,7 @@ while (<CLIENT>) { } else { #create new cust_svc record linked to cust_pkg record - my($n_cust_svc) = create FS::cust_svc ({ + my($n_cust_svc) = new FS::cust_svc ({ 'svcnum' => $o_cust_svc->svcnum, 'pkgnum' => $cust_pkg->pkgnum, 'svcpart' => $pkg_svc->svcpart, @@ -187,3 +191,8 @@ while (<CLIENT>) { warn "\n$link of $line lines linked\n"; +# --- + +sub usage { + die "Usage:\n\n cust_main.import user\n"; +} diff --git a/eg/export_template.pm b/eg/export_template.pm new file mode 100644 index 000000000..ca58d4bed --- /dev/null +++ b/eg/export_template.pm @@ -0,0 +1,56 @@ +package FS::part_export::myexport; + +use vars qw(@ISA); +use FS::part_export; + +@ISA = qw(FS::part_export); + +sub rebless { shift; } + +sub _export_insert { + my($self, $svc_something) = (shift, shift); + $err_or_queue = $self->myexport_queue( $svc_something->svcnum, 'insert', + $svc_something->username, $svc_something->_password ); + ref($err_or_queue) ? '' : $err_or_queue; +} + +sub _export_replace { + my( $self, $new, $old ) = (shift, shift, shift); + #return "can't change username with myexport" + # if $old->username ne $new->username; + #return '' unless $old->_password ne $new->_password; + $err_or_queue = $self->myexport_queue( $new->svcnum, + 'replace', $new->username, $new->_password ); + ref($err_or_queue) ? '' : $err_or_queue; +} + +sub _export_delete { + my( $self, $svc_something ) = (shift, shift); + $err_or_queue = $self->myexport_queue( $svc_something->svcnum, + 'delete', $svc_something->username ); + ref($err_or_queue) ? '' : $err_or_queue; +} + +#a good idea to queue anything that could fail or take any time +sub myexport_queue { + my( $self, $svcnum, $method ) = (shift, shift, shift); + my $queue = new FS::queue { + 'svcnum' => $svcnum, + 'job' => "FS::part_export::myexport::myexport_$method", + }; + $queue->insert( @_ ) or $queue; +} + +sub myexport_insert { #subroutine, not method + my( $username, $password ) = @_; + #do things with $username and $password +} + +sub myexport_replace { #subroutine, not method +} + +sub myexport_delete { #subroutine, not method + my( $username ) = @_; + #do things with $username +} + diff --git a/eg/table_template-svc.pm b/eg/table_template-svc.pm new file mode 100644 index 000000000..ebf7299d2 --- /dev/null +++ b/eg/table_template-svc.pm @@ -0,0 +1,161 @@ +package FS::svc_table; + +use strict; +use vars qw(@ISA); +#use FS::Record qw( qsearch qsearchs ); +use FS::svc_Common; +use FS::cust_svc; + +@ISA = qw(svc_Common); + +=head1 NAME + +FS::table_name - Object methods for table_name records + +=head1 SYNOPSIS + + use FS::table_name; + + $record = new FS::table_name \%hash; + $record = new FS::table_name { '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; + +=head1 DESCRIPTION + +An FS::table_name object represents an example. FS::table_name inherits from +FS::svc_Common. The following fields are currently supported: + +=over 4 + +=item field - description + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new example. To add the example to the database, see L<"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 I<hash> method. + +=cut + +sub table { 'table_name'; } + +=item 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 L<FS::cust_svc>) should be +defined. An FS::cust_svc record will be created and inserted. + +=cut + +sub insert { + my $self = shift; + my $error; + + $error = $self->SUPER::insert; + return $error if $error; + + ''; +} + +=item delete + +Delete this record from the database. + +=cut + +sub delete { + my $self = shift; + my $error; + + $error = $self->SUPER::delete; + return $error if $error; + + ''; +} + + +=item replace OLD_RECORD + +Replaces the OLD_RECORD with this one in the database. If there is an error, +returns the error, otherwise returns false. + +=cut + +sub replace { + my ( $new, $old ) = ( shift, shift ); + my $error; + + $error = $new->SUPER::replace($old); + return $error if $error; + + ''; +} + +=item suspend + +Called by the suspend method of FS::cust_pkg (see L<FS::cust_pkg>). + +=item unsuspend + +Called by the unsuspend method of FS::cust_pkg (see L<FS::cust_pkg>). + +=item cancel + +Called by the cancel method of FS::cust_pkg (see L<FS::cust_pkg>). + +=item check + +Checks all fields to make sure this is a valid example. If there is +an error, returns the error, otherwise returns false. Called by the insert +and repalce methods. + +=cut + +sub check { + my $self = shift; + + my $x = $self->setfixed; + return $x unless ref($x); + my $part_svc = $x; + + + ''; #no error +} + +=back + +=head1 BUGS + +The author forgot to customize this manpage. + +=head1 SEE ALSO + +L<FS::svc_Common>, L<FS::Record>, L<FS::cust_svc>, L<FS::part_svc>, +L<FS::cust_pkg>, schema.html from the base documentation. + +=cut + +1; + diff --git a/eg/table_template.pm b/eg/table_template.pm new file mode 100644 index 000000000..d609bd544 --- /dev/null +++ b/eg/table_template.pm @@ -0,0 +1,112 @@ +package FS::table_name; + +use strict; +use vars qw( @ISA ); +use FS::Record qw( qsearch qsearchs ); + +@ISA = qw(FS::Record); + +=head1 NAME + +FS::table_name - Object methods for table_name records + +=head1 SYNOPSIS + + use FS::table_name; + + $record = new FS::table_name \%hash; + $record = new FS::table_name { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +=head1 DESCRIPTION + +An FS::table_name object represents an example. FS::table_name inherits from +FS::Record. The following fields are currently supported: + +=over 4 + +=item field - description + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new example. To add the example to the database, see L<"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 I<hash> method. + +=cut + +# the new method can be inherited from FS::Record, if a table method is defined + +sub table { 'table_name'; } + +=item insert + +Adds this record to the database. If there is an error, returns the error, +otherwise returns false. + +=cut + +# the insert method can be inherited from FS::Record + +=item delete + +Delete this record from the database. + +=cut + +# the delete method can be inherited from FS::Record + +=item replace OLD_RECORD + +Replaces the OLD_RECORD with this one in the database. If there is an error, +returns the error, otherwise returns false. + +=cut + +# the replace method can be inherited from FS::Record + +=item check + +Checks all fields to make sure this is a valid example. If there is +an error, returns the error, otherwise returns false. Called by the insert +and replace methods. + +=cut + +# the check method should currently be supplied - FS::Record contains some +# data checking routines + +sub check { + my $self = shift; + + ''; #no error +} + +=back + +=head1 BUGS + +The author forgot to customize this manpage. + +=head1 SEE ALSO + +L<FS::Record>, schema.html from the base documentation. + +=cut + +1; + |