XML 30 R14.htm IDEA: XBRL DOCUMENT
v3.25.0.1

Note 3 - Revenue Recognition | 12 Months Ended
--- | ---
Dec. 31, 2024
Notes to Financial Statements |
Revenue from Contract with Customer [Text Block] | 3. Revenue Recognition Revenue Streams The following is a description of principal activities from which the Company generates revenue. Revenues are recognized when control of the promised goods or services are transferred to the customer, in an amount that reflects the consideration that the Company expects to be entitled to in exchange for those goods or services. The Company generates all of its revenue from contracts with customers. Additionally, contract amounts represent the full amount of the transaction price as agreed upon with the customer at the time of order, resulting in a single performance obligation in most cases. In the case of a single order containing multiple upfits, the transaction price may represent multiple performance obligations. Work Truck Attachments The Company recognizes revenue upon shipment of equipment to the customer. Within the Work Truck Attachments segment, the Company offers a variety of discounts and sales incentives to its distributors, which are accounted for as variable consideration. The estimated liability for sales discounts and allowances is calculated using the expected value method and recorded at the time of sale as a reduction of net sales. The liability is estimated based on the costs of the program, the planned duration of the program, expected market conditions and historical experience. The Work Truck Attachments segment has two revenue streams, as identified below. Independent Dealer Sales – Revenues from sales to independent dealers are recognized when the dealer customer obtains control of the Company’s product, which occurs at a point in time, typically upon shipment. In these instances, each product is considered a separate performance obligation, and revenue is recognized upon shipment of the goods. Any shipping and handling activities performed by the Company after the transfer of control to the customer (e.g., when control transfers upon shipment) are considered fulfillment activities, and accordingly, the costs are accrued for when the related revenue is recognized. Parts & Accessory Sales – The Company’s equipment is used in harsh conditions and parts frequently wear out. These parts drive recurring revenues through parts and accessory sales. The process for recording parts and accessory sales is consistent with the independent dealer sales noted above. Work Truck Solutions The Work Truck Solutions segment primarily participates in the truck and vehicle upfitting industry in the United States. Customers are billed separately for the truck chassis by the chassis manufacturer. The Company only records sales for the amount of the upfit, excluding the truck chassis. Generally, the Company obtains the truck chassis from the truck chassis manufacturer through either its floor plan agreement with a financial institution or bailment pool agreement with the truck chassis manufacturer. Additionally, in some instances the Company upfits chassis which are owned by the end customer. For truck chassis acquired through the floor plan agreement, the Company holds title to the vehicle from the time the chassis is received by the Company until the completion of the up-fit. Under the bailment pool agreement, the Company does not take title to the truck chassis, but rather only holds the truck chassis on consignment. The Company pays interest on both of these arrangements. The Company records revenue in the same manner net of the value of the truck chassis in both the Company’s floor plan and bailment pool agreements. The Company does not set the price for the truck chassis, is not responsible for the billing of the chassis and does not have inventory risk in either the bailment pool or floor plan agreements. The Work Truck Solutions segment also has manufacturing operations of municipal snow and ice control equipment, where revenue is recognized upon shipment of equipment to the customer. Revenues from the sales of the Work Truck Solutions products are recognized net of the truck chassis with the selling price to the customer recorded as sales and the manufacturing and up-fit cost of the product recorded as cost of sales. In these cases, the Company acts as an agent as it does not have inventory or pricing control over the truck chassis. Within the Work Truck Solutions segment, the Company also sells certain third-party products for which it acts as an agent. These sales do not meet the criteria for gross sales recognition, and thus are recognized on a net basis at the time of sale. Under net sales recognition, the cost paid to the third-party service provider is recorded as a reduction to sales, resulting in net sales being equal to the gross profit on the transaction. The Work Truck Solutions segment has four revenue streams, as identified below. State and Local Bids – The Company records revenue of separately sold snow and ice equipment upon shipment and fully upfit vehicles upon delivery. The state and local bid process does not obligate the entity to buy any products from the Company, but merely allows the entity to purchase products in the future typically for a fixed period of time. The entity commits to actually purchasing products from the Company when it issues purchase orders off of a previously awarded bid, which lists out actual quantities of equipment being ordered and the delivery terms. On upfit transactions, the Company is providing a significant service by assembling and integrating the individual products onto the customer’s truck. Each individual product and installation activity is highly interdependent and highly interrelated, and therefore the Company considers the manufacture and upfit of a truck a single performance obligation. Any shipping and handling activities performed by the Company after the transfer of control to the customer (e.g., when control transfers upon shipment) are considered fulfillment activities, and accordingly, the costs are accrued for when the related revenue is recognized. For non-customer owned vehicles, revenue is recognized at a point in time upon delivery of the truck to the customer. For customer-owned vehicles, per Topic 606, revenue is recognized over time based on a cost input method as the Company's performance enhances an asset the customer controls while the asset is enhanced. The Company accumulates costs incurred on partially completed customer-owned upfits based on estimated margin and completion. Fleet Upfit Sales – The Company enters into contracts with certain fleet customers. Fleet agreements can create enforceable rights without the issuance of a purchase order. Typically, these agreements outline the terms of sale, payment terms, standard pricing, and the rights of the customer and seller. These agreements also obligate the customer to purchase a specified quantity of products. Fleet sales are performed on both customer owned vehicles as well as non-customer owned vehicles. For non-customer owned vehicles, revenue is recognized at a point in time upon delivery of the truck to the customer. For customer-owned vehicles, per Topic 606, revenue is recognized over time based on a cost input method as the Company's performance enhances an asset the customer controls while the asset is enhanced. The Company accumulates costs incurred on partially completed customer-owned upfits based on estimated margin and completion. Dealer Upfit Sales – The Company upfits work trucks for independent dealer customers. Dealer upfit revenue is recorded upon delivery. The customer does not own the vehicles during the upfit process, and as such revenue is recorded at a point in time upon delivery to the customer. Over the Counter / Parts & Accessory Sales – Work Truck Solutions part and accessory sales are recorded as revenue upon shipment. Additionally, customers can purchase parts at any of the Company’s showrooms. In these instances, each product is considered a separate performance obligation, and revenue is recognized upon shipment of the goods or customer pick up. Disaggregation of Revenue The following table provides information about disaggregated revenue by customer type and timing of revenue recognition, and includes a reconciliation of the disaggregated revenue with reportable segments. Revenue by customer type was as follows:
Year Ended December 31, 2024 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Independent dealer |  | $ | 256,010 |  |  | $ | 148,409 |  |  | $ | 404,419 |
Government |  |  | - |  |  |  | 90,494 |  |  |  | 90,494 |
Fleet |  |  | - |  |  |  | 65,892 |  |  |  | 65,892 |
Other |  |  | - |  |  |  | 7,699 |  |  |  | 7,699 |
Total revenue |  | $ | 256,010 |  |  | $ | 312,494 |  |  | $ | 568,504 |
Year Ended December 31, 2023 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Independent dealer |  | $ | 291,723 |  |  | $ | 137,134 |  |  | $ | 428,857 |
Government |  |  | - |  |  |  | 73,165 |  |  |  | 73,165 |
Fleet |  |  | - |  |  |  | 58,562 |  |  |  | 58,562 |
Other |  |  | - |  |  |  | 7,594 |  |  |  | 7,594 |
Total revenue |  | $ | 291,723 |  |  | $ | 276,455 |  |  | $ | 568,178 |
Year Ended December 31, 2022 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Independent dealer |  | $ | 382,296 |  |  | $ | 119,900 |  |  | $ | 502,196 |
Government |  |  | - |  |  |  | 56,319 |  |  |  | 56,319 |
Fleet |  |  | - |  |  |  | 49,094 |  |  |  | 49,094 |
Other |  |  | - |  |  |  | 8,459 |  |  |  | 8,459 |
Total revenue |  | $ | 382,296 |  |  | $ | 233,772 |  |  | $ | 616,068 |
Revenue by timing of revenue recognition was as follows:
Year Ended December 31, 2024 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Point in time |  | $ | 256,010 |  |  | $ | 196,380 |  |  | $ | 452,390 |
Over time |  |  | - |  |  |  | 116,114 |  |  |  | 116,114 |
Total revenue |  | $ | 256,010 |  |  | $ | 312,494 |  |  | $ | 568,504 |
Year Ended December 31, 2023 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Point in time |  | $ | 291,723 |  |  | $ | 178,956 |  |  | $ | 470,679 |
Over time |  |  | - |  |  |  | 97,499 |  |  |  | 97,499 |
Total revenue |  | $ | 291,723 |  |  | $ | 276,455 |  |  | $ | 568,178 |
Year Ended December 31, 2022 |  | Work Truck Attachments |  |  | Work Truck Solutions |  |  | Total Revenue |
Point in time |  | $ | 382,296 |  |  | $ | 145,022 |  |  | $ | 527,318 |
Over time |  |  | - |  |  |  | 88,750 |  |  |  | 88,750 |
Total revenue |  | $ | 382,296 |  |  | $ | 233,772 |  |  | $ | 616,068 |
Contract Balances The following table shows the changes in the Company’s contract liabilities during the years ended December 31, 2024 and 2023:
Year Ended December 31, 2024 |  | Balance at Beginning of Period |  |  | Additions |  |  | Deductions |  |  | Balance at End of Period |
Contract liabilities |  | $ | 4,009 |  |  | $ | 20,205 |  |  | $ | (19,151 | ) |  | $ | 5,063 |
Year Ended December 31, 2023 |  | Balance at Beginning of Period |  |  | Additions |  |  | Deductions |  |  | Balance at End of Period |
Contract liabilities |  | $ | 4,531 |  |  | $ | 21,856 |  |  | $ | (22,378 | ) |  | $ | 4,009 |
The Company receives payments from customers based upon contractual billing schedules. Contract assets include amounts related to the Company's contractual right to consideration for completed performance obligations not yet invoiced. There were no contract assets as of December 31, 2024 or 2023. Contract liabilities include payments received in advance of performance under the contract, variable freight allowances which are refunded to the customer, and rebates paid to distributors under the Company’s municipal rebate program, and are realized with the associated revenue recognized under the contract. The Company recognized all of the amount that was included in contract liabilities at the beginning of the period as revenue in the years ended December 31, 2024 and 2023. Practical Expedients and Exemptions As allowed under Topic 606, the Company adopted the following practical expedients and exemptions:
| ● | The Company generally expenses sales commissions when incurred because the amortization period would have been less than one year. The Company records these costs within selling, general and administrative expenses.
| ● | The Company does not disclose the value of unsatisfied performance obligations for (i) contracts with an original expected length of one year or less and (ii) contracts for which the Company recognizes revenue at the amount to which it has the right to invoice for services performed.
| ● | The Company excludes from the transaction price all sales taxes that are assessed by a governmental authority.
| ● | The Company does not adjust the promised amount of consideration for the effects of a significant financing component, as it expects at contract inception that the period between the transfer to a promised good or service to a customer and the customer’s payment for the good or service will be one year or less.
| ● | The Company accounts for shipping and handling activities that occur after control of the related good transfers as fulfillment activities instead of assessing such activities as performance obligations.

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