freeside/FS/FS part_pkg.pm,1.30,1.31
ivan
ivan at pouncequick.420.am
Tue Nov 30 19:35:09 PST 2004
Update of /home/cvs/cvsroot/freeside/FS/FS
In directory pouncequick:/tmp/cvs-serv24250/FS/FS
Modified Files:
part_pkg.pm
Log Message:
creditcard-less promo code signup
Index: part_pkg.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_pkg.pm,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- part_pkg.pm 26 Nov 2004 08:51:51 -0000 1.30
+++ part_pkg.pm 1 Dec 2004 03:35:05 -0000 1.31
@@ -453,9 +453,9 @@
Returns a list of the acceptable payment types for this package. Eventually
this should come out of a database table and be editable, but currently has the
-following logic instead;
+following logic instead:
-If the package has B<0> setup and B<0> recur, the single item B<BILL> is
+If the package is free, the single item B<BILL> is
returned, otherwise, the single item B<CARD> is returned.
(CHEK? LEC? Probably shouldn't accept those by default, prone to abuse)
@@ -464,12 +464,32 @@
sub payby {
my $self = shift;
- #if ( $self->setup == 0 && $self->recur == 0 ) {
- if ( $self->setup =~ /^\s*0+(\.0*)?\s*$/
- && $self->recur =~ /^\s*0+(\.0*)?\s*$/ ) {
+ if ( $self->is_free ) {
( 'BILL' );
} else {
( 'CARD' );
+ }
+}
+
+=item is_free
+
+Returns true if this package is free.
+
+=cut
+
+sub is_free {
+ my $self = shift;
+ unless ( $self->plan ) {
+ $self->setup =~ /^\s*0+(\.0*)?\s*$/
+ && $self->recur =~ /^\s*0+(\.0*)?\s*$/;
+ } elsif ( $self->can('is_free_options') ) {
+ not grep { $_ !~ /^\s*0*(\.0*)?\s*$/ }
+ map { $self->option($_) }
+ $self->is_free_options;
+ } else {
+ warn "FS::part_pkg::is_free: FS::part_pkg::". $self->plan. " subclass ".
+ "provides neither is_free_options nor is_free method; returning false";
+ 0;
}
}
More information about the freeside-commits
mailing list