From: ivan Date: Wed, 30 Jun 2004 17:57:03 +0000 (+0000) Subject: payment receipts! X-Git-Tag: BEFORE_FINAL_MASONIZE~1004 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=657537cc1cc0f78f5302e66d37c161d8e233de71 payment receipts! --- diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index d35b1ac3d..c553f0c22 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' => 'DEPRECATED, 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 f0cb13296..7abbe9a3b 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 0e5885f57..695df6e8d 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 111de05da..d592313f8 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 55a5eb778..af25f1774 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 diff --git a/conf/payment_receipt_email b/conf/payment_receipt_email new file mode 100644 index 000000000..fa5a735ef --- /dev/null +++ b/conf/payment_receipt_email @@ -0,0 +1,26 @@ + +{ $date } + +Dear { $name }, + +This message is to inform you that your payment of ${ $amount } has been +received. + +Payment ID: { $paynum } +Date: { $date } +Amount: { $paid } +Type: { $payby } # { $payinfo } + +{ + if ( $balance > 0 ) { + $OUT .= "Your current balance is now \$$balance.\n\n"; + } elsif ( $balance < 0 ) { + $OUT .= 'You have a credit balance of $'. sprintf("%.2f",0-$balance). + ".\n". + "Future charges will be deducted from this balance before billing ". + "you again.\n\n"; + + } +} +Thank you for your business. +