From e822550c38a914e4a8ce663a90b66d87ec4d73fe Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 16 Jan 2023 11:46:41 +1100 Subject: [PATCH] Cleanup for filters --- app/Filters/PurchaseOrderFilters.php | 40 +++++++++++++++---------- app/Filters/RecurringInvoiceFilters.php | 21 ++++++------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/app/Filters/PurchaseOrderFilters.php b/app/Filters/PurchaseOrderFilters.php index 971ab0554679..ad86221ff6a8 100644 --- a/app/Filters/PurchaseOrderFilters.php +++ b/app/Filters/PurchaseOrderFilters.php @@ -42,27 +42,35 @@ class PurchaseOrderFilters extends QueryFilters return $this->builder; } - $po_status = []; + $this->builder->where(function ($query) use ($status_parameters){ - if (in_array('draft', $status_parameters)) { - $po_status[] = PurchaseOrder::STATUS_DRAFT; - } + $po_status = []; - if (in_array('sent', $status_parameters)) { - $po_status[] = PurchaseOrder::STATUS_SENT; - } + if (in_array('draft', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_DRAFT; + } - if (in_array('accepted', $status_parameters)) { - $po_status[] = PurchaseOrder::STATUS_ACCEPTED; - } + if (in_array('sent', $status_parameters)) { + $query->orWhere(function ($q){ + $q->where('status_id', PurchaseOrder::STATUS_SENT) + ->whereNull('due_date') + ->orWhere('due_date', '>=', now()->toDateString()); + }); + + } - if (in_array('cancelled', $status_parameters)) { - $po_status[] = PurchaseOrder::STATUS_CANCELLED; - } + if (in_array('accepted', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_ACCEPTED; + } - if(count($status_parameters) >=1) { - $this->builder->whereIn('status_id', $status_parameters); - } + if (in_array('cancelled', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_CANCELLED; + } + + if(count($status_parameters) >=1) { + $query->whereIn('status_id', $status_parameters); + } + }) return $this->builder; } diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php index c62ba1287576..dfd0ee60e438 100644 --- a/app/Filters/RecurringInvoiceFilters.php +++ b/app/Filters/RecurringInvoiceFilters.php @@ -65,19 +65,20 @@ class RecurringInvoiceFilters extends QueryFilters return $this->builder; } - if (in_array('active', $status_parameters)) { - $this->builder->where('status_id', RecurringInvoice::STATUS_ACTIVE); - } + $recurring_filters = []; - if (in_array('paused', $status_parameters)) { - $this->builder->where('status_id', RecurringInvoice::STATUS_PAUSED); - } + if (in_array('active', $status_parameters)) + $recurring_filters[] = RecurringInvoice::STATUS_ACTIVE; - if (in_array('completed', $status_parameters)) { - $this->builder->where('status_id', RecurringInvoice::STATUS_COMPLETED); - } - return $this->builder; + if (in_array('paused', $status_parameters)) + $recurring_filters[] = RecurringInvoice::STATUS_PAUSED; + + if (in_array('completed', $status_parameters)) + $recurring_filters[] = RecurringInvoice::STATUS_COMPLETED; + + return $this->builder->whereIn('status_id', $recurring_filters); + } /**