XML 30 R18.htm IDEA: XBRL DOCUMENT
v3.24.2.u1

NET INCOME PER SHARE | 6 Months Ended
--- | ---
Jul. 31, 2024
NET INCOME PER SHARE |
NET INCOME PER SHARE | NOTE 12 – NET INCOME PER SHARE Basic and diluted net income per share amounts are computed as follows (shares in thousands except in the notes):
​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended July 31,
​ |  | 2024 |  | 2023
Net income | ​ | $ | 18,198 | ​ | $ | 12,767
​ | ​ | ​ | ​ | ​ | ​ | ​
Weighted average number of shares outstanding – basic | ​ | ​ | 13,403 | ​ | ​ | 13,403
Effect of stock awards (1) | ​ | ​ | 477 | ​ | ​ | 139
Weighted average number of shares outstanding – diluted | ​ | ​ | 13,880 | ​ | ​ | 13,542
​ | ​ | ​ | ​ | ​ | ​ | ​
Net income per share | ​ | ​ | ​ | ​ | ​ | ​
Basic | ​ | $ | 1.36 | ​ | $ | 0.95
Diluted | ​ | $ | 1.31 | ​ | $ | 0.94
| (1) | For the three months ended July 31, 2024 and 2023, the weighted average numbers of shares determined on a dilutive basis exclude the effects of antidilutive stock options and restricted stock units covering an aggregate of 74,500 and 785,167 shares of common stock, respectively. |
​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Six Months Ended July 31,
​ |  | 2024 |  | 2023
Net income | ​ | $ | 26,080 | ​ | $ | 14,876
​ | ​ | ​ | ​ | ​ | ​ | ​
Weighted average number of shares outstanding – basic | ​ | ​ | 13,331 | ​ | ​ | 13,408
Effect of stock awards (1) | ​ | ​ | 396 | ​ | ​ | 136
Weighted average number of shares outstanding – diluted | ​ | ​ | 13,727 | ​ | ​ | 13,544
​ | ​ | ​ | ​ | ​ | ​ | ​
Net income per share | ​ | ​ | ​ | ​ | ​ | ​
Basic | ​ | $ | 1.96 | ​ | $ | 1.11
Diluted | ​ | $ | 1.90 | ​ | $ | 1.10
| (1) | For the six months ended July 31, 2024 and 2023, the weighted average numbers of shares determined on a dilutive basis exclude the effects of antidilutive stock options and restricted stock units covering an aggregate of 209,250 and 818,501 shares of common stock, respectively. |

X
- References No definition available. + Details
Name: | us-gaap_EarningsPerShareAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition The entire disclosure for earnings per share. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/260/tableOfContent Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-2 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-3 + Details
Name: | us-gaap_EarningsPerShareTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration