Initial commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
-- =============================================================================
|
||||
-- fix-inventory-categories.sql
|
||||
-- Links inventory items that have a Category string but no InventoryCategoryId.
|
||||
-- This affects items imported via CSV before the category fix was applied.
|
||||
-- Safe to run multiple times (only touches items with InventoryCategoryId IS NULL).
|
||||
-- Run against: PowderCoatingDb
|
||||
-- =============================================================================
|
||||
|
||||
-- STEP 1: Preview what will be updated (run this first, review before proceeding)
|
||||
SELECT
|
||||
ii.Id,
|
||||
ii.SKU,
|
||||
ii.Name,
|
||||
ii.CompanyId,
|
||||
ii.Category AS CurrentCategory,
|
||||
cat.DisplayName AS ResolvedTo,
|
||||
cat.CategoryCode,
|
||||
cat.IsCoating
|
||||
FROM InventoryItems ii
|
||||
JOIN InventoryCategoryLookups cat
|
||||
ON cat.CompanyId = ii.CompanyId
|
||||
AND cat.IsDeleted = 0
|
||||
AND ii.IsDeleted = 0
|
||||
AND ii.InventoryCategoryId IS NULL
|
||||
AND (
|
||||
ii.Category = cat.DisplayName
|
||||
OR ii.Category = cat.CategoryCode
|
||||
OR (cat.CategoryCode = 'POWDER' AND ii.Category IN ('Powder Coatings','Powder Coating','Powders','Powder'))
|
||||
OR (cat.CategoryCode = 'PRIMER' AND ii.Category IN ('Primers','Primer'))
|
||||
OR (cat.CategoryCode = 'CLEANER' AND ii.Category IN ('Cleaners','Cleaner'))
|
||||
OR (cat.CategoryCode = 'MASKING' AND ii.Category IN ('Masking','Masking Tape','Masking Supplies'))
|
||||
OR (cat.CategoryCode = 'ABRASIVE' AND ii.Category IN ('Abrasive','Abrasives','Blast Media','Abrasive Media'))
|
||||
OR (cat.CategoryCode = 'CHEMICAL' AND ii.Category IN ('Chemicals','Chemical'))
|
||||
OR (cat.CategoryCode = 'CONSUMABLE' AND ii.Category IN ('Consumable','Consumables'))
|
||||
OR (cat.CategoryCode = 'TOOL' AND ii.Category IN ('Tools','Tool','Tools & Equipment','Equipment'))
|
||||
OR (cat.CategoryCode = 'OTHER' AND ii.Category IN ('General','Other'))
|
||||
)
|
||||
ORDER BY ii.CompanyId, ii.Id
|
||||
|
||||
|
||||
-- STEP 2: Apply the fix (run after reviewing Step 1)
|
||||
UPDATE ii
|
||||
SET
|
||||
ii.InventoryCategoryId = cat.Id,
|
||||
ii.Category = cat.DisplayName,
|
||||
ii.UpdatedAt = GETDATE()
|
||||
FROM InventoryItems ii
|
||||
JOIN InventoryCategoryLookups cat
|
||||
ON cat.CompanyId = ii.CompanyId
|
||||
AND cat.IsDeleted = 0
|
||||
AND ii.IsDeleted = 0
|
||||
AND ii.InventoryCategoryId IS NULL
|
||||
AND (
|
||||
ii.Category = cat.DisplayName
|
||||
OR ii.Category = cat.CategoryCode
|
||||
OR (cat.CategoryCode = 'POWDER' AND ii.Category IN ('Powder Coatings','Powder Coating','Powders','Powder'))
|
||||
OR (cat.CategoryCode = 'PRIMER' AND ii.Category IN ('Primers','Primer'))
|
||||
OR (cat.CategoryCode = 'CLEANER' AND ii.Category IN ('Cleaners','Cleaner'))
|
||||
OR (cat.CategoryCode = 'MASKING' AND ii.Category IN ('Masking','Masking Tape','Masking Supplies'))
|
||||
OR (cat.CategoryCode = 'ABRASIVE' AND ii.Category IN ('Abrasive','Abrasives','Blast Media','Abrasive Media'))
|
||||
OR (cat.CategoryCode = 'CHEMICAL' AND ii.Category IN ('Chemicals','Chemical'))
|
||||
OR (cat.CategoryCode = 'CONSUMABLE' AND ii.Category IN ('Consumable','Consumables'))
|
||||
OR (cat.CategoryCode = 'TOOL' AND ii.Category IN ('Tools','Tool','Tools & Equipment','Equipment'))
|
||||
OR (cat.CategoryCode = 'OTHER' AND ii.Category IN ('General','Other'))
|
||||
)
|
||||
|
||||
|
||||
-- STEP 3: Check for any remaining unmatched items (need manual review in the UI)
|
||||
SELECT Id, SKU, Name, CompanyId, Category
|
||||
FROM InventoryItems
|
||||
WHERE IsDeleted = 0
|
||||
AND InventoryCategoryId IS NULL
|
||||
AND Category IS NOT NULL
|
||||
ORDER BY CompanyId, Category
|
||||
Reference in New Issue
Block a user