summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-06-12 16:32:30 -0700
committerMark Wells <mark@freeside.biz>2012-06-12 16:32:43 -0700
commit14f3259eef6cbc440a9ce0cdc20ee2cde87c41b0 (patch)
tree164cbc54c275778759009158204f37b0306b2a8d /FS
parentdb7d5ea2de851705fb4dbe2bd23b07476110e20c (diff)
suppress all fractions of days in unearned revenue calculation, #13289
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Mason.pm1
-rw-r--r--FS/FS/Record.pm21
2 files changed, 21 insertions, 1 deletions
diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm
index a4650632d..045a5b12c 100644
--- a/FS/FS/Mason.pm
+++ b/FS/FS/Mason.pm
@@ -122,6 +122,7 @@ if ( -e $addl_handler_use_file ) {
use FS::UID qw( getotaker dbh datasrc driver_name );
use FS::Record qw( qsearch qsearchs fields dbdef
str2time_sql str2time_sql_closing
+ midnight_sql
);
use FS::Conf;
use FS::CGI qw(header menubar table itable ntable idiot
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index a8b912cf1..3667d5159 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -38,6 +38,7 @@ use Tie::IxHash;
@EXPORT_OK = qw(
dbh fields hfields qsearch qsearchs dbdef jsearch
str2time_sql str2time_sql_closing regexp_sql not_regexp_sql concat_sql
+ midnight_sql
);
$DEBUG = 0;
@@ -3245,7 +3246,7 @@ sub not_regexp_sql {
=item concat_sql [ DRIVER_NAME ] ITEMS_ARRAYREF
-Returns the items concatendated based on database type, using "CONCAT()" for
+Returns the items concatenated based on database type, using "CONCAT()" for
mysql and " || " for Pg and other databases.
You can pass an optional driver name such as "Pg", "mysql" or
@@ -3266,6 +3267,24 @@ sub concat_sql {
}
+=item midnight_sql DATE
+
+Returns an SQL expression to convert DATE (a unix timestamp) to midnight
+on that day in the system timezone, using the default driver name.
+
+=cut
+
+sub midnight_sql {
+ my $driver = driver_name;
+ my $expr = shift;
+ if ( $driver =~ /^mysql/i ) {
+ "UNIX_TIMESTAMP(DATE(FROM_UNIXTIME($expr)))";
+ }
+ else {
+ "EXTRACT( EPOCH FROM DATE(TO_TIMESTAMP($expr)) )";
+ }
+}
+
=back
=head1 BUGS