X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fprepay_credit.pm;h=cffedeb0fa748ebf720b1f8983bd1073bbe86a7d;hb=f441bdef352ddd432e305da35e80813ca30e517f;hp=86274aa4c4266d64c7937aa1996df16220f5f2c3;hpb=959663cd4d4885295f44de43ac005e55d054102f;p=freeside.git diff --git a/FS/FS/prepay_credit.pm b/FS/FS/prepay_credit.pm index 86274aa4c..cffedeb0f 100644 --- a/FS/FS/prepay_credit.pm +++ b/FS/FS/prepay_credit.pm @@ -2,8 +2,8 @@ package FS::prepay_credit; use strict; use vars qw( @ISA ); -#use FS::Record qw( qsearch qsearchs ); -use FS::Record qw(); +use FS::Record qw(qsearchs dbh); +use FS::agent; @ISA = qw(FS::Record); @@ -21,6 +21,12 @@ FS::prepay_credit - Object methods for prepay_credit records 'amount' => '19.95', }; + $record = new FS::prepay_credit { + 'identifier' => '4198123455512121' + 'seconds' => '7200', + }; + + $error = $record->insert; $error = $new_record->replace($old_record); @@ -31,8 +37,8 @@ FS::prepay_credit - Object methods for prepay_credit records =head1 DESCRIPTION -An FS::table_name object represents an pre--paid credit, such as a pre-paid -"calling card". FS::prepay_credit inherits from FS::Record. The following +An FS::prepay_credit object represents a pre-paid card. FS::prepay_credit +inherits from FS::Record. The following fields are currently supported: =over 4 @@ -43,6 +49,8 @@ fields are currently supported: =item amount - amount of the credit +=item seconds - time amount of credit (see L) + =back =head1 METHODS @@ -96,31 +104,84 @@ sub check { $identifier =~ s/\W//g; #anything else would just confuse things $self->identifier($identifier); - $self->ut_number('prepaynum') + $self->ut_numbern('prepaynum') || $self->ut_alpha('identifier') || $self->ut_money('amount') + || $self->ut_numbern('seconds') + || $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum') + || $self->SUPER::check ; } +=item agent + +Returns the agent (see L) for this prepaid card, if any. + +=cut + +sub agent { + my $self = shift; + qsearchs('agent', { 'agentnum' => $self->agentnum } ); +} + =back -=head1 VERSION +=head1 SUBROUTINES -$Id: prepay_credit.pm,v 1.1 2000-01-31 05:22:23 ivan Exp $ +=over 4 -=head1 BUGS +=item generate NUM TYPE HASHREF -=head1 SEE ALSO +Generates the specified number of prepaid cards. Returns an array reference of +the newly generated card identifiers, or a scalar error message. -L, schema.html from the base documentation. +=cut -=head1 HISTORY +#false laziness w/agent::generate_reg_codes +sub generate { + my( $num, $type, $hashref ) = @_; + + my @codeset = (); + push @codeset, ( 'A'..'Z' ) if $type =~ /alpha/; + push @codeset, ( '1'..'9' ) if $type =~ /numeric/; + + local $SIG{HUP} = 'IGNORE'; + local $SIG{INT} = 'IGNORE'; + local $SIG{QUIT} = 'IGNORE'; + local $SIG{TERM} = 'IGNORE'; + local $SIG{TSTP} = 'IGNORE'; + local $SIG{PIPE} = 'IGNORE'; + + my $oldAutoCommit = $FS::UID::AutoCommit; + local $FS::UID::AutoCommit = 0; + my $dbh = dbh; + + my @cards = (); + for ( 1 ... $num ) { + my $prepay_credit = new FS::prepay_credit { + 'identifier' => join('', map($codeset[int(rand $#codeset)], (0..7) ) ), + %$hashref, + }; + my $error = $prepay_credit->check || $prepay_credit->insert; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "(inserting prepay_credit) $error"; + } + push @cards, $prepay_credit->identifier; + } + + $dbh->commit or die $dbh->errstr if $oldAutoCommit; + + \@cards; -$Log: prepay_credit.pm,v $ -Revision 1.1 2000-01-31 05:22:23 ivan -prepaid "internet cards" +} + +=head1 BUGS + +=head1 SEE ALSO +L, L, schema.html from the base documentation. =cut