diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index b79a381da692..720181d8aac7 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -166,7 +166,7 @@ class ClientFilters extends QueryFilters $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc'; if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/CreditFilters.php b/app/Filters/CreditFilters.php index cee9b9b8d358..8dd84fa7288e 100644 --- a/app/Filters/CreditFilters.php +++ b/app/Filters/CreditFilters.php @@ -148,7 +148,7 @@ class CreditFilters extends QueryFilters if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index 040fd375ace2..ba1e8a013c89 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -197,7 +197,7 @@ class ExpenseFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } if (is_array($sort_col) && in_array($sort_col[1], ['asc', 'desc']) && in_array($sort_col[0], ['public_notes', 'date', 'id_number', 'custom_value1', 'custom_value2', 'custom_value3', 'custom_value4'])) { diff --git a/app/Filters/PaymentFilters.php b/app/Filters/PaymentFilters.php index 29b596e013e8..848d02f5b866 100644 --- a/app/Filters/PaymentFilters.php +++ b/app/Filters/PaymentFilters.php @@ -176,7 +176,7 @@ class PaymentFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/ProjectFilters.php b/app/Filters/ProjectFilters.php index 4f4ef99b2ca4..238cfc4d0b62 100644 --- a/app/Filters/ProjectFilters.php +++ b/app/Filters/ProjectFilters.php @@ -72,7 +72,7 @@ class ProjectFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/PurchaseOrderFilters.php b/app/Filters/PurchaseOrderFilters.php index 5c1c1b460e4c..8d0e093bf1d5 100644 --- a/app/Filters/PurchaseOrderFilters.php +++ b/app/Filters/PurchaseOrderFilters.php @@ -131,7 +131,7 @@ class PurchaseOrderFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/QuoteFilters.php b/app/Filters/QuoteFilters.php index db1985b6918a..0001013744fb 100644 --- a/app/Filters/QuoteFilters.php +++ b/app/Filters/QuoteFilters.php @@ -156,7 +156,7 @@ class QuoteFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } if ($sort_col[0] == 'valid_until') { diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php index 2d39148df617..1e9aef8f0705 100644 --- a/app/Filters/RecurringInvoiceFilters.php +++ b/app/Filters/RecurringInvoiceFilters.php @@ -130,7 +130,7 @@ class RecurringInvoiceFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw("ABS(number) {$dir}"); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/TaskFilters.php b/app/Filters/TaskFilters.php index 09cac473e009..bae9ab882bb0 100644 --- a/app/Filters/TaskFilters.php +++ b/app/Filters/TaskFilters.php @@ -144,7 +144,7 @@ class TaskFilters extends QueryFilters } if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/app/Filters/VendorFilters.php b/app/Filters/VendorFilters.php index ffb428dbf1c3..dd601c090fa0 100644 --- a/app/Filters/VendorFilters.php +++ b/app/Filters/VendorFilters.php @@ -72,7 +72,7 @@ class VendorFilters extends QueryFilters $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc'; if($sort_col[0] == 'number') { - return $this->builder->orderByRaw('ABS(number) ' . $dir); + return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir); } return $this->builder->orderBy($sort_col[0], $dir); diff --git a/database/seeders/CurrenciesSeeder.php b/database/seeders/CurrenciesSeeder.php index 32ebcde53256..1c69e5771e7b 100644 --- a/database/seeders/CurrenciesSeeder.php +++ b/database/seeders/CurrenciesSeeder.php @@ -144,6 +144,8 @@ class CurrenciesSeeder extends Seeder ['id' => 119, 'name' => 'Malagasy ariary', 'code' => 'MGA', 'symbol' => 'Ar', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'], ['id' => 120, 'name' => "Tongan Pa anga", 'code' => 'TOP', 'symbol' => 'T$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'], ['id' => 121, 'name' => "Lao kip", 'code' => 'LAK', 'symbol' => '₭', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'], + ['id' => 122, 'name' => "Bhutan Ngultrum", 'code' => 'BTN', 'symbol' => 'Nu', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'], + ['id' => 123, 'name' => "Mauritanian Ouguiya", 'code' => 'MRU', 'symbol' => 'UM', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'], ]; foreach ($currencies as $currency) {