X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=4e42f8de04a0e21f2244a04c9b0f17d6dfa067e0;hb=7bbe939d139be7edd77378cfc9a2c3ec6287749d;hp=a4bebb5f22d25c7387e68c0f2324581427ab596b;hpb=fa5a1ac184e1fa9448453655b7e1f8e1297ef3b6;p=freeside.git diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index a4bebb5f2..4e42f8de0 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -26,7 +26,7 @@ use Tie::IxHash; use Digest::MD5 qw(md5_base64); use Date::Format; #use Date::Manip; -use File::Temp qw( tempfile ); +use File::Temp; #qw( tempfile ); use Business::CreditCard 0.28; use Locale::Country; use FS::UID qw( getotaker dbh driver_name ); @@ -2270,7 +2270,7 @@ sub total_owed_date { AND _date <= $time "; - sprintf( "%.2f", $self->scalar_sql($sql) ); + sprintf( "%.2f", $self->scalar_sql($sql) || 0 ); } @@ -2350,8 +2350,7 @@ sub total_unapplied_credits { WHERE custnum = $custnum "; - #XXX fix harmless but loud: Argument "" isn't numeric in sprintf - sprintf( "%.2f", $self->scalar_sql($sql) ); + sprintf( "%.2f", $self->scalar_sql($sql) || 0 ); } @@ -2389,8 +2388,7 @@ sub total_unapplied_payments { WHERE custnum = $custnum "; - #XXX fix harmless but loud: Argument "" isn't numeric in sprintf - sprintf( "%.2f", $self->scalar_sql($sql) ); + sprintf( "%.2f", $self->scalar_sql($sql) || 0 ); } @@ -2428,8 +2426,7 @@ sub total_unapplied_refunds { WHERE custnum = $custnum "; - #XXX fix harmless but loud: Argument "" isn't numeric in sprintf - sprintf( "%.2f", $self->scalar_sql($sql) ); + sprintf( "%.2f", $self->scalar_sql($sql) || 0 ); } @@ -2487,7 +2484,7 @@ sub balance_date_range { my $self = shift; my $sql = 'SELECT SUM('. $self->balance_date_sql(@_). ') FROM cust_main WHERE custnum='. $self->custnum; - sprintf( '%.2f', $self->scalar_sql($sql) ); + sprintf( '%.2f', $self->scalar_sql($sql) || 0 ); } =item balance_pkgnum PKGNUM @@ -3730,6 +3727,24 @@ sub statuses { keys %statuscolor; } +=item cust_status_sql + +Returns an SQL fragment to determine the status of a cust_main record, as a +string. + +=cut + +sub cust_status_sql { + my $sql = 'CASE'; + for my $status ( FS::cust_main->statuses() ) { + my $method = $status.'_sql'; + $sql .= ' WHEN ('.FS::cust_main->$method.") THEN '$status'"; + } + $sql .= ' END'; + return $sql; +} + + =item prospect_sql Returns an SQL expression identifying prospective cust_main records (customers