Add Columbia Coatings catalog integration schema fields
Phase 1a of the Columbia Coatings API integration. Adds the persisted fields the sync/mapper will need, ahead of the client and sync service: PowderCatalogItem: - Category: our product category (e.g. "Powder Additives" for gram-sold pigments) derived from vendor taxonomy at import, not stored raw. - Source: provenance (e.g. "Columbia Coatings API"), kept separate from VendorName (= derived manufacturer) so a distributor's right-to-delete can purge by feed regardless of manufacturer. - ChemistryType: resin chemistry (Polyester/TGIC/Epoxy/...), distinct from Finish. - MilThickness: recommended film build as vendor free text. - CureScheduleText: raw cure schedule verbatim (formats vary widely). - CureCurvesJson: all parsed cure curves, so alternate low-temp curves are preserved for heat-sensitive substrates, not just the primary. - FormulationChanges: vendor reformulation log; a signal cure specs may have changed. InventoryItem: - PowderCatalogItemId: loose link to the catalog row (matches the QuoteItemCoat pattern) so inventory detail can show manufacturer-level status (e.g. discontinued/cannot reorder) and future change flags. Nulled, never cascaded, when source catalog data is purged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -40,9 +40,30 @@ public class PowderCatalogItem
|
||||
/// <summary>Cure hold time at cure temperature, in minutes.</summary>
|
||||
public int? CureTimeMinutes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Raw cure schedule text exactly as supplied by the vendor — e.g. "10 minutes @ 400°F".
|
||||
/// Preserved verbatim because vendor formats vary wildly and some carry application notes
|
||||
/// that don't reduce to a single temp/time pair (partial cures, clear-coat steps).
|
||||
/// </summary>
|
||||
public string? CureScheduleText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All parsed cure curves as JSON — e.g. [{"tempF":400,"minutes":10},{"tempF":350,"minutes":20}].
|
||||
/// Many powders list alternate lower-temperature curves; these matter for heat-sensitive
|
||||
/// substrates that cannot take the standard 400°F cure, so we keep every curve, not just the
|
||||
/// primary one in <see cref="CureTemperatureF"/>/<see cref="CureTimeMinutes"/>.
|
||||
/// </summary>
|
||||
public string? CureCurvesJson { get; set; }
|
||||
|
||||
/// <summary>Finish type — e.g. Gloss, Matte, Satin, Metallic, Texture.</summary>
|
||||
public string? Finish { get; set; }
|
||||
|
||||
/// <summary>Resin chemistry — e.g. "Polyester", "TGIC", "Epoxy", "Hybrid". Distinct from <see cref="Finish"/>.</summary>
|
||||
public string? ChemistryType { get; set; }
|
||||
|
||||
/// <summary>Recommended film build (mil thickness) as free text from the vendor — e.g. "2.0-3.0 Mils".</summary>
|
||||
public string? MilThickness { get; set; }
|
||||
|
||||
/// <summary>Comma-separated color family tags — e.g. "Blue,Purple".</summary>
|
||||
public string? ColorFamilies { get; set; }
|
||||
|
||||
@@ -60,6 +81,29 @@ public class PowderCatalogItem
|
||||
|
||||
// ── Catalog management ────────────────────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// Our internal product category — e.g. "Powder Additives" for pigments/additives that are
|
||||
/// sold by weight in grams and mixed into clear rather than sprayed as a standalone powder.
|
||||
/// Null/empty for standard powders. Derived at import from the vendor's taxonomy, NOT stored
|
||||
/// from their raw category list.
|
||||
/// </summary>
|
||||
public string? Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Provenance of this record — e.g. "Columbia Coatings API". Kept SEPARATE from
|
||||
/// <see cref="VendorName"/> (which holds the derived manufacturer) so we can honor a
|
||||
/// distributor's right-to-delete by purging every record that came from their feed,
|
||||
/// regardless of which manufacturer made the product.
|
||||
/// </summary>
|
||||
public string? Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reformulation history as supplied by the vendor — e.g. "Formulation Change: 05/22/26".
|
||||
/// Not a reliable modified-date (free text, reformulations only) but a useful signal that a
|
||||
/// product's formula — and therefore its cure specs — may have changed.
|
||||
/// </summary>
|
||||
public string? FormulationChanges { get; set; }
|
||||
|
||||
/// <summary>True when the vendor has discontinued this product. Kept for historical lookups.</summary>
|
||||
public bool IsDiscontinued { get; set; } = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user