v3.25.2
Note 4 - Revenue Recognition (Tables)
6 Months Ended
Jul. 31, 2025
Notes Tables  
Disaggregation of Revenue [Table Text Block]
  

Three Months Ended July 31,

  

Six Months Ended July 31,

 
  

2025

  

2024

  

2025

  

2024

 
  

Sales

  

% of Total

  

Sales

  

% of Total

  

Sales

  

% of Total

  

Sales

  

% of Total

 

Products

 $3,451   7% $2,795   7% $7,091   8% $6,048   8%
                                 

Specialty Piping Systems and Coating

                                

Revenue recognized under input method

  12,965   27%  12,613   34%  25,025   26%  22,752   32%

Revenue recognized under output method

  31,486   66%  22,105   59%  62,532   66%  43,034   60%

Total

 $47,902   100% $37,513   100% $94,648   100% $71,834   100%
Schedule of Assumptions for Long-Duration Contracts by Product and Guarantee [Table Text Block]
  

July 31, 2025

  

January 31, 2025

 

Costs incurred on uncompleted contracts

 $16,079  $11,621 

Estimated earnings

  10,842   9,366 

Earned revenue

  26,921   20,987 

Less billings to date

  24,993   19,302 

Costs in excess of billings, net

 $1,928  $1,685 

Balance sheet classification

        

Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts

 $3,569  $2,934 

Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts

  (1,641)  (1,249)

Costs in excess of billings, net

 $1,928  $1,685