Bug 10694 - Allow arbitrary backdating of returns

Sometimes libraries need to backdate returns further back in time than
Koha's dropbox mode will allow. The returns backdating will check in an
item as if it had been returned on the specified date, and will reduce
any fine accordingly.

This feature is activated by a new system preference, SpecifyReturnDate.

Test Plan:
1) Apply this patch
2) Check out an item, and backdate the due date by 1 month or so
   * This issue needs to generate a fine
3) Run fines.pl to generate the fine
4) Browse to returns.pl
5) Specify a return date of the day after the specified due date
6) Check the borrowers issue history, you should see the backdated
   return date, rather than today's date
7) Check the fine, it should be reduced to a fine for a single day
   overdue, rather than the previous larger fine.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Barbara Knibbs <BKnibbs@farmingtonlibraries.org>
Signed-off-by: Petter Goksoyr Asen <boutrosboutrosboutros@gmail.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works as described, passes tests and QA script.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: (follow-up) fix various issues

- new TT plugin for Borrowers, that at present supplies
  a method for determining if the patron is restricted
- setting the default value of SpecifyReturnDate to false
  during upgrade to avoid an unwelcome surprise
- validate the return date on the client side before
  allowing the form to be submitted.

Signed-off-by: Petter Goksoyr Asen <boutrosboutrosboutros@gmail.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: (follow-up) add unit tests, improve AddReturn POD

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: DBrev 3.15.00.042

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: (follow-up) remove truncate table from test case

Doing a truncate of a table in MySQL causes an implicit commit.
Consequently, they should not be used in DB-dependent test cases,
as they will cause the changes to NOT be rolled back.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: (follow-up) fix problems with the new Borrowers plugin

TT plugins should *not* be duplicating business logic found
in other modules.  This patch replaces the copy-and-paste of the
old IsDebarred logic with a call to the appropriate routine and
updates the POD.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bug 10694: (follow-up) display the note about restricted patrons consistently

This patch ensures that the note displayed when checking in a loan
to a restricted patron (and setting the return date) is displayed
whether or not the circulation staffer has chosen the make the return
date override sticky.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>