Browse Source

Add payment list on vendor detail page

Update vendor payment relation to morphMany
pull/18/head
Nafies Luthfi 7 years ago
parent
commit
c863ef14d3
  1. 4
      app/Entities/Partners/Vendor.php
  2. 6
      app/Http/Controllers/Partners/VendorsController.php
  3. 36
      resources/views/vendors/show.blade.php
  4. 7
      tests/Unit/Models/VendorTest.php

4
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');
}
/**

6
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'));

36
resources/views/vendors/show.blade.php

@ -9,6 +9,7 @@
</div>
{{ $vendor->name }} <small>{{ __('vendor.detail') }}</small>
</h1>
<div class="row">
<div class="col-md-5">
<div class="panel panel-default">
@ -23,4 +24,39 @@
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ __('payment.payments') }}</h3></div>
<div class="panel-body">
<table class="table table-condensed">
<thead>
<tr>
<th class="text-center">{{ __('app.table_no') }}</th>
<th class="">{{ __('payment.project') }}</th>
<th class="text-center ">{{ __('app.date') }}</th>
<th class="text-right ">{{ __('payment.amount') }}</th>
<th class="col-md-7">{{ __('payment.description') }}</th>
</tr>
</thead>
<tbody>
@foreach ($vendor->payments as $key => $payment)
<tr>
<td class="text-center">{{ 1 + $key }}</td>
<td>{{ $payment->project->name }}</td>
<td class="text-center">{{ $payment->date }}</td>
<td class="text-right">{{ formatRp($payment->amount) }}</td>
<td>{{ $payment->description }}</td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<th class="text-right" colspan="3">{{ __('app.total') }}</th>
<th class="text-right">{{ formatRp($vendor->payments->sum('amount')) }}</th>
<th>&nbsp;</th>
</tr>
</tfoot>
</table>
</div>
</div>
@endsection

7
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());

Loading…
Cancel
Save