XML 40 R26.htm IDEA: XBRL DOCUMENT
v3.24.0.1

Note 16 - Revenue | 12 Months Ended
--- | ---
Dec. 31, 2023
Notes to Financial Statements |
Revenue from Contract with Customer [Text Block] |
16. | REVENUE:
Net sales by geographic region, based on the location of the customer, were as follows (in thousands):
|  | Year Ended December 31, |
|  | 2023 |  |  | 2022 |  |  | 2021 |
Net sales by geographic region: |  |  |  |  |  |  |  |  |  |  |  |
United States |  | $ | 420,925 |  |  | $ | 423,961 |  |  | $ | 313,729 |
Canada |  |  | 23,430 |  |  |  | 33,704 |  |  |  | 19,584 |
Total |  | $ | 444,355 |  |  | $ | 457,665 |  |  | $ | 333,313 |
One SPP customer accounted for 10%, 12%, and 12% of total net sales for the years ended December 31, 2023, 2022, and 2021, respectively. No Precast customer accounted for more than 10% of total net sales for the years ended December 31, 2023, 2022, and 2021. Net revisions in contract estimates resulted in an increase (decrease) in SPP net sales of ($1.1) million, ($0.6) million, and $2.0 million for the years ended December 31, 2023, 2022, and 2021, respectively. Disaggregation of Revenue The following table disaggregates revenue by recognition over time or at a point in time, as the Company believes it best depicts how the nature, amount, timing, and uncertainty of its revenue and cash flows are affected by economic factors (in thousands):
|  | Year Ended December 31, |
|  | 2023 |  |  | 2022 |  |  | 2021 |
Over time |  | $ | 296,381 |  |  | $ | 307,572 |  |  | $ | 259,823 |
Point in time |  |  | 147,974 |  |  |  | 150,093 |  |  |  | 73,490 |
Net sales |  | $ | 444,355 |  |  | $ | 457,665 |  |  | $ | 333,313 |
Contract Assets and Contract Liabilities The difference between the opening and closing balances of the Company’s contract assets and contract liabilities primarily results from the timing difference between the Company’s performance and billings. The following is a summary of the changes in contract assets (in thousands):
|  | December 31, |
|  | 2023 |  |  | 2022 |
Balance, beginning of year |  | $ | 121,778 |  |  | $ | 107,170 |
Revenue recognized in advance of billings |  |  | 291,812 |  |  |  | 306,095 |
Billings |  |  | (293,356 | ) |  |  | (294,506 | )
Other |  |  | 282 |  |  |  | 3,019 |
Balance, end of year |  | $ | 120,516 |  |  | $ | 121,778 |
The following is a summary of the changes in contract liabilities (in thousands):
|  | December 31, |
|  | 2023 |  |  | 2022 |
Balance, beginning of year |  | $ | 17,456 |  |  | $ | 2,623 |
Billings |  |  | 20,815 |  |  |  | 17,618 |
Revenue recognized |  |  | (16,984 | ) |  |  | (2,663 | )
Other |  |  | 163 |  |  |  | (122 | )
Balance, end of year |  | $ | 21,450 |  |  | $ | 17,456 |
Backlog Backlog represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time. As of December 31, 2023, backlog was $273 million. The Company expects to recognize approximately 76% of the remaining performance obligations in 2024, 23% in 2025, and the balance thereafter.

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

X
- Definition The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 9 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-9 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 10 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-10 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 15 -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-15 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 12 -Subparagraph (e) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 606 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (b)(2) -Publisher FASB -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Name Accounting Standards Codification -Topic 606 -Publisher FASB -URI https://asc.fasb.org//606/tableOfContent + Details
Name: | us-gaap_RevenueFromContractWithCustomerTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration