From c863ef14d330813e5cf78c249d59d770fd7343c5 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Mon, 3 Sep 2018 23:15:56 +0800 Subject: [PATCH] Add payment list on vendor detail page Update vendor payment relation to morphMany --- app/Entities/Partners/Vendor.php | 4 +-- .../Controllers/Partners/VendorsController.php | 6 ++++ resources/views/vendors/show.blade.php | 36 ++++++++++++++++++++++ tests/Unit/Models/VendorTest.php | 7 +++-- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/app/Entities/Partners/Vendor.php b/app/Entities/Partners/Vendor.php index cf3838e..b0ad461 100644 --- a/app/Entities/Partners/Vendor.php +++ b/app/Entities/Partners/Vendor.php @@ -16,11 +16,11 @@ class Vendor extends Model /** * Vendor has many payments relation. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany + * @return \Illuminate\Database\Eloquent\Relations\MorphMany */ public function payments() { - return $this->hasMany('App\Entities\Payments\Payment', 'partner_id'); + return $this->morphMany('App\Entities\Payments\Payment', 'partner'); } /** diff --git a/app/Http/Controllers/Partners/VendorsController.php b/app/Http/Controllers/Partners/VendorsController.php index f31ae87..c295066 100644 --- a/app/Http/Controllers/Partners/VendorsController.php +++ b/app/Http/Controllers/Partners/VendorsController.php @@ -75,6 +75,12 @@ class VendorsController extends Controller return redirect()->route('vendors.index', $routeParam); } + /** + * Show vendor detail page. + * + * @param \App\Entities\Partners\Vendor $vendor + * @return \Illuminate\View\View + */ public function show(Vendor $vendor) { return view('vendors.show', compact('vendor')); diff --git a/resources/views/vendors/show.blade.php b/resources/views/vendors/show.blade.php index 17e2051..953dc32 100755 --- a/resources/views/vendors/show.blade.php +++ b/resources/views/vendors/show.blade.php @@ -9,6 +9,7 @@ {{ $vendor->name }} {{ __('vendor.detail') }} +
@@ -23,4 +24,39 @@
+ +
+

{{ __('payment.payments') }}

+
+ + + + + + + + + + + + @foreach ($vendor->payments as $key => $payment) + + + + + + + + @endforeach + + + + + + + + +
{{ __('app.table_no') }}{{ __('payment.project') }}{{ __('app.date') }}{{ __('payment.amount') }}{{ __('payment.description') }}
{{ 1 + $key }}{{ $payment->project->name }}{{ $payment->date }}{{ formatRp($payment->amount) }}{{ $payment->description }}
{{ __('app.total') }}{{ formatRp($vendor->payments->sum('amount')) }} 
+
+
@endsection diff --git a/tests/Unit/Models/VendorTest.php b/tests/Unit/Models/VendorTest.php index 210ad29..9e9437d 100644 --- a/tests/Unit/Models/VendorTest.php +++ b/tests/Unit/Models/VendorTest.php @@ -20,10 +20,13 @@ class VendorTest extends TestCase } /** @test */ - public function a_vendor_has_many_payments_relation() + public function a_vendor_has_morph_many_payments_relation() { $vendor = factory(Vendor::class)->create(); - $payment = factory(Payment::class)->create(['partner_id' => $vendor->id]); + $payment = factory(Payment::class)->create([ + 'partner_id' => $vendor->id, + 'partner_type' => 'App\Entities\Partners\Vendor', + ]); $this->assertInstanceOf(Collection::class, $vendor->payments); $this->assertInstanceOf(Payment::class, $vendor->payments->first());