Fines are not created for checking in an Item, if the syspref 'CalculateFinesOnReturn' is enabled without the syspref finesMode being in the 'production' -mode (Calculate and charge). CalculateFinesOnReturn must work without the fines.pl -feature. The problem is with the subroutine C4::Circulation::_CalculateAndUpdateFine() Initially it looks like it must be invoked from the fines.pl as well. But that subroutine is only used within the C4::Circulation module for AddRenew and AddReturn. Hence the _CalculateAndUpdateFine() has nothing to do with fines.pl|finesMode. This patch replaces the finesMode-check with CalculateFinesOnReturn-check. I am not sure why there needs to be a specific syspref for the fines.pl, or why CalculateFinesOnReturn is needed, as the fine amounts can be tweaked using the circulation rules matrix and the fines.pl-cronjob can either be ran, or not, with an endless possibility of parameters that shouldn't be in the sysprefs.
Created attachment 80174 [details] [review] 0001-Bug-21512-CalculateFinesOnReturn-doesn-t-work-withou.patch
Bug found and fix sponsored by Minna Kivinen @ https://www.hamk.fi/
I am not sure I agree with the intent. To me it feels like the right behaviour that FinesMode does also keep CalculateFinesOnReturn from calculating. A change like this could result in some surprises for libraries. Could we imagine a way to achieve your goal without a possibly unwanted surprise?