projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
on-demand vs. automatic cards & checks: added DCRD and DCHK payment types
[freeside.git]
/
FS
/
FS
/
cust_bill.pm
diff --git
a/FS/FS/cust_bill.pm
b/FS/FS/cust_bill.pm
index
3e93778
..
aa82eb6
100644
(file)
--- a/
FS/FS/cust_bill.pm
+++ b/
FS/FS/cust_bill.pm
@@
-7,6
+7,7
@@
use vars qw( $xaction $E_NoErr );
use vars qw( $bop_processor $bop_login $bop_password $bop_action @bop_options );
use vars qw( $ach_processor $ach_login $ach_password $ach_action @ach_options );
use vars qw( $invoice_lines @buf ); #yuck
use vars qw( $bop_processor $bop_login $bop_password $bop_action @bop_options );
use vars qw( $ach_processor $ach_login $ach_password $ach_action @ach_options );
use vars qw( $invoice_lines @buf ); #yuck
+use vars qw( $quiet );
use Date::Format;
use Mail::Internet 1.44;
use Mail::Header;
use Date::Format;
use Mail::Internet 1.44;
use Mail::Header;
@@
-35,6
+36,11
@@
$FS::UID::callback{'FS::cust_bill'} = sub {
$invoice_from = $conf->config('invoice_from');
$smtpmachine = $conf->config('smtpmachine');
$invoice_from = $conf->config('invoice_from');
$smtpmachine = $conf->config('smtpmachine');
+ ( $bop_processor,$bop_login, $bop_password, $bop_action ) = ( '', '', '', '');
+ @bop_options = ();
+ ( $ach_processor,$ach_login, $ach_password, $ach_action ) = ( '', '', '', '');
+ @ach_options = ();
+
if ( $conf->exists('business-onlinepayment') ) {
( $bop_processor,
$bop_login,
if ( $conf->exists('business-onlinepayment') ) {
( $bop_processor,
$bop_login,
@@
-627,7
+633,7
@@
for supported processors.
sub realtime_ach {
my $self = shift;
$self->realtime_bop(
sub realtime_ach {
my $self = shift;
$self->realtime_bop(
- 'CHECK',
+ '
E
CHECK',
$ach_processor,
$ach_login,
$ach_password,
$ach_processor,
$ach_login,
$ach_password,
@@
-661,6
+667,10
@@
sub realtime_lec {
sub realtime_bop {
my( $self, $method, $processor, $login, $password, $action, $options ) = @_;
sub realtime_bop {
my( $self, $method, $processor, $login, $password, $action, $options ) = @_;
+
+ #trim an extraneous blank line
+ pop @$options if scalar(@$options) % 2 && $options->[-1] =~ /^\s*$/;
+
my $cust_main = $self->cust_main;
my $amount = $self->owed;
my $cust_main = $self->cust_main;
my $amount = $self->owed;
@@
-668,7
+678,7
@@
sub realtime_bop {
$address .= ", ". $cust_main->address2 if $cust_main->address2;
my($payname, $payfirst, $paylast);
$address .= ", ". $cust_main->address2 if $cust_main->address2;
my($payname, $payfirst, $paylast);
- if ( $cust_main->payname && $method ne 'CHECK' ) {
+ if ( $cust_main->payname && $method ne '
E
CHECK' ) {
$payname = $cust_main->payname;
$payname =~ /^\s*([\w \,\.\-\']*)?\s+([\w\,\.\-\']+)\s*$/
or do {
$payname = $cust_main->payname;
$payname =~ /^\s*([\w \,\.\-\']*)?\s+([\w\,\.\-\']+)\s*$/
or do {
@@
-712,7
+722,7
@@
sub realtime_bop {
$content{card_number} = $cust_main->payinfo;
$cust_main->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/;
$content{expiration} = "$2/$1";
$content{card_number} = $cust_main->payinfo;
$cust_main->paydate =~ /^\d{2}(\d{2})[\/\-](\d+)[\/\-]\d+$/;
$content{expiration} = "$2/$1";
- } elsif ( $method eq 'CHECK' ) {
+ } elsif ( $method eq '
E
CHECK' ) {
my($account_number,$routing_code) = $cust_main->payinfo;
( $content{account_number}, $content{routing_code} ) =
split('@', $cust_main->payinfo);
my($account_number,$routing_code) = $cust_main->payinfo;
( $content{account_number}, $content{routing_code} ) =
split('@', $cust_main->payinfo);
@@
-793,9
+803,9
@@
sub realtime_bop {
if ( $transaction->is_success() ) {
my %method2payby = (
if ( $transaction->is_success() ) {
my %method2payby = (
- 'CC' => 'CARD',
- 'CHECK' => 'CHEK',
- 'LEC' => 'LECB',
+ 'CC'
=> 'CARD',
+ '
E
CHECK' => 'CHEK',
+ 'LEC'
=> 'LECB',
);
my $cust_pay = new FS::cust_pay ( {
);
my $cust_pay = new FS::cust_pay ( {
@@
-823,7
+833,7
@@
sub realtime_bop {
my $perror = "$processor error, invnum #". $self->invnum. ': '.
$transaction->result_code. ": ". $transaction->error_message;
my $perror = "$processor error, invnum #". $self->invnum. ': '.
$transaction->result_code. ": ". $transaction->error_message;
- if ( $conf->exists('emaildecline')
+ if (
!$quiet &&
$conf->exists('emaildecline')
&& grep { $_ ne 'POST' } $cust_main->invoicing_list
) {
my @templ = $conf->config('declinetemplate');
&& grep { $_ ne 'POST' } $cust_main->invoicing_list
) {
my @templ = $conf->config('declinetemplate');
@@
-943,38
+953,43
@@
sub print_text {
}
#new charges
}
#new charges
- foreach ( ( grep { $_->pkgnum } $self->cust_bill_pkg ), #packages first
- ( grep { ! $_->pkgnum } $self->cust_bill_pkg ), #then taxes
+ foreach my $cust_bill_pkg (
+ ( grep { $_->pkgnum } $self->cust_bill_pkg ), #packages first
+ ( grep { ! $_->pkgnum } $self->cust_bill_pkg ), #then taxes
) {
) {
- if ( $
_
->pkgnum ) {
+ if ( $
cust_bill_pkg
->pkgnum ) {
- my
($cust_pkg)=qsearchs('cust_pkg', { 'pkgnum', $_
->pkgnum } );
- my
($part_pkg)=qsearchs('part_pkg',{'pkgpart'=>$cust_pkg->pkgpart}
);
- my
($pkg)=
$part_pkg->pkg;
+ my
$cust_pkg = qsearchs('cust_pkg', { pkgnum =>$cust_bill_pkg
->pkgnum } );
+ my
$part_pkg = qsearchs('part_pkg', { pkgpart=>$cust_pkg->pkgpart }
);
+ my
$pkg =
$part_pkg->pkg;
- if ( $_->setup != 0 ) {
- push @buf, [ "$pkg Setup", $money_char. sprintf("%10.2f",$_->setup) ];
+ if ( $cust_bill_pkg->setup != 0 ) {
+ push @buf, [ "$pkg Setup",
+ $money_char. sprintf("%10.2f", $cust_bill_pkg->setup) ];
push @buf,
map { [ " ". $_->[0]. ": ". $_->[1], '' ] } $cust_pkg->labels;
}
push @buf,
map { [ " ". $_->[0]. ": ". $_->[1], '' ] } $cust_pkg->labels;
}
- if ( $
_
->recur != 0 ) {
+ if ( $
cust_bill_pkg
->recur != 0 ) {
push @buf, [
push @buf, [
- "$pkg (" . time2str("%x",
$_
->sdate) . " - " .
- time2str("%x",
$_
->edate) . ")",
- $money_char. sprintf("%10.2f",
$_
->recur)
+ "$pkg (" . time2str("%x",
$cust_bill_pkg
->sdate) . " - " .
+ time2str("%x",
$cust_bill_pkg
->edate) . ")",
+ $money_char. sprintf("%10.2f",
$cust_bill_pkg
->recur)
];
push @buf,
map { [ " ". $_->[0]. ": ". $_->[1], '' ] } $cust_pkg->labels;
}
];
push @buf,
map { [ " ". $_->[0]. ": ". $_->[1], '' ] } $cust_pkg->labels;
}
+ push @buf, map { [ " $_", '' ] } $cust_bill_pkg->details;
+
} else { #pkgnum tax
} else { #pkgnum tax
- my $itemdesc = defined $
_
->dbdef_table->column('itemdesc')
- ? ( $
_
->itemdesc || 'Tax' )
+ my $itemdesc = defined $
cust_bill_pkg
->dbdef_table->column('itemdesc')
+ ? ( $
cust_bill_pkg
->itemdesc || 'Tax' )
: 'Tax';
: 'Tax';
- push @buf,[$itemdesc, $money_char. sprintf("%10.2f",$_->setup) ]
- if $_->setup != 0;
+ push @buf, [ $itemdesc,
+ $money_char. sprintf("%10.2f", $cust_bill_pkg->setup) ]
+ if $cust_bill_pkg->setup != 0;
}
}
}
}
@@
-1032,9
+1047,9
@@
sub print_text {
or die "cannot load config file $templatefile";
$invoice_lines = 0;
my $wasfunc = 0;
or die "cannot load config file $templatefile";
$invoice_lines = 0;
my $wasfunc = 0;
- foreach ( grep /invoice_lines\(\d
+
\)/, @invoice_template ) { #kludgy
- /invoice_lines\((\d
+
)\)/;
- $invoice_lines += $1;
+ foreach ( grep /invoice_lines\(\d
*
\)/, @invoice_template ) { #kludgy
+ /invoice_lines\((\d
*
)\)/;
+ $invoice_lines += $1
|| scalar(@buf)
;
$wasfunc=1;
}
die "no invoice_lines() functions in template?" unless $wasfunc;
$wasfunc=1;
}
die "no invoice_lines() functions in template?" unless $wasfunc;
@@
-1047,11
+1062,12
@@
sub print_text {
#setup template variables
package FS::cust_bill::_template; #!
#setup template variables
package FS::cust_bill::_template; #!
- use vars qw( $invnum $date $page $total_pages @address $overdue @buf );
+ use vars qw( $invnum $date $page $total_pages @address $overdue @buf
$agent
);
$invnum = $self->invnum;
$date = $self->_date;
$page = 1;
$invnum = $self->invnum;
$date = $self->_date;
$page = 1;
+ $agent = $self->cust_main->agent->agent;
if ( $FS::cust_bill::invoice_lines ) {
$total_pages =
if ( $FS::cust_bill::invoice_lines ) {
$total_pages =
@@
-1092,16
+1108,14
@@
sub print_text {
# );
#and subroutine for the template
# );
#and subroutine for the template
-
sub FS::cust_bill::_template::invoice_lines {
sub FS::cust_bill::_template::invoice_lines {
- my $lines = shift
or return @buf
;
+ my $lines = shift
|| scalar(@buf)
;
map {
scalar(@buf) ? shift @buf : [ '', '' ];
}
( 1 .. $lines );
}
map {
scalar(@buf) ? shift @buf : [ '', '' ];
}
( 1 .. $lines );
}
-
#and fill it in
$FS::cust_bill::_template::page = 1;
my $lines;
#and fill it in
$FS::cust_bill::_template::page = 1;
my $lines;
@@
-1119,10
+1133,6
@@
sub print_text {
=back
=back
-=head1 VERSION
-
-$Id: cust_bill.pm,v 1.53 2002-11-19 10:09:34 ivan Exp $
-
=head1 BUGS
The delete method.
=head1 BUGS
The delete method.