From faf77d8bd960097710f832411930005bf77d5e8a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 26 Oct 2021 21:47:28 +1100 Subject: [PATCH] Fixes for deleting an unapplied payment --- app/Services/Payment/DeletePayment.php | 13 ++- .../Payments/UnappliedPaymentDeleteTest.php | 101 ++++++++++++++++++ 2 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 tests/Feature/Payments/UnappliedPaymentDeleteTest.php diff --git a/app/Services/Payment/DeletePayment.php b/app/Services/Payment/DeletePayment.php index b486180550ca..9e531e19b371 100644 --- a/app/Services/Payment/DeletePayment.php +++ b/app/Services/Payment/DeletePayment.php @@ -115,15 +115,20 @@ class DeletePayment ->updatePaidToDate($net_deletable * -1) ->save(); - // $paymentable_invoice->client - // ->service() - // ->updatePaidToDate($net_deletable * -1) - // ->save(); + } }); } + else { + $this->payment + ->client + ->service() + ->updatePaidToDate(($this->payment->amount - $this->payment->applied)*-1) + ->save(); + + } return $this; } diff --git a/tests/Feature/Payments/UnappliedPaymentDeleteTest.php b/tests/Feature/Payments/UnappliedPaymentDeleteTest.php new file mode 100644 index 000000000000..91794770cd63 --- /dev/null +++ b/tests/Feature/Payments/UnappliedPaymentDeleteTest.php @@ -0,0 +1,101 @@ +faker = \Faker\Factory::create(); + + $this->makeTestData(); + $this->withoutExceptionHandling(); + + $this->withoutMiddleware( + ThrottleRequests::class + ); + } + + public function testUnappliedPaymentDelete() + { + + + $data = [ + 'amount' => 1000, + 'client_id' => $this->client->hashed_id, + 'invoices' => [ + ], + 'date' => '2020/12/12', + + ]; + + $response = null; + + try { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/payments', $data); + } catch (ValidationException $e) { + $message = json_decode($e->validator->getMessageBag(), 1); + $this->assertNotNull($message); + } + + if ($response){ + $arr = $response->json(); + $response->assertStatus(200); + + $this->assertEquals(0, $this->client->paid_to_date); + + $payment_id = $arr['data']['id']; + + try { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->delete('/api/v1/payments/'. $payment_id); + } catch (ValidationException $e) { + $message = json_decode($e->validator->getMessageBag(), 1); + $this->assertNotNull($message); + } + + $response->assertStatus(200); + + $this->assertEquals(0, $this->client->fresh()->paid_to_date); + + } + + + + } + +} \ No newline at end of file