fix: cascade delete related transactions and ledgers for sales and expenses

Ensure data integrity by cleaning up dependent records when deleting Sale or Expense models. This prevents orphaned transactions and ledgers in the database.
This commit is contained in:
Jp
2026-02-09 22:25:08 +08:00
parent 1548e178bc
commit 0e4da559d6
2 changed files with 28 additions and 0 deletions

View File

@@ -25,6 +25,20 @@ class Expense extends Model
return $this->morphMany(Transaction::class, 'transactionable');
}
protected static function booted()
{
static::deleting(function ($expense) {
$expense->transactions->each(function ($transaction) {
// Delete associated ledgers first to trigger any ledger deletion logic if exists
$transaction->ledgers->each(function ($ledger) {
$ledger->balances()->delete(); // Delete balances associated with ledger
$ledger->delete();
});
$transaction->delete();
});
});
}
public function branch(): BelongsTo
{
return $this->belongsTo(Branch::class);