diff --git a/app/Export/CSV/BaseExport.php b/app/Export/CSV/BaseExport.php index 7215731229..ff2888aa01 100644 --- a/app/Export/CSV/BaseExport.php +++ b/app/Export/CSV/BaseExport.php @@ -864,7 +864,12 @@ class BaseExport if (isset($this->input['product_key'])) { - $products = explode(",", $this->input['product_key']); +$products = str_getcsv($this->input['product_key'], ',', "'"); + + $products = array_map(function ($product) { + return trim($product, "'"); + }, $products); + $query->where(function ($q) use ($products) { foreach ($products as $product) { $q->orWhereJsonContains('line_items', ['product_key' => $product]); diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php index 17495986d2..2a4f8e9e50 100644 --- a/app/Export/CSV/InvoiceItemExport.php +++ b/app/Export/CSV/InvoiceItemExport.php @@ -65,7 +65,6 @@ class InvoiceItemExport extends BaseExport if (count($this->input['report_keys']) == 0) { $this->force_keys = true; $this->input['report_keys'] = array_values($this->mergeItemsKeys('invoice_report_keys')); - nlog($this->input['report_keys']); } $this->input['report_keys'] = array_merge($this->input['report_keys'], array_diff($this->forced_client_fields, $this->input['report_keys'])); @@ -158,10 +157,16 @@ class InvoiceItemExport extends BaseExport private function filterItems(array $items): array { - + //if we have product filters in place, we will also need to filter the items at this level: if (isset($this->input['product_key'])) { - $products = explode(",", $this->input['product_key']); + + $products = str_getcsv($this->input['product_key'], ',', "'"); + + $products = array_map(function($product) { + return trim($product, "'"); + }, $products); + $items = array_filter($items, function ($item) use ($products) { return in_array($item->product_key, $products); }); diff --git a/app/Http/Requests/Report/GenericReportRequest.php b/app/Http/Requests/Report/GenericReportRequest.php index 4cedc6bcfe..63751418b7 100644 --- a/app/Http/Requests/Report/GenericReportRequest.php +++ b/app/Http/Requests/Report/GenericReportRequest.php @@ -39,6 +39,7 @@ class GenericReportRequest extends Request 'document_email_attachment' => 'sometimes|bool', 'pdf_email_attachment' => 'sometimes|bool', 'include_deleted' => 'required|bool', + 'product_key' => 'sometimes|string|nullable', // 'status' => 'sometimes|string|nullable|in:all,draft,sent,viewed,paid,unpaid,overdue', ]; } @@ -69,6 +70,7 @@ class GenericReportRequest extends Request $input['user_id'] = auth()->user()->id; if (!$this->checkAuthority()) { + $input['product_key'] = ''; $input['date_range'] = ''; $input['start_date'] = ''; $input['end_date'] = '';