Files
PowderCoatingLogix/docs/SEED_DATA_REFERENCE.md
T
2026-04-23 21:38:24 -04:00

10 KiB

Seed Data Reference

This document details all data that gets seeded when you run the seed data operations.

Two Types of Seeding

1. System Data Seeding

Access: Platform Management > Seed Data > "Seed System Data" button

Seeds platform-wide data needed for the application to function.

2. Company Data Seeding

Access: Platform Management > Seed Data > "Seed Data" button (for specific company)

Seeds demo/test data for a specific company.


System Data (Seed System Data)

Roles (6 roles)

  • SuperAdmin - Platform-wide access
  • Administrator - Company administrator
  • Manager - Operations manager
  • Employee - Can create/edit jobs and quotes
  • ShopFloor - Can update job status
  • ReadOnly - View-only access

Default Company (1 company)

  • Company Name: Demo Company
  • Company Code: DEMO
  • Plan: Enterprise
  • Location: Demo City, CA 90210

SuperAdmin Users (2 users)

  1. SuperAdmin 1

    • Email: superadmin@powdercoating.com
    • Password: SuperAdmin123!
    • Role: SuperAdmin
  2. SuperAdmin 2 (Admin)

    • Email: admin@powdercoating.com
    • Password: Admin123!
    • Role: SuperAdmin

Company Data (Seed Company Data)

When you seed data for a company, the following gets created:

1. Lookup Tables

Job Statuses (16 statuses)

Complete workflow from creation to delivery:

  1. Pending - Awaiting approval
  2. Quoted - Quote generated
  3. Approved - Ready to start
  4. In Preparation - Job prep
  5. Sandblasting - Surface prep
  6. Masking/Taping - Masking areas
  7. Cleaning - Pre-coat cleaning
  8. In Oven - Pre-heating
  9. Coating - Applying powder
  10. Curing - Heat curing
  11. Quality Check - Inspection
  12. Completed - Work finished
  13. Ready for Pickup - Awaiting customer
  14. Delivered - Job delivered
  15. On Hold - Paused
  16. Cancelled - Cancelled

Job Priorities (5 priorities)

  • Low - No rush
  • Normal - Standard priority (default)
  • High - Expedited
  • Urgent - Rush job
  • Rush - Highest priority

Quote Statuses (7 statuses)

  • Draft - Being prepared
  • Pending - Sent to customer
  • Accepted - Customer approved
  • Rejected - Customer declined
  • Expired - Past validity date
  • Revised - Being updated
  • Converted - Converted to job

Inventory Categories (5 categories)

  • POWDER - Powder coating materials
  • CLEANER - Cleaning supplies
  • MASKING - Masking materials
  • CONSUMABLE - General consumables
  • CHEMICAL - Chemicals and treatments

Appointment Statuses (6 statuses)

  • Scheduled - Appointment set
  • Confirmed - Customer confirmed
  • In Progress - Currently happening
  • Completed - Finished
  • Cancelled - Cancelled
  • No Show - Customer didn't show

Appointment Types (6 types)

  • Estimate - Quote/estimate appointment
  • Pickup - Customer pickup
  • Delivery - Delivery appointment
  • Consultation - Sales consultation
  • Inspection - Quality inspection
  • Follow Up - Follow-up meeting

2. Inventory Items (10 items)

Powder Coatings (8 powders)

  1. Matte Black (RAL 9005) - 500 lbs
  2. Gloss White (RAL 9010) - 400 lbs
  3. Gloss Red (RAL 3020) - 150 lbs
  4. Metallic Blue (RAL 5002) - 200 lbs
  5. Textured Gray (RAL 7037) - 300 lbs
  6. Safety Yellow (RAL 1003) - 125 lbs
  7. Pure Orange (RAL 2004) - 100 lbs
  8. Forest Green (RAL 6009) - 175 lbs

Each powder includes:

  • SKU (prefixed with company code)
  • Color code (RAL standard)
  • Finish type (Matte, Gloss, Metallic, Textured)
  • Manufacturer (Tiger Drylac or Axalta)
  • Quantity on hand
  • Reorder points
  • Cost information
  • Coverage specs (30 sq ft/lb)
  • Transfer efficiency (65%)

Consumables (2 items)

  1. Pre-Treatment Cleaner - 50 gallons
  2. High-Temp Masking Tape - 200 rolls

3. Company Operating Costs (1 record)

Default rates for pricing calculations:

  • Labor Rate: $25.00/hour
  • Oven Operating Cost: $15.00/hour
  • Sandblaster Cost: $12.00/hour
  • Coating Booth Cost: $10.00/hour
  • Powder Coating Cost: $0.85/sq ft
  • General Markup: 30%
  • Rush Charge: 25% (percentage-based)
  • Tax Rate: 7.5%

4. Pricing Tiers (4 tiers)

Volume discount tiers:

  • Standard - 0% discount (default)
  • Silver - 5% discount
  • Gold - 10% discount
  • Platinum - 15% discount

5. Customers (25 customers)

Commercial Customers (15 customers)

Full-featured B2B customers with:

  • Company names (e.g., "Acme Manufacturing Corp")
  • Contact information
  • Tax IDs
  • Credit limits ($15,000 - $75,000)
  • Current balances
  • Payment terms (Net 15, Net 30, Net 60)
  • Assigned pricing tiers
  • Industry notes

