private function checkPaidToDate()
{
// update client paid_to_date value
$clients = DB::table('clients')->join('payments', 'payments.client_id', '=', 'clients.id')->join('invoices', 'invoices.id', '=', 'payments.invoice_id')->where('payments.is_deleted', '=', 0)->where('payments.payment_status_id', '!=', 2)->where('payments.payment_status_id', '!=', 3)->where('invoices.is_deleted', '=', 0)->groupBy('clients.id')->havingRaw('clients.paid_to_date != sum(payments.amount - payments.refunded) and clients.paid_to_date != 999999999.9999')->get(['clients.id', 'clients.paid_to_date', DB::raw('sum(payments.amount) as amount')]);
$this->logMessage(count($clients) . ' clients with incorrect paid to date');
if (count($clients) > 0) {
$this->isValid = false;
}
if ($this->option('fix') == 'true') {
foreach ($clients as $client) {
DB::table('clients')->where('id', $client->id)->update(['paid_to_date' => $client->amount]);
}
}
}