Fix demo reset: wipe bills/expenses, fix apostrophe display bug
- Add Bills and Expenses flags to RemoveSeedDataOptions - RemoveSeedDataAsync: delete BillPayments + BillLineItems + Bills, then Expenses for the company when those flags are set - ResetDemoCompany action: enable Bills=true and Expenses=true so all seeded AP data is cleared before re-seeding (was skipping on second reset) - Fix apostrophe in success message (was ' in C# string, double-encoded by Razor to literal ' on screen) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -333,6 +333,65 @@ public partial class SeedDataService
|
||||
}
|
||||
}
|
||||
|
||||
// --- Vendor Bills (all bills for the company) ---
|
||||
if (options.Bills)
|
||||
{
|
||||
var billIds = await _context.Set<Core.Entities.Bill>()
|
||||
.IgnoreQueryFilters()
|
||||
.Where(b => b.CompanyId == companyId)
|
||||
.Select(b => b.Id)
|
||||
.ToListAsync();
|
||||
|
||||
if (billIds.Any())
|
||||
{
|
||||
var payments = await _context.Set<Core.Entities.BillPayment>()
|
||||
.IgnoreQueryFilters()
|
||||
.Where(p => billIds.Contains(p.BillId))
|
||||
.ToListAsync();
|
||||
if (payments.Any()) _context.Set<Core.Entities.BillPayment>().RemoveRange(payments);
|
||||
|
||||
var lineItems = await _context.Set<Core.Entities.BillLineItem>()
|
||||
.IgnoreQueryFilters()
|
||||
.Where(li => billIds.Contains(li.BillId))
|
||||
.ToListAsync();
|
||||
if (lineItems.Any()) _context.Set<Core.Entities.BillLineItem>().RemoveRange(lineItems);
|
||||
|
||||
var bills = await _context.Set<Core.Entities.Bill>()
|
||||
.IgnoreQueryFilters()
|
||||
.Where(b => billIds.Contains(b.Id))
|
||||
.ToListAsync();
|
||||
_context.Set<Core.Entities.Bill>().RemoveRange(bills);
|
||||
totalRemoved += bills.Count;
|
||||
details.Add($"✓ Removed {bills.Count} vendor bill(s)");
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
details.Add("• No vendor bills found");
|
||||
}
|
||||
}
|
||||
|
||||
// --- Expenses ---
|
||||
if (options.Expenses)
|
||||
{
|
||||
var expenses = await _context.Set<Core.Entities.Expense>()
|
||||
.IgnoreQueryFilters()
|
||||
.Where(e => e.CompanyId == companyId)
|
||||
.ToListAsync();
|
||||
|
||||
if (expenses.Any())
|
||||
{
|
||||
_context.Set<Core.Entities.Expense>().RemoveRange(expenses);
|
||||
totalRemoved += expenses.Count;
|
||||
details.Add($"✓ Removed {expenses.Count} expense(s)");
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
details.Add("• No expenses found");
|
||||
}
|
||||
}
|
||||
|
||||
result.ItemsSeeded = totalRemoved;
|
||||
result.Details = details;
|
||||
result.Message = totalRemoved > 0
|
||||
|
||||
Reference in New Issue
Block a user