/** * @param Account $account * @return mixed */ public function findNeedingReminding(Account $account) { $dates = []; for ($i = 1; $i <= 3; $i++) { if ($date = $account->getReminderDate($i)) { $field = $account->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE ? 'due_date' : 'invoice_date'; $dates[] = "{$field} = '{$date}'"; } } $sql = implode(' OR ', $dates); $invoices = Invoice::invoiceType(INVOICE_TYPE_STANDARD)->whereAccountId($account->id)->where('balance', '>', 0)->where('is_recurring', '=', false)->whereRaw('(' . $sql . ')')->get(); return $invoices; }