188 lines
5.1 KiB
Markdown
188 lines
5.1 KiB
Markdown
# Company Data Reset Scripts
|
|
|
|
These scripts allow you to completely reset a company's transactional data for testing purposes while preserving lookup tables and the company structure.
|
|
|
|
## Files
|
|
|
|
- **`PreviewCompanyDataReset.sql`** - Shows what would be deleted without making changes (safe to run)
|
|
- **`ResetCompanyData.sql`** - Actually deletes the data (use with caution!)
|
|
|
|
## What Gets Deleted
|
|
|
|
The scripts remove ALL transactional data for the specified company:
|
|
|
|
- ✓ Jobs, Job Items, Job Notes, Job Photos
|
|
- ✓ Quotes and Quote Items
|
|
- ✓ Customers
|
|
- ✓ Inventory Items and Inventory Transactions
|
|
- ✓ Equipment and Maintenance Records
|
|
- ✓ Catalog Categories and Catalog Items
|
|
- ✓ Suppliers
|
|
- ✓ Appointments
|
|
- ✓ Pricing Tiers
|
|
- ✓ Company Operating Costs
|
|
- ✓ Company Preferences
|
|
|
|
## What Gets Preserved
|
|
|
|
The scripts preserve all lookup tables and structure:
|
|
|
|
- ✓ The Company record itself
|
|
- ✓ Users associated with the company
|
|
- ✓ Job Status Lookups
|
|
- ✓ Job Priority Lookups
|
|
- ✓ Quote Status Lookups
|
|
- ✓ Inventory Category Lookups
|
|
- ✓ Appointment Status Lookups
|
|
- ✓ Appointment Type Lookups
|
|
|
|
## Usage
|
|
|
|
### Step 1: Preview (Recommended)
|
|
|
|
First, run the preview script to see what will be deleted:
|
|
|
|
1. Open `PreviewCompanyDataReset.sql` in SQL Server Management Studio (SSMS) or Azure Data Studio
|
|
2. Set the company identifier at the top of the script:
|
|
```sql
|
|
-- Option 1: Use company code
|
|
DECLARE @CompanyCode NVARCHAR(50) = 'DEMO';
|
|
|
|
-- Option 2: OR use company ID (comment out the line above)
|
|
-- DECLARE @CompanyId INT = 1;
|
|
```
|
|
3. Execute the script
|
|
4. Review the output showing:
|
|
- Count of records to be deleted per table
|
|
- Total records to be deleted
|
|
- Sample data from each table
|
|
- What will be preserved
|
|
|
|
### Step 2: Reset (Actual Deletion)
|
|
|
|
After reviewing the preview, run the reset script:
|
|
|
|
1. Open `ResetCompanyData.sql`
|
|
2. Set the same company identifier:
|
|
```sql
|
|
DECLARE @CompanyCode NVARCHAR(50) = 'DEMO';
|
|
```
|
|
3. **IMPORTANT:** Make a database backup if needed
|
|
4. Execute the script
|
|
5. Review the output showing:
|
|
- Deleted record counts per table
|
|
- Total deleted records
|
|
- Preserved data
|
|
|
|
### Step 3: Re-seed (Optional)
|
|
|
|
After resetting, you can re-populate the company with fresh demo data:
|
|
|
|
1. Log in to the application as a SuperAdmin
|
|
2. Navigate to: **Platform Management** > **Seed Data**
|
|
3. Click "Seed Data" for the company you just reset
|
|
4. Review the seeding results and any warnings
|
|
|
|
## Safety Features
|
|
|
|
### Transaction Rollback
|
|
Both scripts use transactions. If any error occurs during deletion, ALL changes are rolled back automatically.
|
|
|
|
### Validation
|
|
- Scripts validate that the company exists before attempting deletion
|
|
- Clear error messages if company is not found
|
|
|
|
### Detailed Logging
|
|
- Each deletion step is logged with record counts
|
|
- Final summary shows exactly what was deleted
|
|
- Preserved data is clearly listed
|
|
|
|
## Examples
|
|
|
|
### Reset the Demo Company
|
|
```sql
|
|
DECLARE @CompanyCode NVARCHAR(50) = 'DEMO';
|
|
```
|
|
|
|
### Reset a Specific Company by ID
|
|
```sql
|
|
-- DECLARE @CompanyCode NVARCHAR(50) = 'DEMO'; -- Comment this out
|
|
DECLARE @CompanyId INT = 5;
|
|
```
|
|
|
|
### Reset Multiple Companies
|
|
To reset multiple companies, execute the script once for each company (change the company code/ID between runs).
|
|
|
|
## Common Scenarios
|
|
|
|
### Testing Fresh Import
|
|
```
|
|
1. Run ResetCompanyData.sql for company "ABC"
|
|
2. Import CSV data for company ABC
|
|
3. Test the import results
|
|
```
|
|
|
|
### Testing Seed Data Changes
|
|
```
|
|
1. Modify seed data routines in code
|
|
2. Run ResetCompanyData.sql for "DEMO"
|
|
3. Re-seed via UI to test new seed data
|
|
4. Verify results
|
|
```
|
|
|
|
### Clean Slate for Demo
|
|
```
|
|
1. Preview what will be deleted
|
|
2. Run ResetCompanyData.sql
|
|
3. Re-seed with fresh demo data
|
|
4. Demo is ready with clean data
|
|
```
|
|
|
|
## Warnings
|
|
|
|
⚠️ **IMPORTANT:** These scripts permanently delete data!
|
|
|
|
- Always run the **preview script first**
|
|
- Make a **database backup** before running reset on production data
|
|
- Cannot be undone (unless you restore from backup)
|
|
- Users are NOT deleted (they will exist but have no data)
|
|
- Company configuration is NOT deleted
|
|
|
|
## Database Permissions
|
|
|
|
To run these scripts, you need:
|
|
- `db_datawriter` role (to delete data)
|
|
- `db_datareader` role (to read company info)
|
|
- Execute permissions on the database
|
|
|
|
## Troubleshooting
|
|
|
|
### Foreign Key Constraint Error
|
|
If you get a foreign key violation, the script may need updating for new tables. Check the error message for the table name and add it to the script in the correct order.
|
|
|
|
### Company Not Found
|
|
```
|
|
Company not found! Please check @CompanyId or @CompanyCode
|
|
```
|
|
**Solution:** Verify the company code or ID is correct:
|
|
```sql
|
|
SELECT Id, CompanyCode, CompanyName FROM Companies;
|
|
```
|
|
|
|
### Transaction Rollback
|
|
If the script fails and rolls back:
|
|
1. Check the error message in the output
|
|
2. Fix the issue (usually a missing table or new FK constraint)
|
|
3. Re-run the script
|
|
|
|
## Support
|
|
|
|
For questions or issues with these scripts:
|
|
1. Check the script comments for usage details
|
|
2. Review the CLAUDE.md file for database structure
|
|
3. Contact the development team
|
|
|
|
---
|
|
|
|
**Last Updated:** 2026-02-16
|