Index: /trunk/grails-app/controllers/ReportController.groovy
===================================================================
--- /trunk/grails-app/controllers/ReportController.groovy	(revision 731)
+++ /trunk/grails-app/controllers/ReportController.groovy	(revision 732)
@@ -85,11 +85,11 @@
     def reactiveRatio = {
 
+        def result = taskReportService.getReactiveRatio(params, RCU.getLocale(request))
+
         params.reportTitle = "Reactive Ratio Report"
         params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
         params.currentUser = authService.currentUser
-        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
-        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
-
-        def result = taskReportService.getReactiveRatio(params, RCU.getLocale(request))
+        params.startDateString = result.startDateString
+        params.endDateString = result.endDateString
 
         if(!result.error) {
@@ -106,11 +106,11 @@
     def immediateCallouts = {
 
+        def result = taskReportService.getImmediateCallouts(params, RCU.getLocale(request))
+
         params.reportTitle = "Immediate Callouts"
         params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
         params.currentUser = authService.currentUser
-        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
-        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
-
-        def result = taskReportService.getImmediateCallouts(params, RCU.getLocale(request))
+        params.startDateString = result.startDateString
+        params.endDateString = result.endDateString
 
         if(!result.error) {
Index: /trunk/grails-app/i18n/messages.properties
===================================================================
--- /trunk/grails-app/i18n/messages.properties	(revision 731)
+++ /trunk/grails-app/i18n/messages.properties	(revision 732)
@@ -312,6 +312,4 @@
 default.file.no.header=The supplied file does not have the correct header lines, please see the template file.
 default.not.development.environment.failure=Could not complete operation, dev environment not detected.
-default.end.date.before.start.date=The end date must be equal to or greater than \
-    the start date.
 
 default.doesnt.match.message=Property [{0}] of class [{1}] with value [{2}] does not match the required pattern [{3}]
Index: /trunk/grails-app/services/AssetReportService.groovy
===================================================================
--- /trunk/grails-app/services/AssetReportService.groovy	(revision 731)
+++ /trunk/grails-app/services/AssetReportService.groovy	(revision 732)
@@ -154,6 +154,10 @@
             params.endDate = dateUtilService.today
 
-        if(params.endDate < params.startDate)
-            return fail(code: "default.end.date.before.start.date")
+        // Auto swap date range.
+        if(params.startDate > params.endDate) {
+            def tempStartDate = params.startDate
+            params.startDate = params.endDate
+            params.endDate = tempStartDate
+        }
 
         // Inner join used to return only attribTypes that are used by AssetSubItemExtendedAttributes.
Index: /trunk/grails-app/services/TaskReportService.groovy
===================================================================
--- /trunk/grails-app/services/TaskReportService.groovy	(revision 731)
+++ /trunk/grails-app/services/TaskReportService.groovy	(revision 732)
@@ -33,6 +33,13 @@
         namedParams.endDate = params.endDate ?: dateUtilService.today
 
-        if(namedParams.endDate < namedParams.startDate)
-            return fail(code: "default.end.date.before.start.date")
+        // Auto swap date range.
+        if(namedParams.startDate > namedParams.endDate) {
+            def tempStartDate = namedParams.startDate
+            namedParams.startDate = namedParams.endDate
+            namedParams.endDate = tempStartDate
+        }
+
+        result.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: namedParams.startDate)
+        result.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: namedParams.endDate)
 
         namedParams.endDate++ // Start of next day required.
@@ -178,6 +185,13 @@
         namedParams.endDate = params.endDate ?: dateUtilService.today
 
-        if(namedParams.endDate < namedParams.startDate)
-            return fail(code: "default.end.date.before.start.date")
+        // Auto swap date range.
+        if(namedParams.startDate > namedParams.endDate) {
+            def tempStartDate = namedParams.startDate
+            namedParams.startDate = namedParams.endDate
+            namedParams.endDate = tempStartDate
+        }
+
+        result.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: namedParams.startDate)
+        result.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: namedParams.endDate)
 
         namedParams.endDate++ // Start of next day required.
