CTLD — Do It Best Catalog File
What is this file?
The CTLD file is the primary Do It Best catalog file. It is a fixed-width record format containing the complete product catalog for a single RSC (Retail Service Center), including product details, costs at multiple membership tiers (Classic, Vision, PAR), retail pricing, margins, and operational flags. This is the most field-rich import file in the pipeline with over 50 fields per record.
File Details
| Property |
Value |
| File pattern |
CTLD*.out |
| Format |
Fixed-width (450 characters per record) |
| Vendor |
Do It Best |
| Frequency |
Daily |
Raw File Fields
Identification
| Position |
Length |
Raw Field |
Data Type |
Description |
| 0 |
3 |
RecordID |
string |
Record type identifier |
| 3 |
6 |
MemberNum |
string |
Member number |
| 9 |
2 |
RSC |
string |
Retail service center |
| 11 |
6 |
Sku |
string |
Do It Best SKU |
| 17 |
9 |
PersonalSku |
string |
Personal SKU variant |
| 26 |
14 |
GTIN |
string |
Global Trade Item Number |
| 40 |
24 |
MfgPartNum |
string |
Manufacturer part number |
Dates
| Position |
Length |
Raw Field |
Data Type |
Description |
| 64 |
14 |
CreateTimeStamp |
datetime |
Record creation timestamp |
| 78 |
8 |
LoadDate |
datetime |
File load date (YYYYMMDD) |
Product Attributes
| Position |
Length |
Raw Field |
Data Type |
Description |
| 86 |
30 |
Description |
string |
Product description |
| 116 |
4 |
VendorNum |
string |
Vendor number |
| 120 |
20 |
VendorName |
string |
Vendor name |
| 140 |
2 |
Department |
string |
Department code |
| 142 |
4 |
FineLineClassCode |
string |
Fine line class |
| 146 |
6 |
CatalogPage |
string |
Catalog page reference |
| 395 |
4 |
ProductClassificationDept |
string |
Classification department |
| 399 |
4 |
ProductGroup |
string |
Product group |
Multipliers
| Position |
Length |
Raw Field |
Data Type |
Description |
| 152 |
5 |
Mult3 |
int |
Multiplier 3 |
| 157 |
5 |
Mult2 |
int |
Multiplier 2 |
| 162 |
5 |
Mult1 |
int |
Multiplier 1 |
| 167 |
1 |
CaseMultCode |
int |
Case multiplier code |
| 168 |
1 |
MbrCostoption |
string |
Member cost option |
Costs (divided by 1000)
All cost fields are stored in the file as integers that must be divided by 1000 to get the dollar amount.
| Position |
Length |
Raw Field |
Data Type |
Description |
| 169 |
8 |
Classic1Cost |
money |
Classic tier 1 cost |
| 177 |
8 |
Classic2Cost |
money |
Classic tier 2 cost |
| 185 |
8 |
Classic3Cost |
money |
Classic tier 3 cost |
| 193 |
8 |
Vision3Cost |
money |
Vision tier 3 cost |
| 201 |
8 |
Vision2Cost |
money |
Vision tier 2 cost |
| 209 |
8 |
Vision1Cost |
money |
Vision tier 1 cost |
| 217 |
8 |
PAR3Cost |
money |
PAR tier 3 cost |
| 225 |
8 |
PAR2Cost |
money |
PAR tier 2 cost |
| 233 |
8 |
PAR1Cost |
money |
PAR tier 1 cost |
| 241 |
8 |
DropShipCost |
money |
Drop ship cost |
Pricing (divided by 100)
Pricing fields are stored as integers divided by 100.
| Position |
Length |
Raw Field |
Data Type |
Description |
| 249 |
7 |
RetailMember |
money |
Retail member price |
| 256 |
7 |
SuggestedRetail |
money |
Suggested retail price |
| 273 |
7 |
SuggAuxRetail |
money |
Per-unit auxiliary retail price |
Unit of Measure
| Position |
Length |
Raw Field |
Data Type |
Description |
| 263 |
2 |
Unit |
string |
Unit of measure |
| 265 |
1 |
IMCSAuxRetailSwitch |
string |
Auxiliary retail switch flag |
| 266 |
2 |
AuxUnit |
string |
Auxiliary unit of measure |
| 268 |
5 |
AuxQty |
int |
Auxiliary quantity per package |
Margins (divided by 10)
| Position |
Length |
Raw Field |
Data Type |
Description |
| 280 |
4 |
GrossMargin |
money |
Gross margin (÷100) |
| 284 |
3 |
SuggAuxMargin |
money |
Suggested auxiliary margin |
| 287 |
3 |
MCSMarginCode |
string |
MCS margin code |
| 290 |
3 |
SuggClassicMargin |
money |
Suggested Classic margin |
| 293 |
3 |
SuggVisionMargin |
money |
Suggested Vision margin |
| 296 |
3 |
SuggPARMargin |
money |
Suggested PAR margin |
Physical Attributes
| Position |
Length |
Raw Field |
Data Type |
Description |
| 299 |
7 |
UnitCube |
decimal |
Unit cube (÷10000) |
| 306 |
7 |
UnitWeight |
decimal |
Unit weight (÷1000) |
Operational Flags
| Position |
Length |
Raw Field |
Data Type |
Description |
| 313 |
6 |
SubstituteItem |
string |
Substitute SKU |
| 319 |
6 |
Substitute2 |
string |
Second substitute SKU |
| 325 |
1 |
ItemType |
string |
Item type switch |
| 326 |
1 |
NewItemIndicator |
string |
New item flag |
| 327 |
1 |
StatusCode |
string |
Item status code |
| 328 |
1 |
PromoStatusCode |
string |
Promotional status |
| 329 |
1 |
KeyItemCode |
string |
Key item flag |
| 330 |
1 |
IMCSDBLVCode |
string |
IMCS DBLC code |
| 331 |
1 |
GTINBarCodePkgSwitch |
string |
Barcode package switch |
| 332 |
3 |
CountryOfOrigin |
string |
Country of origin |
| 335 |
1 |
ReturnGoodsCode |
string |
Return goods code |
| 336 |
5 |
IMCSOrderPoint |
int |
IMCS order point |
| 341 |
5 |
IMCSOrderQty |
int |
IMCS order quantity |
| 346 |
1 |
MbrSlowMovingItem |
string |
Slow-moving item flag |
| 347 |
1 |
UPSSwitch |
string |
UPS shipping switch |
| 348 |
1 |
CentralStockSwitch |
string |
Central stock flag |
| 349 |
2 |
CSPrimaryRSC |
string |
Central stock primary RSC |
| 351 |
2 |
CSSecondaryRSC |
string |
Central stock secondary RSC |
| 353 |
7 |
ExceptionQty |
int |
Exception quantity |
| 360 |
7 |
MaximumQty |
int |
Maximum quantity |
| 367 |
1 |
MaxQtySwitch |
string |
Maximum quantity switch |
Private Label & Misc
| Position |
Length |
Raw Field |
Data Type |
Description |
| 368 |
1 |
PrivateLabel |
string |
Private label flag |
| 369 |
25 |
PrivateLabelDesc |
string |
Private label description |
| 394 |
1 |
PriceCode |
string |
Price code |
| 403 |
1 |
DIB404 |
string |
Reserved field |
| 404 |
1 |
DIB405 |
string |
Reserved field |
How Margin Master Uses It
- One file per RSC: each RSC receives its own catalog, so Margin Master always uses the catalog for your store's RSC.
- Suggested retail required: items with no suggested retail (blank or zero) are left out and do not reach the main grid.
- Cost: the item's cost is the highest of its three Classic costs.
- Retail: the suggested retail price.
- Level 1 through Level 5: derived from the Do it Best price-level rounding scheme, not read directly from the file. Level 1 and Level 2 are rounded price points below retail; Level 3 to Level 5 are the next three rounded prices above retail.
- Pricing strategy code: the first character of the price code; a blank price code defaults to
X.
- Order multiples: the three multipliers are shown together as
Mult3|Mult2|Mult1.
- Taxonomy: the four Do it Best taxonomy levels come from the PCDITEMXREF and PCDPRODCLASS files.
Unit of measure adjustment
Some products are sold per sub-unit but packaged in larger units — wire sold per foot but packaged per roll, for example. For these, SuggAuxRetail holds the per-unit price.
Before applying prices, Margin Master checks whether your POS sells the item per unit or per package by comparing your current price with the per-unit price and with the package retail. If your current price is closer to the per-unit price, every price and cost from the catalog is multiplied by the ratio of the per-unit price to the package retail, so the vendor prices line up with how you sell the item. Otherwise no adjustment is made. Suggested margins are never scaled.