Found one more issue in my testing. I saw this while testing LOST behavior, but can boil it down to a much simpler test:
1. Manually void all fines on an overdue transaction.
2. Run the fine generator
3. The circulation now has a new set of non-voided fines, analogs to the manually voided fines.
IOW, it's creating new fines were voided fines already exist.
Found one more issue in my testing. I saw this while testing LOST behavior, but can boil it down to a much simpler test:
1. Manually void all fines on an overdue transaction.
2. Run the fine generator
3. The circulation now has a new set of non-voided fines, analogs to the manually voided fines.
IOW, it's creating new fines were voided fines already exist.