From 41b1a4d9e2cf8270f3e4d0b8d5ac02b875b46f0c Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Thu, 24 Apr 2014 20:24:01 -0700 Subject: [PATCH] allow fees to be charged based on batch payment attempts, #27778 --- FS/FS/cust_event_fee.pm | 9 +++++++++ FS/FS/cust_main/Billing.pm | 5 ++++- FS/FS/part_event/Action/cust_fee.pm | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/FS/FS/cust_event_fee.pm b/FS/FS/cust_event_fee.pm index 181640ddc..e88dcc4b7 100644 --- a/FS/FS/cust_event_fee.pm +++ b/FS/FS/cust_event_fee.pm @@ -151,6 +151,15 @@ sub by_cust { table => 'cust_event_fee', addl_from => 'JOIN cust_event USING (eventnum) ' . 'JOIN part_event USING (eventpart) ' . + 'JOIN cust_pay_batch ON (cust_event.tablenum = cust_pay_batch.paybatchnum)', + extra_sql => "$where eventtable = 'cust_pay_batch' ". + "AND cust_pay_batch.custnum = $custnum", + %params + }), + qsearch({ + table => 'cust_event_fee', + addl_from => 'JOIN cust_event USING (eventnum) ' . + 'JOIN part_event USING (eventpart) ' . 'JOIN cust_pkg ON (cust_event.tablenum = cust_pkg.pkgnum)', extra_sql => "$where eventtable = 'cust_pkg' ". "AND cust_pkg.custnum = $custnum", diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index 94a0069cc..63c7f2b58 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -570,7 +570,10 @@ sub bill { my $object = $event_fee->cust_event->cust_X; my $part_fee = $event_fee->part_fee; my $cust_bill; - if ( $object->isa('FS::cust_main') or $object->isa('FS::cust_pkg') ) { + if ( $object->isa('FS::cust_main') + or $object->isa('FS::cust_pkg') + or $object->isa('FS::cust_pay_batch') ) + { # Not the real cust_bill object that will be inserted--in particular # there are no taxes yet. If you want to charge a fee on the total # invoice amount including taxes, you have to put the fee on the next diff --git a/FS/FS/part_event/Action/cust_fee.pm b/FS/FS/part_event/Action/cust_fee.pm index 9373091ab..27ca2a1d0 100644 --- a/FS/FS/part_event/Action/cust_fee.pm +++ b/FS/FS/part_event/Action/cust_fee.pm @@ -6,7 +6,8 @@ use base qw( FS::part_event::Action::Mixin::fee ); sub description { 'Charge a fee based on the customer\'s current invoice'; } sub eventtable_hashref { - { 'cust_main' => 1 }; + { 'cust_main' => 1, + 'cust_pay_batch' => 1 }; } sub hold_until_bill { 1 } -- 2.11.0