use FS::cust_bill_pay;
use FS::cust_pay_refund;
use FS::cust_main;
+use FS::cust_pkg;
use FS::cust_pay_void;
@ISA = qw( FS::payinfo_transaction_Mixin FS::cust_main_Mixin FS::Record );
-$DEBUG = 0;
+$DEBUG = 1;
$me = '[FS::cust_pay]';
=over 4
-=item paynum - primary key (assigned automatically for new payments)
+=item paynum
-=item custnum - customer (see L<FS::cust_main>)
+primary key (assigned automatically for new payments)
-=item _date - specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
+=item custnum
+
+customer (see L<FS::cust_main>)
+
+=item _date
+
+specified as a UNIX timestamp; see L<perlfunc/"time">. Also see
L<Time::Local> and L<Date::Parse> for conversion functions.
-=item paid - Amount of this payment
+=item paid
+
+Amount of this payment
+
+=item otaker
+
+order taker (assigned automatically, see L<FS::UID>)
+
+=item payby
+
+Payment Type (See L<FS::payinfo_Mixin> for valid payby values)
+
+=item payinfo
+
+Payment Information (See L<FS::payinfo_Mixin> for data format)
+
+=item paymask
+
+Masked payinfo (See L<FS::payinfo_Mixin> for how this works)
-=item otaker - order taker (assigned automatically, see L<FS::UID>)
+=item paybatch
-=item payby - Payment Type (See L<FS::payinfo_Mixin> for valid payby values)
+text field for tracking card processing or other batch grouping
-=item payinfo - Payment Information (See L<FS::payinfo_Mixin> for data format)
+=item payunique
-=item paymask - Masked payinfo (See L<FS::payinfo_Mixin> for how this works)
+Optional unique identifer to prevent duplicate transactions.
-=item paybatch - text field for tracking card processing or other batch grouping
+=item closed
-=item payunique - Optional unique identifer to prevent duplicate transactions.
+books closed flag, empty or `Y'
-=item closed - books closed flag, empty or `Y'
+=item pkgnum
+
+Desired pkgnum when using experimental package balances.
=back
my $payby = $self->payby;
my $payinfo = $self->payinfo;
$payby =~ s/^BILL$/Check/ if $payinfo;
- $payinfo = $self->paymask if $payby eq 'CARD' || $payby eq 'CHEK';
+ if ( $payby eq 'CARD' || $payby eq 'CHEK' ) {
+ $payinfo = $self->paymask
+ } else {
+ $payinfo = $self->decrypt($payinfo);
+ }
$payby =~ s/^CHEK$/Electronic check/;
$error = send_email(
- 'from' => $conf->config('invoice_from'), #??? well as good as any
+ 'from' => $conf->config('invoice_from', $cust_main->agentnum),
+ #invoice_from??? well as good as any
'to' => \@invoicing_list,
'subject' => 'Payment receipt',
'body' => [ $receipt_template->fill_in( HASH => {
- 'date' => time2str("%a %B %o, %Y", $self->_date),
- 'name' => $cust_main->name,
- 'paynum' => $self->paynum,
- 'paid' => sprintf("%.2f", $self->paid),
- 'payby' => ucfirst(lc($payby)),
- 'payinfo' => $payinfo,
- 'balance' => $cust_main->balance,
+ 'date' => time2str("%a %B %o, %Y", $self->_date),
+ 'name' => $cust_main->name,
+ 'paynum' => $self->paynum,
+ 'paid' => sprintf("%.2f", $self->paid),
+ 'payby' => ucfirst(lc($payby)),
+ 'payinfo' => $payinfo,
+ 'balance' => $cust_main->balance,
+ 'company_name' => $conf->config('company_name'),
} ) ],
);
return $error;
}
- if ( $conf->config('deletepayments') ne '' ) {
+ if ( $conf->exists('deletepayments')
+ && $conf->config('deletepayments') ne '' ) {
my $cust_main = $self->cust_main;
my $error = send_email(
- 'from' => $conf->config('invoice_from'), #??? well as good as any
+ 'from' => $conf->config('invoice_from', $self->cust_main->agentnum),
+ #invoice_from??? well as good as any
'to' => $conf->config('deletepayments'),
'subject' => 'FREESIDE NOTIFICATION: Payment deleted',
'body' => [
|| $self->ut_textn('paybatch')
|| $self->ut_textn('payunique')
|| $self->ut_enum('closed', [ '', 'Y' ])
+ || $self->ut_foreign_keyn('pkgnum', 'cust_pkg', 'pkgnum')
|| $self->payinfo_check()
;
return $error if $error;
sprintf("%.2f", $amount );
}
+=item amount
+
+Returns the "paid" field.
+
+=cut
+
+sub amount {
+ my $self = shift;
+ $self->paid();
+}
+
=back
=head1 CLASS METHODS
my $sth = dbh->prepare($count_sql) or die dbh->errstr;
$sth->execute or die $sth->errstr;
my $total = $sth->fetchrow_arrayref->[0];
-
+ #warn "$total cust_pay records to update\n"
+ # if $DEBUG;
local($DEBUG) = 2 if $total > 1000; #could be a while, force progress info
my $count = 0;
my $error = $cust_pay->replace;
if ( $error ) {
- warn " *** WARNING: Error updaating order taker for payment paynum".
+ warn " *** WARNING: Error updating order taker for payment paynum ".
$cust_pay->paynun. ": $error\n";
next;
}