summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorivan <ivan>2004-06-30 17:57:03 +0000
committerivan <ivan>2004-06-30 17:57:03 +0000
commit657537cc1cc0f78f5302e66d37c161d8e233de71 (patch)
treeffac68d579b6396ea6db50d721a5688fcf8f8064 /FS/FS
parent0b227319d33d012890891570891f9d9401ff89ff (diff)
payment receipts!
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/Conf.pm11
-rw-r--r--FS/FS/cust_bill_pay.pm15
-rw-r--r--FS/FS/cust_credit_bill.pm15
-rw-r--r--FS/FS/cust_pay.pm85
-rw-r--r--FS/FS/cust_pay_refund.pm10
5 files changed, 42 insertions, 94 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index d35b1ac..c553f0c 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -542,12 +542,19 @@ httemplate/docs/config.html
{
'key' => 'invoice_send_receipts',
- 'section' => 'billing',
- 'description' => 'Send receipts for payments and credits.',
+ 'section' => 'deprecated',q
+ 'description' => '<b>DEPRECATED</b>, this used to send an invoice copy on payments and credits. See the payment_receipt_email and instead.',
'type' => 'checkbox',
},
{
+ 'key' => 'payment_receipt_email',
+ 'section' => 'billing',
+ 'description' => 'Template file for payment receipts.',
+ 'type' => 'textarea',
+ },
+
+ {
'key' => 'lpr',
'section' => 'required',
'description' => 'Print command for paper invoices, for example `lpr -h\'',
diff --git a/FS/FS/cust_bill_pay.pm b/FS/FS/cust_bill_pay.pm
index f0cb132..7abbe9a 100644
--- a/FS/FS/cust_bill_pay.pm
+++ b/FS/FS/cust_bill_pay.pm
@@ -70,21 +70,6 @@ sub table { 'cust_bill_pay'; }
Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
-=cut
-
-sub insert {
- my $self = shift;
- my $error = $self->SUPER::insert;
- return $error if $error;
-
- if ( $conf->exists('invoice_send_receipts') ) {
- my $send_error = $self->cust_bill->send;
- warn "Error sending receipt: $send_error\n" if $send_error;
- }
-
- '';
-}
-
=item delete
Deletes this payment application, unless the closed flag for the parent payment
diff --git a/FS/FS/cust_credit_bill.pm b/FS/FS/cust_credit_bill.pm
index 0e5885f..695df6e 100644
--- a/FS/FS/cust_credit_bill.pm
+++ b/FS/FS/cust_credit_bill.pm
@@ -74,21 +74,6 @@ sub table { 'cust_credit_bill'; }
Adds this cust_credit_bill to the database ("Posts" all or part of a credit).
If there is an error, returns the error, otherwise returns false.
-=cut
-
-sub insert {
- my $self = shift;
- my $error = $self->SUPER::insert(@_);
- return $error if $error;
-
- if ( $conf->exists('invoice_send_receipts') ) {
- my $send_error = $self->cust_bill->send;
- warn "Error sending receipt: $send_error\n" if $send_error;
- }
-
- '';
-}
-
=item delete
Currently unimplemented.
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 111de05..d592313 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -4,6 +4,7 @@ use strict;
use vars qw( @ISA $conf $unsuspendauto );
use Date::Format;
use Business::CreditCard;
+use Text::Template;
use FS::UID qw( dbh );
use FS::Record qw( dbh qsearch qsearchs dbh );
use FS::Misc qw(send_email);
@@ -112,7 +113,7 @@ sub insert {
$self->custnum($cust_bill->custnum );
}
- my $cust_main = qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
+ my $cust_main = $self->cust_main;
my $old_balance = $cust_main->balance;
my $error = $self->check;
@@ -162,64 +163,44 @@ sub insert {
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
- '';
-
-}
-
-sub upgrade_replace { #1.3.x->1.4.x
- my $self = shift;
-
- 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 $error = $self->check;
- return $error if $error;
+ #my $cust_main = $self->cust_main;
+ if ( $conf->exists('payment_receipt_email')
+ && grep { $_ ne 'POST' } $cust_main->invoicing_list
+ ) {
+
+ my $receipt_template = new Text::Template (
+ TYPE => 'ARRAY',
+ SOURCE => [ map "$_\n", $conf->config('payment_receipt_email') ],
+ ) or do {
+ warn "can't create payment receipt template: $Text::Template::ERROR";
+ return '';
+ };
- my %new = $self->hash;
- my $new = FS::cust_pay->new(\%new);
+ my @invoicing_list = grep { $_ ne 'POST' } $cust_main->invoicing_list;
- if ( $self->invnum ) {
- my $cust_bill_pay = new FS::cust_bill_pay {
- 'invnum' => $self->invnum,
- 'paynum' => $self->paynum,
- 'amount' => $self->paid,
- '_date' => $self->_date,
- };
- $error = $cust_bill_pay->insert;
- if ( $error =~
- /total cust_bill_pay.amount and cust_credit_bill.amount .* for invnum .* greater than cust_bill.charged/ ) {
- #warn $error;
- my $cust_bill = qsearchs( 'cust_bill', { 'invnum' => $self->invnum } );
- $new->custnum($cust_bill->custnum);
- } elsif ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return $error;
- } else {
- $new->custnum($cust_bill_pay->cust_bill->custnum);
+ my $error = send_email(
+ 'from' => $conf->config('invoice_from'), #??? well as good as any
+ 'to' => \@invoicing_list,
+ 'subject' => 'Payment receipt',
+ 'body' => $receipt_template->fill_in( HASH => {
+ 'date' => str2time("%a %B %o, %Y", $self->_date),
+ 'paynum' => $self->paynum,
+ 'paid' => $self->paid,
+ 'payby' => ucfirst(lc($self->payby)),
+ 'payinfo' => ( $self->payby eq 'CARD'
+ ? $self->payinfo_masked
+ : $self->payinfo ),
+ 'balance' => $cust_main->balance,
+ } ),
+ );
+ if ( $error ) {
+ warn "can't send payment receipt: $error";
}
- } else {
- die;
- }
- $error = $new->SUPER::replace($self);
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return $error;
}
- $dbh->commit or die $dbh->errstr if $oldAutoCommit;
-
'';
-
}
=item delete
@@ -260,7 +241,7 @@ sub delete {
if ( $conf->config('deletepayments') ne '' ) {
- my $cust_main = qsearchs('cust_main',{ 'custnum' => $self->custnum });
+ my $cust_main = $self->cust_main;
my $error = send_email(
'from' => $conf->config('invoice_from'), #??? well as good as any
diff --git a/FS/FS/cust_pay_refund.pm b/FS/FS/cust_pay_refund.pm
index 55a5eb7..af25f17 100644
--- a/FS/FS/cust_pay_refund.pm
+++ b/FS/FS/cust_pay_refund.pm
@@ -73,16 +73,6 @@ sub table { 'cust_pay_refund'; }
Adds this cust_pay_refund to the database. If there is an error, returns the
error, otherwise returns false.
-=cut
-
-sub insert {
- my $self = shift;
- my $error = $self->SUPER::insert(@_);
- return $error if $error;
-
- '';
-}
-
=item delete
=cut