Industries represented:

  • Manufacturing
  • Automotive parts
  • Railings & gates
  • Fitness equipment
  • Transit authority
  • Wheel restoration
  • Furniture manufacturing
  • Motorsports
  • Green energy
  • Architectural metalwork
  • Marine equipment
  • HVAC systems
  • Playground equipment
  • Office furniture
  • Agricultural equipment

Individual Customers (10 customers)

Consumer/hobbyist customers:

  • Personal names (e.g., "James Thompson")
  • Email and phone
  • "Due on receipt" payment terms
  • Project notes (classic cars, patio furniture, motorcycles, etc.)

6. Equipment (5 equipment records)

Shop equipment with maintenance tracking:

  1. Batch Powder Coating Oven

    • Manufacturer: Nordson
    • Model: Batch-2000
    • Capacity: Large
    • Purchase: $45,000
    • Status: Operational
    • Last service: 60 days ago
  2. Sandblasting Cabinet

    • Manufacturer: Empire Abrasive
    • Model: SB-900
    • Capacity: Medium
    • Purchase: $12,500
    • Status: Operational
    • Last service: 30 days ago
  3. Powder Coating Gun #1

    • Manufacturer: Wagner
    • Model: GM-7000
    • Capacity: Small
    • Purchase: $3,200
    • Status: Operational
    • Last service: 15 days ago
  4. Air Compressor

    • Manufacturer: Quincy
    • Model: QT-10
    • Capacity: Large
    • Purchase: $8,500
    • Status: Operational
    • Last service: 90 days ago
  5. Conveyor System

    • Manufacturer: Midwest Automation
    • Model: CV-500
    • Capacity: Large
    • Purchase: $28,000
    • Status: Needs Maintenance
    • Scheduled maintenance due

7. Catalog Items (varies)

Product catalog for standard items. Includes:

  • Categories (hierarchical structure)
  • Items with default pricing
  • Default service flags (sandblasting, masking)
  • Estimated time per item

Note: Catalog seeding varies by implementation.

8. Quotes (sample quotes)

Demo quotes showing:

  • Quote numbers
  • Customer references
  • Line items with pricing
  • Status workflow examples
  • Validity dates

9. Jobs (sample jobs)

Demo jobs demonstrating:

  • Job numbers
  • Customer assignments
  • Status progression
  • Priority levels
  • Job items and pricing
  • Date tracking

10. Appointments (sample appointments)

Demo appointments showing:

  • Appointment types in use
  • Scheduling examples
  • Customer associations
  • Status tracking

11. Demo Company Users (DEMO company only)

Only created for company code "DEMO":

  1. Company Admin

    • Email: admin@demo.com
    • Password: CompanyAdmin123!
    • Role: Administrator
    • Department: Management
    • Full permissions
  2. Manager

    • Email: manager@demo.com
    • Password: Manager123!
    • Role: Manager
    • Department: Operations
    • Most permissions (cannot approve quotes)

Idempotent Seeding

The seeding process is idempotent - it checks if data already exists and skips it:

Duplicate Detection

  • Customers: Checked by email address
  • Inventory: Checked by SKU
  • Lookups: Checked by count (if 16 job statuses exist, skip)
  • Operating Costs: Checked by company ID
  • Pricing Tiers: Checked by company ID
  • Users: Checked by email address

What Happens on Re-run

Skipped: Existing records are preserved Created: Only missing records are added Reported: Results show what was created vs skipped

Error Handling (New!)

If individual records fail (e.g., duplicate email):

  • ⊘ Record is skipped with friendly error message
  • ✓ Other records continue to be seeded
  • 📊 Summary shows successful + skipped counts
  • ⚠️ Warnings section lists all skipped items with reasons

Seeding Workflow

  1. Seed System Data (one time)

    • Creates roles, default company, SuperAdmin users
  2. Seed Company Data (per company)

    • Creates lookups, inventory, customers, etc.
    • Can be run multiple times safely
    • Can reset company data and re-seed for testing

Testing Workflow

1. Reset company data (using ResetCompanyData.sql)
2. Modify seed code if needed
3. Run "Seed Data" for company
4. Review results and warnings
5. Test with fresh data

Customization

How to Modify Seed Data

Seed data is defined in these files:

src/PowderCoating.Infrastructure/Services/
├── SeedDataService.cs              # Main service, inventory, costs, tiers
├── SeedDataService.Customers.cs    # Customer data
├── SeedDataService.Equipment.cs    # Equipment data
├── SeedDataService.Jobs.cs         # Job samples
├── SeedDataService.Quotes.cs       # Quote samples
├── SeedDataService.Catalog.cs      # Catalog items
├── SeedDataService.Appointments.cs # Appointments
└── SeedDataService.Lookups.cs      # All lookup tables

Modifying Quantities

To change how many items are seeded:

  1. Open the relevant partial class file
  2. Add/remove items from the collection
  3. Rebuild the application
  4. Reset company data if re-testing
  5. Re-run seed operation

Example: To add a new powder color, edit SeedDataService.cs and add a new InventoryItem to the inventoryItems list in SeedInventoryItemsAsync().


Production Considerations

DO NOT seed in production!

Seed data is for development and testing only:

  • Contains demo customers with fake data
  • Uses simple passwords
  • Includes placeholder information
  • Not suitable for real business use

For Production

Instead of seeding:

  1. Create companies via admin interface
  2. Users register/are invited by company admin
  3. Customers are added as they come in
  4. Inventory is imported or entered manually
  5. Operating costs are configured per company
  6. Pricing tiers are customized per business model

Last Updated: 2026-02-16