X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_pay.pm;h=ff8226c8d606b40a45b9ceb708389424f2815c53;hb=7b125e587a4d1ee0aca692e23ea7897f671855ae;hp=69bcd87176c916d5f83264f648277bcd0e9cab0c;hpb=87ddf7284561e5c912aefe2ecc3f348649b78183;p=freeside.git diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 69bcd8717..ff8226c8d 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -1,7 +1,9 @@ package FS::cust_pay; use strict; -use vars qw( @ISA $DEBUG $me $conf @encrypted_fields +use base qw( FS::otaker_Mixin FS::payinfo_transaction_Mixin FS::cust_main_Mixin + FS::Record ); +use vars qw( $DEBUG $me $conf @encrypted_fields $unsuspendauto $ignore_noapply ); use Date::Format; @@ -20,9 +22,7 @@ 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 = 1; +$DEBUG = 0; $me = '[FS::cust_pay]'; @@ -80,9 +80,9 @@ L and L for conversion functions. Amount of this payment -=item otaker +=item usernum -order taker (assigned automatically, see L) +order taker (see L) =item payby @@ -381,7 +381,7 @@ sub check { || $self->ut_numbern('custnum') || $self->ut_numbern('_date') || $self->ut_money('paid') - || $self->ut_alpha('otaker') + || $self->ut_alphan('otaker') || $self->ut_textn('paybatch') || $self->ut_textn('payunique') || $self->ut_enum('closed', [ '', 'Y' ]) @@ -527,6 +527,7 @@ payment. sub cust_bill_pay { my $self = shift; + map { $_ } #return $self->num_cust_bill_pay unless wantarray; sort { $a->_date <=> $b->_date || $a->invnum <=> $b->invnum } qsearch( 'cust_bill_pay', { 'paynum' => $self->paynum } ) @@ -542,6 +543,7 @@ payment. sub cust_pay_refund { my $self = shift; + map { $_ } #return $self->num_cust_pay_refund unless wantarray; sort { $a->_date <=> $b->_date } qsearch( 'cust_pay_refund', { 'paynum' => $self->paynum } ) ; @@ -657,17 +659,23 @@ Returns an SQL fragment to retreive the unapplied amount. =cut sub unapplied_sql { - #my $class = shift; + my ($class, $start, $end) = shift; + my $bill_start = $start ? "AND cust_bill_pay._date <= $start" : ''; + my $bill_end = $end ? "AND cust_bill_pay._date > $end" : ''; + my $refund_start = $start ? "AND cust_pay_refund._date <= $start" : ''; + my $refund_end = $end ? "AND cust_pay_refund._date > $end" : ''; "paid - COALESCE( ( SELECT SUM(amount) FROM cust_bill_pay - WHERE cust_pay.paynum = cust_bill_pay.paynum ) + WHERE cust_pay.paynum = cust_bill_pay.paynum + $bill_start $bill_end ) ,0 ) - COALESCE( ( SELECT SUM(amount) FROM cust_pay_refund - WHERE cust_pay.paynum = cust_pay_refund.paynum ) + WHERE cust_pay.paynum = cust_pay_refund.paynum + $refund_start $refund_end ) ,0 ) "; @@ -688,6 +696,7 @@ sub _upgrade_data { #class method #not the most efficient, but hey, it only has to run once my $where = "WHERE ( otaker IS NULL OR otaker = '' OR otaker = 'ivan' ) ". + " AND usernum IS NULL ". " AND 0 < ( SELECT COUNT(*) FROM cust_main ". " WHERE cust_main.custnum = cust_pay.custnum ) "; @@ -739,6 +748,8 @@ sub _upgrade_data { #class method } + $class->_upgrade_otaker(%opts); + } =back