From 398e72a96841cf8c795ee2e5103ef6fa6f3c351f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 9 Jul 2024 12:27:32 +1000 Subject: [PATCH 1/5] Updates for e_invoice --- app/Transformers/CompanyTransformer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Transformers/CompanyTransformer.php b/app/Transformers/CompanyTransformer.php index 97710a2b92a5..f13090bb63de 100644 --- a/app/Transformers/CompanyTransformer.php +++ b/app/Transformers/CompanyTransformer.php @@ -211,7 +211,7 @@ class CompanyTransformer extends EntityTransformer 'smtp_password' => $company->smtp_password ? '********' : '', 'smtp_local_domain' => (string)$company->smtp_local_domain ?? '', 'smtp_verify_peer' => (bool)$company->smtp_verify_peer, - // 'e_invoice' => $company->e_invoice ?: new \stdClass(), + 'e_invoice' => $company->e_invoice ?: new \stdClass(), ]; } From 116d0f4b1552303d811df870fd9d21b392213cf8 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 10 Jul 2024 13:58:27 +1000 Subject: [PATCH 2/5] Fixes for expense repository --- .../Requests/Expense/UpdateExpenseRequest.php | 2 +- app/Repositories/ExpenseRepository.php | 2 +- tests/Feature/ExpenseApiTest.php | 40 +++++++++++++++++++ tests/Feature/VendorApiTest.php | 1 - 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/Http/Requests/Expense/UpdateExpenseRequest.php b/app/Http/Requests/Expense/UpdateExpenseRequest.php index 812449e30b38..50c496cf3301 100644 --- a/app/Http/Requests/Expense/UpdateExpenseRequest.php +++ b/app/Http/Requests/Expense/UpdateExpenseRequest.php @@ -56,7 +56,7 @@ class UpdateExpenseRequest extends Request $rules['invoice_id'] = 'bail|sometimes|nullable|exists:invoices,id,company_id,'.$user->company()->id; $rules['documents'] = 'bail|sometimes|array'; $rules['amount'] = ['sometimes', 'bail', 'nullable', 'numeric', 'max:99999999999999']; - + return $this->globalRules($rules); } diff --git a/app/Repositories/ExpenseRepository.php b/app/Repositories/ExpenseRepository.php index ab83f2f80fb1..54feb009584b 100644 --- a/app/Repositories/ExpenseRepository.php +++ b/app/Repositories/ExpenseRepository.php @@ -46,7 +46,7 @@ class ExpenseRepository extends BaseRepository /** @var \App\Models\User $user */ $user = auth()->user(); - $payment_date = &$data['payment_date']; + $payment_date = isset($data['payment_date']) ? $data['payment_date'] : false; if($payment_date && $payment_date == $expense->payment_date) { //do nothing diff --git a/tests/Feature/ExpenseApiTest.php b/tests/Feature/ExpenseApiTest.php index 5cf695cb90d1..81d7dafbf2ab 100644 --- a/tests/Feature/ExpenseApiTest.php +++ b/tests/Feature/ExpenseApiTest.php @@ -47,6 +47,46 @@ class ExpenseApiTest extends TestCase Model::reguard(); } + + + public function testVendorPayment() + { + $data = [ + 'amount' => 100, + 'payment_date' => now()->format('Y-m-d'), + 'vendor_id' => $this->vendor->hashed_id, + 'date' => '2021-10-01', + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson('/api/v1/expenses', $data); + + + $arr = $response->json(); + $response->assertStatus(200); + + $this->assertEquals($this->vendor->hashed_id, $arr['data']['vendor_id']); + $this->assertEquals(now()->format('Y-m-d'), $arr['data']['payment_date']); + + $data = [ + 'amount' => 100, + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->putJson('/api/v1/expenses/'.$arr['data']['id'], $data); + + $arr = $response->json(); + $response->assertStatus(200); + + $this->assertEquals(now()->format('Y-m-d'), $arr['data']['payment_date']); + + } + + public function testExpensePutWithVendorStatus() { diff --git a/tests/Feature/VendorApiTest.php b/tests/Feature/VendorApiTest.php index 386a691e9b5f..f47359235a4b 100644 --- a/tests/Feature/VendorApiTest.php +++ b/tests/Feature/VendorApiTest.php @@ -47,7 +47,6 @@ class VendorApiTest extends TestCase Model::reguard(); } - public function testVendorContactCreation() { $data = [ From 3da6888ce92e833a911223e33e1aba552abb1477 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 10 Jul 2024 14:32:11 +1000 Subject: [PATCH 3/5] Fixes for template validation --- app/Http/Requests/Email/SendEmailRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/Email/SendEmailRequest.php b/app/Http/Requests/Email/SendEmailRequest.php index a08ea4ba112f..c9ab8aff95f5 100644 --- a/app/Http/Requests/Email/SendEmailRequest.php +++ b/app/Http/Requests/Email/SendEmailRequest.php @@ -63,7 +63,7 @@ class SendEmailRequest extends Request $user = auth()->user(); return [ - 'template' => 'bail|required|in:'.implode(',', $this->templates), + 'template' => 'bail|required|string|in:'.implode(',', $this->templates), 'entity' => 'bail|required|in:App\Models\Invoice,App\Models\Quote,App\Models\Credit,App\Models\RecurringInvoice,App\Models\PurchaseOrder,App\Models\Payment', 'entity_id' => ['bail', 'required', Rule::exists($this->entity_plural, 'id')->where('company_id', $user->company()->id)], 'cc_email.*' => 'bail|sometimes|email', From 4b0908373c451e9adff70da87436b1e40c89cf2b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 10 Jul 2024 14:37:17 +1000 Subject: [PATCH 4/5] Add index for project_id --- ..._10_invoice_id_index_on_projects_table.php | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php diff --git a/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php b/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php new file mode 100644 index 000000000000..30748a5b3cdc --- /dev/null +++ b/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php @@ -0,0 +1,26 @@ +index(['project_id','deleted_at']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; From 9ff31e8c4819aa11e326ddf26d4514c8ec17920f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 10 Jul 2024 14:37:39 +1000 Subject: [PATCH 5/5] Index for project_id --- ..._043241_2024_07_10_invoice_id_index_on_projects_table.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php b/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php index 30748a5b3cdc..a2d5eeeaf535 100644 --- a/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php +++ b/database/migrations/2024_07_10_043241_2024_07_10_invoice_id_index_on_projects_table.php @@ -14,6 +14,11 @@ return new class extends Migration Schema::table('invoices', function (Blueprint $table){ $table->index(['project_id','deleted_at']); }); + + Schema::table('quotes', function (Blueprint $table) { + $table->index(['project_id','deleted_at']); + }); + } /**