| Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] |
(in thousands) | | | | | | | | | | | | |
Year ended July 31, | | 2026 | | | 2025 | | | 2024 | |
Basic weighted-average number of shares | | | 24,995 | | | | 25,188 | | | | 25,241 | |
Effect of dilutive securities: | | | | | | | | | | | | |
Stock options | | | 4 | | | | 2 | | | | 1 | |
Non-vested restricted Class B common stock | | | 24 | | | | 105 | | | | 156 | |
Diluted weighted-average number of shares | | | 25,023 | | | | 25,295 | | | | 25,398 | |
|
| Schedule of Valuation and Qualifying Accounts [Table Text Block] |
(in thousands) | | | Balance at | | | | Additions Charged to | | | | | | | | Balance at | |
Year ended July 31, | | Beginning of Year | | | Costs and Expenses | | | Deductions (1) | | | End of Year | |
2026 | | | | | | | | | | | | | | | | |
Deducted from asset accounts: | | | | | | | | | | | | | | | | |
Allowance for credit losses | | $ | 9,097 | | | $ | 4,097 | | | $ | (6,256 | ) | | $ | 6,938 | |
Reserve for losses on settlement assets | | | 1,367 | | | | 552 | | | | (384 | ) | | | 1,535 | |
Total | | $ | 10,464 | | | $ | 4,649 | | | $ | (6,640 | ) | | $ | 8,473 | |
2025 | | | | | | | | | | | | | | | | |
Deducted from asset accounts: | | | | | | | | | | | | | | | | |
Allowance for credit losses | | $ | 6,352 | | | $ | 6,980 | | | $ | (4,235 | ) | | $ | 9,097 | |
Reserve for losses on settlement assets | | | 1,866 | | | | 110 | | | | (609 | ) | | | 1,367 | |
Total | | $ | 8,218 | | | $ | 7,090 | | | $ | (4,844 | ) | | $ | 10,464 | |
2024 | | | | | | | | | | | | | | | | |
Deducted from asset accounts: | | | | | | | | | | | | | | | | |
Allowance for credit losses | | $ | 5,642 | | | $ | 3,402 | | | $ | (2,692 | ) | | $ | 6,352 | |
Reserve for losses on settlement assets | | | 1,143 | | | | 988 | | | | (265 | ) | | | 1,866 | |
Total | | $ | 6,785 | | | $ | 4,390 | | | $ | (2,957 | ) | | $ | 8,218 | |
|