summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2002-11-19 09:51:59 +0000
committerivan <ivan>2002-11-19 09:51:59 +0000
commit789c34c5251f4b831a7cb27bd2a9af700ccf2ced (patch)
treecfdee230d56d5454bbf45d5643945871161f4c5c /FS
parentd9877cfc04344365f799b52057a13fc39c5743b7 (diff)
add LEC billing
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/cust_bill.pm29
-rw-r--r--FS/FS/cust_main.pm17
-rw-r--r--FS/FS/cust_pay.pm6
-rw-r--r--FS/FS/cust_refund.pm6
-rw-r--r--FS/FS/part_bill_event.pm4
-rw-r--r--FS/FS/part_export/ldap.pm2
-rw-r--r--FS/FS/part_pkg.pm2
7 files changed, 51 insertions, 15 deletions
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index 708b99746..a682c5958 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -637,6 +637,28 @@ sub realtime_ach {
);
}
+=item realtime_lec
+
+Attempts to pay this invoice with phone bill (LEC) payment via a
+Business::OnlinePayment realtime gateway. See
+http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment
+for supported processors.
+
+=cut
+
+sub realtime_ach {
+ my $self = shift;
+ $self->realtime_bop(
+ 'LEC',
+ $bop_processor,
+ $bop_login,
+ $bop_password,
+ $bop_action,
+ \@bop_options,
+ @_
+ );
+}
+
sub realtime_bop {
my( $self, $method, $processor, $login, $password, $action, $options ) = @_;
my $cust_main = $self->cust_main;
@@ -695,12 +717,13 @@ sub realtime_bop {
( $content{account_number}, $content{routing_code} ) =
split('@', $cust_main->payinfo);
$content{bank_name} = $cust_main->payname;
+ } elsif ( $method eq 'LEC' ) {
+ $content{phone} = $cust_main->payinfo;
}
my $transaction =
new Business::OnlinePayment( $processor, @$options );
$transaction->content(
- %content,
'type' => $method,
'login' => $login,
'password' => $password,
@@ -720,6 +743,7 @@ sub realtime_bop {
'referer' => 'http://cleanwhisker.420.am/',
'email' => $email,
'phone' => $cust_main->daytime || $cust_main->night,
+ %content, #after
);
$transaction->submit();
@@ -771,6 +795,7 @@ sub realtime_bop {
my %method2payby = (
'CC' => 'CARD',
'CHECK' => 'CHEK',
+ 'LEC' => 'LECB',
);
my $cust_pay = new FS::cust_pay ( {
@@ -1096,7 +1121,7 @@ sub print_text {
=head1 VERSION
-$Id: cust_bill.pm,v 1.51 2002-11-16 10:33:16 ivan Exp $
+$Id: cust_bill.pm,v 1.52 2002-11-19 09:51:58 ivan Exp $
=head1 BUGS
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index f9f473db9..4a5cff2fc 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -158,7 +158,7 @@ FS::Record. The following fields are currently supported:
=item ship_fax - phone (optional)
-=item payby - `CARD' (credit cards), `CHEK' (electronic check), `BILL' (billing), `COMP' (free), or `PREPAY' (special billing type: applies a credit - see L<FS::prepay_credit> and sets billing type to BILL)
+=item payby - `CARD' (credit cards), `CHEK' (electronic check), `LECB' (Phone bill billing), `BILL' (billing), `COMP' (free), or `PREPAY' (special billing type: applies a credit - see L<FS::prepay_credit> and sets billing type to BILL)
=item payinfo - card number, P.O., comp issuer (4-8 lowercase alphanumerics; think username) or prepayment identifier (see L<FS::prepay_credit>)
@@ -484,14 +484,15 @@ sub replace {
$self->invoicing_list( $invoicing_list );
}
- if ( $self->payby =~ /^(CARD|CHEK)$/ &&
+ if ( $self->payby =~ /^(CARD|CHEK|LECB)$/ &&
grep { $self->get($_) ne $old->get($_) } qw(payinfo paydate payname) ) {
# card/check info has changed, want to retry realtime_card invoice events
#false laziness w/collect
foreach my $cust_bill_event (
grep {
#$_->part_bill_event->plan eq 'realtime-card'
- $_->part_bill_event->eventcode eq '$cust_bill->realtime_card();'
+ $_->part_bill_event->eventcode =~
+ /^\$cust_bill\->realtime_(card|ach|lec)\(\);$/
&& $_->status eq 'done'
&& $_->statustext
}
@@ -691,6 +692,14 @@ sub check {
$payinfo = "$1\@$2";
$self->payinfo($payinfo);
+ } elsif ( $self->payby eq 'LECB' ) {
+
+ my $payinfo = $self->payinfo;
+ $payinfo =~ s/\D//g;
+ $payinfo =~ /^1?(\d{10})$/ or return 'invalid btn billing telephone number';
+ $payinfo = $1;
+ $self->payinfo($payinfo);
+
} elsif ( $self->payby eq 'BILL' ) {
$error = $self->ut_textn('payinfo');
@@ -715,7 +724,7 @@ sub check {
if ( $self->paydate eq '' || $self->paydate eq '-' ) {
return "Expriation date required"
- unless $self->payby =~ /^(BILL|PREPAY|CHEK)$/;
+ unless $self->payby =~ /^(BILL|PREPAY|CHEK|LECB)$/;
$self->paydate('');
} else {
$self->paydate =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 222691408..79cf82755 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -61,7 +61,7 @@ currently supported:
L<Time::Local> and L<Date::Parse> for conversion functions.
=item payby - `CARD' (credit cards), `CHEK' (electronic check/ACH),
-`BILL' (billing), or `COMP' (free)
+`LECB' (phone bill billing), `BILL' (billing), or `COMP' (free)
=item payinfo - card number, check #, or comp issuer (4-8 lowercase alphanumerics; think username), respectively
@@ -347,7 +347,7 @@ sub check {
$self->_date(time) unless $self->_date;
- $self->payby =~ /^(CARD|CHEK|BILL|COMP)$/ or return "Illegal payby";
+ $self->payby =~ /^(CARD|CHEK|LECB|BILL|COMP)$/ or return "Illegal payby";
$self->payby($1);
#false laziness with cust_refund::check
@@ -406,7 +406,7 @@ sub unapplied {
=head1 VERSION
-$Id: cust_pay.pm,v 1.22 2002-10-12 10:15:55 ivan Exp $
+$Id: cust_pay.pm,v 1.23 2002-11-19 09:51:58 ivan Exp $
=head1 BUGS
diff --git a/FS/FS/cust_refund.pm b/FS/FS/cust_refund.pm
index aac320e61..763671736 100644
--- a/FS/FS/cust_refund.pm
+++ b/FS/FS/cust_refund.pm
@@ -48,7 +48,7 @@ inherits from FS::Record. The following fields are currently supported:
L<Time::Local> and L<Date::Parse> for conversion functions.
=item payby - `CARD' (credit cards), `CHEK' (electronic check/ACH),
-`BILL' (billing), or `COMP' (free)
+`LECB' (Phone bill billing), `BILL' (billing), or `COMP' (free)
=item payinfo - card number, P.O.#, or comp issuer (4-8 lowercase alphanumerics; think username)
@@ -235,7 +235,7 @@ sub check {
unless $self->crednum
|| qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
- $self->payby =~ /^(CARD|CHEK|BILL|COMP)$/ or return "Illegal payby";
+ $self->payby =~ /^(CARD|CHEK|LECB|BILL|COMP)$/ or return "Illegal payby";
$self->payby($1);
#false laziness with cust_pay::check
@@ -267,7 +267,7 @@ sub check {
=head1 VERSION
-$Id: cust_refund.pm,v 1.19 2002-10-12 10:15:55 ivan Exp $
+$Id: cust_refund.pm,v 1.20 2002-11-19 09:51:58 ivan Exp $
=head1 BUGS
diff --git a/FS/FS/part_bill_event.pm b/FS/FS/part_bill_event.pm
index e86b5c1fb..dc10be879 100644
--- a/FS/FS/part_bill_event.pm
+++ b/FS/FS/part_bill_event.pm
@@ -37,7 +37,7 @@ FS::Record. The following fields are currently supported:
=item eventpart - primary key
-=item payby - CARD, CHEK, BILL, or COMP
+=item payby - CARD, CHEK, LECB, BILL, or COMP
=item event - event name
@@ -140,7 +140,7 @@ sub check {
}
my $error = $self->ut_numbern('eventpart')
- || $self->ut_enum('payby', [qw( CARD CHEK BILL COMP )] )
+ || $self->ut_enum('payby', [qw( CARD CHEK LECB BILL COMP )] )
|| $self->ut_text('event')
|| $self->ut_anything('eventcode')
|| $self->ut_number('seconds')
diff --git a/FS/FS/part_export/ldap.pm b/FS/FS/part_export/ldap.pm
index 40f27d695..ec1d37fd5 100644
--- a/FS/FS/part_export/ldap.pm
+++ b/FS/FS/part_export/ldap.pm
@@ -31,7 +31,7 @@ sub _export_insert {
grep { /^\s*(\w+)\s+(.*\S)\s*$/ }
split("\n", $self->option('attributes'));
- if ( $self->option('radius') {
+ if ( $self->option('radius') ) {
foreach my $table (qw(reply check)) {
my $method = "radius_$table";
my %radius = $svc_acct->$method();
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index f290420df..99d88d56a 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -282,6 +282,8 @@ following logic instead;
If the package has B<0> setup and B<0> recur, 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)
+
=cut
sub payby {