use Carp qw( confess );
use HTML::Entities;
use FS::Conf;
-use FS::Misc::DateTime qw( parse_datetime );
+use FS::Misc::DateTime qw( parse_datetime day_end );
use FS::Record qw(dbdef);
use FS::cust_main; # are sql_balance and sql_date_balance in the right module?
my $beginning = 0;
if ( $cgi->param($prefix.'begin') =~ /^(\d+)$/ ) {
$beginning = $1;
- } elsif ( $cgi->param($prefix.'beginning') =~ /^([ 0-9\-\/]{1,64})$/ ) {
+ } elsif ( $cgi->param($prefix.'beginning') =~ /^([ 0-9\-\/\:]{1,64})$/ ) {
$beginning = parse_datetime($1) || 0;
}
my $ending = 4294967295; #2^32-1
if ( $cgi->param($prefix.'end') =~ /^(\d+)$/ ) {
$ending = $1 - 1;
- } elsif ( $cgi->param($prefix.'ending') =~ /^([ 0-9\-\/]{1,64})$/ ) {
- #probably need an option to turn off the + 86399
- $ending = parse_datetime($1) + 86399;
+ } elsif ( $cgi->param($prefix.'ending') =~ /^([ 0-9\-\/\:]{1,64})$/ ) {
+ $ending = parse_datetime($1);
+ $ending = day_end($ending) unless $ending =~ /:/;
}
( $beginning, $ending );
argument isn't present at all, the join will just say "USING (custnum)",
which might work.
+As a special case, if TABLE is 'cust_main', only the joins to cust_location
+will be returned.
+
LOCATION_TABLE is an optional table name to use for joining ship_location,
in case your query also includes package information and you want the
"service address" columns to reflect package addresses.
($location_table, $locationnum) = split(/\./, $location_table);
$locationnum ||= 'locationnum';
- my $sql = ' LEFT JOIN cust_main ';
+ my $sql = '';
if ( $cust_table ) {
- $sql .= "ON (cust_main.custnum = $cust_table.$custnum)";
+ $sql = " LEFT JOIN cust_main ON (cust_main.custnum = $cust_table.$custnum)"
+ unless $cust_table eq 'cust_main';
} else {
- $sql .= "USING (custnum)";
+ $sql = " LEFT JOIN cust_main USING (custnum)";
}
if ( !@cust_fields or grep /^bill_/, @cust_fields ) {
my $unlinked_warn = 0;
return map {
my $f = $_;
- if( $unlinked_warn++ ) {
+ if ( $unlinked_warn++ ) {
+
sub {
my $record = shift;
- if( $record->custnum ) {
- $record->$f(@_);
- }
- else {
+ if ( $record->custnum ) {
+ encode_entities( $record->$f(@_) );
+ } else {
'(unlinked)'
};
- }
- }
- else {
+ };
+
+ } else {
+
sub {
my $record = shift;
- $record->$f(@_) if $record->custnum;
- }
+ $record->custnum ? encode_entities( $record->$f(@_) ) : '';
+ };
+
}
+
} @cust_fields;
}