lp1034058 Disable Renewal Due Dates in the Past
authorKyle Huckins <khuckins@catalyte.io>
Thu, 23 May 2019 20:53:11 +0000 (20:53 +0000)
committerChris Sharp <csharp@georgialibraries.org>
Thu, 1 Aug 2019 11:32:03 +0000 (07:32 -0400)
Apply minimum date and an out of range flag to prevent
selecting or inputting a past date when renewing items from
Circulation->Renew Items or Patron->Items Out->Actions->
Renew With Specific Due Date.

To test
-------
[1] Create a loan.
[2] From the patron's Item Out page, use the Renew With
    Specific Due Date action. Note that the date widget
    will allow you to specify a due date in the past.
[3] From the Circulation -> Renew interface, note that
    the date widget will also let you specify a due
    date in the past.
[4] Apply the patch and repeat steps #2 and #3. This time,
    a due date in the past cannot be entered, both via
    the calendar button and by direct entry in the text
    box.

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>

Open-ILS/src/templates/staff/circ/patron/t_renew_with_date_dialog.tt2
Open-ILS/src/templates/staff/circ/renew/t_renew.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
Open-ILS/web/js/ui/default/staff/circ/renew/app.js

index c2e0958..ca732ae 100644 (file)
   </div>
   <div class="pad-vert row">
     <div class="col-md-5">
-      <eg-date-input required ng-model="args.date"></eg-date-input>
+      <eg-date-input required min-date="minDate" out-of-range="outOfRange"
+          ng-model="args.date"></eg-date-input>
     </div>
   </div>
 </div>
 <div class="modal-footer">
-  <button class="btn btn-primary" ng-click="ok()">[% l('Submit') %]</button>
+  <button class="btn btn-primary" ng-click="ok()" ng-disabled="outOfRange">[% l('Submit') %]</button>
   <button class="btn btn-warning" ng-click="cancel()">[% l('Cancel') %]</button>
 </div>
index 2095709..0a2caad 100644 (file)
@@ -18,7 +18,8 @@
           ng-model="renewalArgs.copy_barcode" 
           id="patron-renewal-barcode" type="text"/> 
 
-        <input class="btn btn-default" type="submit" value="[% l('Submit') %]"/>
+        <input class="btn btn-default" type="submit"
+            ng-disabled="outOfRange" value="[% l('Submit') %]"/>
       </div>
     </form>
   </div>
@@ -33,7 +34,8 @@
       </div>
       <!-- FIXME: This needs a time component as well, but type="datetime" 
             is not yet supported by any browsers -->
-      <div><eg-date-input ng-model="renewalArgs.due_date"></eg-date-input>
+      <div><eg-date-input min-date="minDate" out-of-range="outOfRange"
+          ng-model="renewalArgs.due_date"></eg-date-input>
       </div>
     </div>
   </div>
index f0a795f..327eeb5 100644 (file)
@@ -477,6 +477,8 @@ function($scope , $q , $routeParams , $timeout , egCore , egUser , patronSvc ,
             controller : [
                         '$scope','$uibModalInstance',
                 function($scope , $uibModalInstance) {
+                    $scope.outOfRange = false;
+                    $scope.minDate = new Date();
                     $scope.args = {
                         barcodes : barcodes,
                         date : new Date()
index 8666557..e15dd5e 100644 (file)
@@ -36,6 +36,8 @@ function($scope , $window , $location , egCore , egGridDataProvider , egCirc) {
     egCore.hatch.getItem('circ.renew.strict_barcode')
         .then(function(sb){ $scope.strict_barcode = sb });
     $scope.focusBarcode = true;
+    $scope.outOfRange = false;
+    $scope.minDate = new Date();
     $scope.renewals = [];
 
     var today = new Date();