From 7556b68b1f7d3c5a955d1a104ffa867340f79619 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 2 Jul 2021 19:40:44 +1000 Subject: [PATCH 1/2] Constrain recurring / reminders if the client is archived / deleted --- app/Jobs/Cron/RecurringInvoicesCron.php | 8 ++++++++ app/Jobs/Util/ReminderJob.php | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/app/Jobs/Cron/RecurringInvoicesCron.php b/app/Jobs/Cron/RecurringInvoicesCron.php index 0350b61749..ae993e180e 100644 --- a/app/Jobs/Cron/RecurringInvoicesCron.php +++ b/app/Jobs/Cron/RecurringInvoicesCron.php @@ -48,6 +48,10 @@ class RecurringInvoicesCron ->whereNull('deleted_at') ->where('status_id', RecurringInvoice::STATUS_ACTIVE) ->where('remaining_cycles', '!=', '0') + ->whereHas('client', function ($query) { + $query->where('is_deleted',0) + ->where('deleted_at', NULL); + }) ->with('company') ->cursor(); @@ -70,6 +74,10 @@ class RecurringInvoicesCron ->whereNull('deleted_at') ->where('status_id', RecurringInvoice::STATUS_ACTIVE) ->where('remaining_cycles', '!=', '0') + ->whereHas('client', function ($query) { + $query->where('is_deleted',0) + ->where('deleted_at', NULL); + }) ->with('company') ->cursor(); diff --git a/app/Jobs/Util/ReminderJob.php b/app/Jobs/Util/ReminderJob.php index dd0b1d5217..e51072b1a9 100644 --- a/app/Jobs/Util/ReminderJob.php +++ b/app/Jobs/Util/ReminderJob.php @@ -62,6 +62,10 @@ class ReminderJob implements ShouldQueue ->where('is_deleted', 0) ->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL]) ->where('balance', '>', 0) + ->whereHas('client', function ($query) { + $query->where('is_deleted',0) + ->where('deleted_at', NULL); + }) ->with('invitations')->cursor()->each(function ($invoice) { if ($invoice->isPayable()) { From cdff2af44477b39bc4a56afd11e9ddc992948d81 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 2 Jul 2021 20:03:44 +1000 Subject: [PATCH 2/2] Constrain recurring / reminders if the client is archived / deleted --- app/Console/Commands/CheckData.php | 34 ++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index 25ef882f2a..fdc0886113 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -426,8 +426,6 @@ class CheckData extends Command Client::cursor()->where('is_deleted', 0)->where('clients.updated_at', '>', now()->subDays(2))->each(function ($client) { $client->invoices->where('is_deleted', false)->whereIn('status_id', '!=', Invoice::STATUS_DRAFT)->each(function ($invoice) use ($client) { - // $total_amount = $invoice->payments()->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment:: STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED])->get()->sum('pivot.amount'); - // $total_refund = $invoice->payments()->get()->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment:: STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED])->sum('pivot.refunded'); $total_paid = $invoice->payments() ->where('is_deleted', false)->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment:: STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) @@ -455,6 +453,38 @@ class CheckData extends Command $this->logMessage("{$this->wrong_balances} clients with incorrect invoice balances"); } + + + // $clients = DB::table('clients') + // ->leftJoin('invoices', function($join){ + // $join->on('invoices.client_id', '=', 'clients.id') + // ->where('invoices.is_deleted',0) + // ->where('invoices.status_id', '>', 1); + // }) + // ->leftJoin('credits', function($join){ + // $join->on('credits.client_id', '=', 'clients.id') + // ->where('credits.is_deleted',0) + // ->where('credits.status_id', '>', 1); + // }) + // ->leftJoin('payments', function($join) { + // $join->on('payments.client_id', '=', 'clients.id') + // ->where('payments.is_deleted', 0) + // ->whereIn('payments.status_id', [Payment::STATUS_COMPLETED, Payment:: STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]); + // }) + // ->where('clients.is_deleted',0) + // //->where('clients.updated_at', '>', now()->subDays(2)) + // ->groupBy('clients.id') + // ->havingRaw('sum(coalesce(invoices.amount - invoices.balance - credits.amount)) != sum(coalesce(payments.amount - payments.refunded, 0))') + // ->get(['clients.id', DB::raw('sum(coalesce(invoices.amount - invoices.balance - credits.amount)) as invoice_amount'), DB::raw('sum(coalesce(payments.amount - payments.refunded, 0)) as payment_amount')]); + + + + + + + + + private function checkClientBalances() { $this->wrong_balances = 0;