Add amount filters for expense

This commit is contained in:
David Bomba 2024-10-19 09:32:06 +11:00
parent 8764a4e4c0
commit 0745dfaa3d
8 changed files with 124 additions and 6 deletions

View File

@ -177,6 +177,15 @@ class ExpenseFilters extends QueryFilters
return $this->builder->whereIn('category_id', $categories_keys); return $this->builder->whereIn('category_id', $categories_keys);
} }
public function amount(string $amount = ''): Builder
{
if (strlen($amount) == 0) {
return $this->builder;
}
return $this->builder->where('amount', $amount);
}
public function number(string $number = ''): Builder public function number(string $number = ''): Builder
{ {
if (strlen($number) == 0) { if (strlen($number) == 0) {

View File

@ -16,6 +16,7 @@ use App\Models\Document;
use App\Models\Expense; use App\Models\Expense;
use App\Models\ExpenseCategory; use App\Models\ExpenseCategory;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Project;
use App\Models\Vendor; use App\Models\Vendor;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@ -41,6 +42,7 @@ class ExpenseTransformer extends EntityTransformer
'vendor', 'vendor',
'category', 'category',
'invoice', 'invoice',
'project',
]; ];
public function includeDocuments(Expense $expense) public function includeDocuments(Expense $expense)
@ -50,6 +52,17 @@ class ExpenseTransformer extends EntityTransformer
return $this->includeCollection($expense->documents, $transformer, Document::class); return $this->includeCollection($expense->documents, $transformer, Document::class);
} }
public function includeProject(Expense $expense): ?Item
{
$transformer = new ProjectTransformer($this->serializer);
if (!$expense->project) {
return null;
}
return $this->includeItem($expense->project, $transformer, Project::class);
}
public function includeClient(Expense $expense): ?Item public function includeClient(Expense $expense): ?Item
{ {
$transformer = new ClientTransformer($this->serializer); $transformer = new ClientTransformer($this->serializer);

View File

@ -0,0 +1,56 @@
<?php
use App\Models\Currency;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Model::unguard();
$currencies = [
['id' => 124, 'name' => 'Bermudian Dollar', 'code' => 'BMD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 125, 'name' => 'Central African CFA Franc', 'code' => 'XAF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 126, 'name' => 'Congolese Franc', 'code' => 'CDF', 'symbol' => 'Fr', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 127, 'name' => 'Djiboutian Franc', 'code' => 'DJF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 128, 'name' => 'Eritrean Nakfa', 'code' => 'ERN', 'symbol' => 'Nfk', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 129, 'name' => 'Falkland Islands Pound', 'code' => 'FKP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 130, 'name' => 'Guinean Franc', 'code' => 'GNF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => ''],
['id' => 131, 'name' => 'Iraqi Dinar', 'code' => 'IQD', 'symbol' => 'ع.د', 'precision' => '3', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 132, 'name' => 'Lesotho Loti', 'code' => 'LSL', 'symbol' => 'L', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 133, 'name' => 'Mongolian Tugrik', 'code' => 'MNT', 'symbol' => '₮', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 134, 'name' => 'Seychellois Rupee', 'code' => 'SCR', 'symbol' => '₨', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 135, 'name' => 'Solomon Islands Dollar', 'code' => 'SBD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 136, 'name' => 'Somali Shilling', 'code' => 'SOS', 'symbol' => 'Sh', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 137, 'name' => 'South Sudanese Pound', 'code' => 'SSP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 138, 'name' => 'Sudanese Pound', 'code' => 'SDG', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 139, 'name' => 'Tajikistani Somoni', 'code' => 'TJS', 'symbol' => 'ЅM', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 140, 'name' => 'Turkmenistani Manat', 'code' => 'TMT', 'symbol' => 'T', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 141, 'name' => 'Uzbekistani Som', 'code' => 'UZS', 'symbol' => 'so\'m', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
];
foreach ($currencies as $currency) {
$record = Currency::where('code', $currency['code'])->first();
if (!$record) {
Currency::create($currency);
}
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View File

@ -146,6 +146,25 @@ class CurrenciesSeeder extends Seeder
['id' => 121, 'name' => "Lao kip", 'code' => 'LAK', 'symbol' => '₭', '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' => 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' => '.'], ['id' => 123, 'name' => "Mauritanian Ouguiya", 'code' => 'MRU', 'symbol' => 'UM', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 124, 'name' => 'Bermudian Dollar', 'code' => 'BMD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 125, 'name' => 'Central African CFA Franc', 'code' => 'XAF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 126, 'name' => 'Congolese Franc', 'code' => 'CDF', 'symbol' => 'Fr', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 127, 'name' => 'Djiboutian Franc', 'code' => 'DJF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 128, 'name' => 'Eritrean Nakfa', 'code' => 'ERN', 'symbol' => 'Nfk', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 129, 'name' => 'Falkland Islands Pound', 'code' => 'FKP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 130, 'name' => 'Guinean Franc', 'code' => 'GNF', 'symbol' => 'Fr', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => ''],
['id' => 131, 'name' => 'Iraqi Dinar', 'code' => 'IQD', 'symbol' => 'ع.د', 'precision' => '3', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 132, 'name' => 'Lesotho Loti', 'code' => 'LSL', 'symbol' => 'L', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 133, 'name' => 'Mongolian Tugrik', 'code' => 'MNT', 'symbol' => '₮', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 134, 'name' => 'Seychellois Rupee', 'code' => 'SCR', 'symbol' => '₨', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 135, 'name' => 'Solomon Islands Dollar', 'code' => 'SBD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 136, 'name' => 'Somali Shilling', 'code' => 'SOS', 'symbol' => 'Sh', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 137, 'name' => 'South Sudanese Pound', 'code' => 'SSP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 138, 'name' => 'Sudanese Pound', 'code' => 'SDG', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 139, 'name' => 'Tajikistani Somoni', 'code' => 'TJS', 'symbol' => 'ЅM', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 140, 'name' => 'Turkmenistani Manat', 'code' => 'TMT', 'symbol' => 'T', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 141, 'name' => 'Uzbekistani Som', 'code' => 'UZS', 'symbol' => 'so\'m', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
]; ];
foreach ($currencies as $currency) { foreach ($currencies as $currency) {

View File

@ -5364,7 +5364,25 @@ $lang = array(
'merged_vendors' => 'Successfully merged vendors', 'merged_vendors' => 'Successfully merged vendors',
'hidden_taxes_warning' => 'Somes taxes are hidden due to current tax settings. :link', 'hidden_taxes_warning' => 'Somes taxes are hidden due to current tax settings. :link',
'tax3' => 'Third Tax', 'tax3' => 'Third Tax',
'negative_payment_warning' => 'Are you sure you want to create a negative payment? This cannot be used as a credit or payment.' 'negative_payment_warning' => 'Are you sure you want to create a negative payment? This cannot be used as a credit or payment.',
'currency_Bermudian_Dollar' => 'Bermudian Dollar',
'currency_Central_African_CFA_Franc' => 'Central African CFA Franc',
'currency_Congolese_Franc' => 'Congolese Franc',
'currency_Djiboutian_Franc' => 'Djiboutian Franc',
'currency_Eritrean_Nakfa' => 'Eritrean Nakfa',
'currency_Falkland_Islands_Pound' => 'Falklan IslandsPound',
'currency_Guinean_Franc' => 'Guinean Franc',
'currency_Iraqi_Dinar' => 'Iraqi Dinar',
'currency_Lesotho_Loti' => 'Lesotho Loti',
'currency_Mongolian_Tugrik' => 'Mongolian Tugrik',
'currency_Seychellois_Rupee' => 'Seychellois Rupee',
'currency_Solomon_Islands_Dollar' => 'Solomon Islands Dollar',
'currency_Somali_Shilling' => 'Somali Shilling',
'currency_South_Sudanese_Pound' => 'South Sudanese Pound',
'currency_Sudanese_Pound' => 'Sudanese Pound',
'currency_Tajikistani_Somoni' => 'Tajikistani Somoni',
'currency_Turkmenistani_Manat' => 'Turkmenistani Manat',
'currency_Uzbekistani_Som' => 'Uzbekistani Som',
); );
return $lang; return $lang;

View File

@ -5357,7 +5357,8 @@ Développe automatiquement la section des notes dans le tableau de produits pour
'updated_records' => 'Enregistrements mis à jour', 'updated_records' => 'Enregistrements mis à jour',
'vat_not_registered' => 'Vendeur non enregistré aux taxes', 'vat_not_registered' => 'Vendeur non enregistré aux taxes',
'small_company_info' => 'Aucune déclaration de taxe de vente conformément à l\'article 19 UStG', 'small_company_info' => 'Aucune déclaration de taxe de vente conformément à l\'article 19 UStG',
'log_duration_words' => 'Durée du journal en mots' 'log_duration_words' => 'Durée du journal de temps exprimée en mots',
'log_duration' => 'Durée du journal de temps'
); );
return $lang; return $lang;

View File

@ -5357,9 +5357,10 @@ E-mail: :email<b><br><b>',
'quick_actions' => 'Snelle acties', 'quick_actions' => 'Snelle acties',
'end_all_sessions_help' => 'Logt alle gebruikers uit en vereist dat alle actieve gebruikers opnieuw inloggen.', 'end_all_sessions_help' => 'Logt alle gebruikers uit en vereist dat alle actieve gebruikers opnieuw inloggen.',
'updated_records' => 'Items bijgewerkt', 'updated_records' => 'Items bijgewerkt',
'vat_not_registered' => 'Seller not VAT registered', 'vat_not_registered' => 'Verkoper is niet btw-plichtig',
'small_company_info' => 'No disclosure of sales tax in accordance with § 19 UStG', 'small_company_info' => 'Geen openbaarmaking van omzetbelasting in overeenstemming met § 19 UStG',
'log_duration_words' => 'Log duration in words' 'log_duration_words' => 'Maximale lengte logboek in woorden',
'log_duration' => 'Maximale lengte logboek'
); );
return $lang; return $lang;

View File

@ -5359,7 +5359,8 @@ $lang = array(
'updated_records' => 'Hồ sơ đã cập nhật', 'updated_records' => 'Hồ sơ đã cập nhật',
'vat_not_registered' => 'Người bán không đăng ký VAT', 'vat_not_registered' => 'Người bán không đăng ký VAT',
'small_company_info' => 'Không tiết lộ thuế bán hàng theo § 19 UStG', 'small_company_info' => 'Không tiết lộ thuế bán hàng theo § 19 UStG',
'log_duration_words' => 'Thời lượng ghi nhật ký bằng từ' 'log_duration_words' => 'Thời gian ghi nhật ký bằng từ',
'log_duration' => 'Thời gian ghi nhật ký'
); );
return $lang; return $lang;