XML 38 R27.htm IDEA: XBRL DOCUMENT v3.25.2
Accounting policies - Disaggregated revenue (Details) - USD ($)
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Total Revenue $ 33,591,079 $ 32,479,158 $ 67,306,464 $ 72,168,548
Contracts in progress        
Number of days after consumption billings are considered past due     45 days  
Income from operations 5,283,764 5,010,790 $ 9,894,527 12,324,784
Increase in net income $ 5,096,205 $ 15,850,257 $ 9,887,234 $ 22,324,605
Increase in basic earnings $ 0.33 $ 0.27 $ 0.63 $ 0.71
Increase in diluted earnings $ 0.32 $ 0.26 $ 0.63 $ 0.7
Retail revenue        
Total Revenue $ 8,638,026 $ 8,181,884 $ 18,049,368 $ 16,806,822
Bulk revenue        
Total Revenue 8,274,816 8,447,958 16,686,532 16,790,052
Services revenue        
Total Revenue 11,448,202 11,922,469 21,526,470 29,340,080
Manufacturing revenue        
Total Revenue 5,230,035 3,926,847 11,044,094 9,231,594
Construction revenue | Services revenue        
Total Revenue 2,825,935 4,004,072 5,044,167 13,381,536
Operations and maintenance revenue | Services revenue        
Total Revenue 8,255,408 7,068,922 15,980,704 14,168,275
Design and consulting revenue | Services revenue        
Total Revenue 366,859 849,475 501,599 1,790,269
Change in accounting method accounted for as change in estimate        
Contracts in progress        
Income from operations 167,904   445,150  
Increase in net income $ 450,619   $ 450,619  
Increase in basic earnings $ 0.03   $ 0.03  
Increase in diluted earnings $ 0.03   $ 0.03  
Transferred over time | Services revenue        
Total Revenue $ 3,104,731 3,988,174 $ 5,284,992 13,385,268
Transferred at point in time | Services revenue        
Total Revenue $ 8,343,472 $ 7,934,295 $ 16,241,478 $ 15,954,812
Minimum        
Contracts in progress        
Number of days after consumption billings are collected     30 days  
Maximum        
Contracts in progress        
Number of days after consumption billings are collected     45 days