Note 5 - Revenue Recognition (Tables)
|
12 Months Ended |
Jan. 31, 2020 |
| Notes Tables |
|
| Disaggregation of Revenue [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | $ | 15,991 | | | | 12 | % | | $ | 13,576 | | | | 11 | % | | | | | | | | | | | | | | | | | | | Specialty Piping Systems and Coating | | | | | | | | | | | | | | | | | | Revenue recognized under input method | | | 48,415 | | | | 38 | % | | | 40,525 | | | | 31 | % | | Revenue recognized under output method | | | 63,257 | | | | 50 | % | | | 74,864 | | | | 58 | % | | | | $ | 127,663 | | | | 100 | % | | $ | 128,965 | | | | 100 | % |
|
| Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block] |
| | | | | Balance January 31, 2018 | | $ | | | | Costs and gross profit recognized during the period for uncompleted contracts from the prior period | | | (6,458 | ) | | Costs and deferred gross profit incurred on uncompleted contracts not billed at the end of the current period | | | 6,609 | | | | | $ | | | | Costs and gross profit recognized during the period for uncompleted contracts from the prior period | | | (6,697 | ) | | Costs and deferred gross profit incurred on uncompleted contracts not billed at the end of the current period | | | 7,210 | | Closing Balance at January 31, 2020 | | $ | | | | | | | | | | | | | | Balance January 31, 2018 | | $ | | | | Revenue recognized during the period for uncompleted contracts from the prior period | | | (3,222 | ) | | New contracts entered into that are uncompleted at the end of the current period | | | 2,824 | | | | | $ | | | | Revenue recognized during the period for uncompleted contracts from the prior period | | | (3,276 | ) | | New contracts entered into that are uncompleted at the end of the current period | | | 2,880 | | Closing Balance at January 31, 2020 | | $ | | |
|
| Schedule of Assumptions for Long-Duration Contracts by Product and Guarantee [Table Text Block] |
| | | | | | | | | Costs incurred on uncompleted contracts | | $ | 15,553 | | | $ | 12,348 | | | Estimated earnings | | | 8,641 | | | | 7,430 | | | Earned revenue | | | 24,194 | | | | 19,778 | | | Less billings to date | | | 23,201 | | | | 19,694 | | | Costs in excess of billings, net | | $ | 993 | | | $ | 84 | | Balance sheet classification | | | | | | | | | | Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts | | $ | 2,166 | | | $ | 1,653 | | | Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts | | | (1,173 | ) | | | (1,569 | ) | | Costs in excess of billings, net | | $ | 993 | | | $ | 84 | |
|