my $error =
$self->ut_numbern('custnum')
|| $self->ut_number('agentnum')
+ || $self->ut_textn('agent_custid')
|| $self->ut_number('refnum')
|| $self->ut_name('last')
|| $self->ut_name('first')
freq - "1d" for the traditional, daily events (the default), or "1m" for the
new monthly events
+payby - allows for one time override of normal customer billing method
+
=cut
sub collect {
}
qsearch( {
'table' => 'part_bill_event',
- 'hashref' => { 'payby' => $self->payby,
+ 'hashref' => { 'payby' => (exists($options{'payby'})
+ ? $options{'payby'}
+ : $self->payby
+ ),
'disabled' => '', },
'extra_sql' => $extra_sql,
} )
);
}
+=item in_transit_payments
+
+Returns the total of requests for payments for this customer pending in
+batches in transit to the bank. See L<FS::pay_batch> and L<FS::cust_pay_batch>
+
+=cut
+
+sub in_transit_payments {
+ my $self = shift;
+ my $in_transit_payments = 0;
+ foreach my $pay_batch ( qsearch('pay_batch', {
+ 'status' => 'I',
+ } ) ) {
+ foreach my $cust_pay_batch ( qsearch('cust_pay_batch', {
+ 'batchnum' => $pay_batch->batchnum,
+ 'custnum' => $self->custnum,
+ } ) ) {
+ $in_transit_payments += $cust_pay_batch->amount;
+ }
+ }
+ sprintf( "%.2f", $in_transit_payments );
+}
+
=item paydate_monthyear
Returns a two-element list consisting of the month and year of this customer's
} elsif ( $search =~ /^\s*(\S.*\S)\s*$/ ) { #value search
my $value = lc($1);
+
+ # remove "(Last, First)" in "Company (Last, First"), otherwise the
+ # full strings the browser remembers won't work
+ $value =~ s/\([\w \,\.\-\']*\)$//; #false laziness w/Record::ut_name
+
my $q_value = dbh->quote($value);
#exact
}
+ #eliminate duplicates
+ my %saw = ();
+ @cust_main = grep { !$saw{$_->custnum}++ } @cust_main;
+
}
@cust_main;