diff --git a/app/Models/Expense.php b/app/Models/Expense.php index b41f733..248a04b 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -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); diff --git a/app/Models/Sale.php b/app/Models/Sale.php index 97707d8..bf59284 100644 --- a/app/Models/Sale.php +++ b/app/Models/Sale.php @@ -25,6 +25,20 @@ class Sale extends Model return $this->morphMany(Transaction::class, 'transactionable'); } + protected static function booted() + { + static::deleting(function ($sale) { + $sale->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);