XML 48 R37.htm IDEA: XBRL DOCUMENT
v3.20.2

Revenue Recognition - Disaggregation (Details) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended
--- | --- | ---
Jun. 30, 2020 | Jun. 30, 2019 | Jun. 30, 2020 | Jun. 30, 2019
Revenue Recognition |  |  |  |
Net sales | $ 646,099 | $ 660,112 | $ 1,299,327 | $ 1,279,442
Insulation and accessories |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 507,010 | 523,383 | 1,027,196 | 1,015,086
Glass and windows |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 39,371 | 39,086 | 80,690 | 76,954
Rain gutters |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 41,869 | 38,341 | 75,402 | 70,262
All other |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 57,849 | 59,302 | 116,039 | 117,140
Residential |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 505,534 | 504,659 | 1,012,266 | 980,794
Commercial |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 140,565 | 155,453 | 287,061 | 298,648
Operating Segment |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 646,099 | 660,112 | 1,299,327 | 1,279,442
Operating Segment | Installation |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 466,569 | 483,028 | 942,442 | 932,410
Operating Segment | Installation | Insulation and accessories |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 360,999 | 377,541 | 730,995 | 727,496
Operating Segment | Installation | Glass and windows |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 39,371 | 39,086 | 80,690 | 76,954
Operating Segment | Installation | Rain gutters |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 21,577 | 21,569 | 40,506 | 40,492
Operating Segment | Installation | All other |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 44,622 | 44,832 | 90,251 | 87,468
Operating Segment | Installation | Residential |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 370,969 | 373,945 | 744,250 | 723,818
Operating Segment | Installation | Commercial |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 95,600 | 109,083 | 198,192 | 208,592
Operating Segment | Distribution |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 216,336 | 213,487 | 430,558 | 417,951
Operating Segment | Distribution | Insulation and accessories |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 175,559 | 174,024 | 355,808 | 343,606
Operating Segment | Distribution | Rain gutters |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 25,979 | 23,066 | 45,970 | 41,651
Operating Segment | Distribution | All other |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 14,798 | 16,397 | 28,780 | 32,694
Operating Segment | Distribution | Residential |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 163,615 | 159,774 | 326,071 | 313,552
Operating Segment | Distribution | Commercial |  |  |  |
Revenue Recognition |  |  |  |
Net sales | 52,721 | 53,713 | 104,487 | 104,399
Intercompany Eliminations and Other Adjustments |  |  |  |
Revenue Recognition |  |  |  |
Net sales | (36,806) | (36,403) | (73,673) | (70,919)
Intercompany Eliminations and Other Adjustments | Insulation and accessories |  |  |  |
Revenue Recognition |  |  |  |
Net sales | (29,548) | (28,182) | (59,607) | (56,016)
Intercompany Eliminations and Other Adjustments | Rain gutters |  |  |  |
Revenue Recognition |  |  |  |
Net sales | (5,687) | (6,294) | (11,074) | (11,881)
Intercompany Eliminations and Other Adjustments | All other |  |  |  |
Revenue Recognition |  |  |  |
Net sales | (1,571) | (1,927) | (2,992) | (3,022)
Intercompany Eliminations and Other Adjustments | Residential |  |  |  |
Revenue Recognition |  |  |  |
Net sales | (29,050) | (29,060) | (58,055) | (56,576)
Intercompany Eliminations and Other Adjustments | Commercial |  |  |  |
Revenue Recognition |  |  |  |
Net sales | $ (7,756) | $ (7,343) | $ (15,618) | $ (14,343)

X
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. + References No definition available. + Details
Name: | us-gaap_DisaggregationOfRevenueLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 4 -Subparagraph (a) -URI http://asc.fasb.org/extlink&oid=118956577&loc=SL49130543-203045 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 5 -URI http://asc.fasb.org/extlink&oid=118956577&loc=SL49130545-203045 + Details
Name: | us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Details
Name: | srt_ProductOrServiceAxis=bld_InsulationAndAccessoriesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_ProductOrServiceAxis=bld_GlassAndWindowsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_ProductOrServiceAxis=bld_RainGuttersMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_ProductOrServiceAxis=bld_AllOtherProductsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_MajorCustomersAxis=bld_ResidentialMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_MajorCustomersAxis=bld_CommercialMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_StatementBusinessSegmentsAxis=bld_InstallationSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_StatementBusinessSegmentsAxis=bld_DistributionSegmentMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | srt_ConsolidationItemsAxis=bld_EliminationsAndReconcilingItemsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |