diff --git a/app/Entities/Partners/Vendor.php b/app/Entities/Partners/Vendor.php
index e82cd19..b0ad461 100644
--- a/app/Entities/Partners/Vendor.php
+++ b/app/Entities/Partners/Vendor.php
@@ -6,10 +6,30 @@ use Illuminate\Database\Eloquent\Model;
class Vendor extends Model
{
+ /**
+ * The attributes that are mass assignable.
+ *
+ * @var array
+ */
protected $fillable = ['name', 'notes', 'website', 'is_active'];
+ /**
+ * Vendor has many payments relation.
+ *
+ * @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');
+ }
+
+ /**
+ * Get status attribute.
+ *
+ * @return string
+ */
+ public function getStatusAttribute()
+ {
+ return $this->is_active == 1 ? __('app.active') : __('app.in_active');
}
}
diff --git a/app/Http/Controllers/Partners/VendorsController.php b/app/Http/Controllers/Partners/VendorsController.php
index 265ae00..c295066 100644
--- a/app/Http/Controllers/Partners/VendorsController.php
+++ b/app/Http/Controllers/Partners/VendorsController.php
@@ -76,6 +76,17 @@ class VendorsController extends Controller
}
/**
+ * 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'));
+ }
+
+ /**
* Remove the specified vendor from storage.
*
* @param \App\Entities\Partners\Vendor $vendor
diff --git a/resources/lang/de/vendor.php b/resources/lang/de/vendor.php
index 35bc828..9ad37ee 100644
--- a/resources/lang/de/vendor.php
+++ b/resources/lang/de/vendor.php
@@ -4,6 +4,7 @@ return [
// Labels
'vendor' => 'Hersteller',
'list' => 'Hersteller Liste',
+ 'detail' => 'Vendor Detail',
'search' => 'Hersteller suchen',
'not_found' => 'Hersteller nicht gefunden.',
'empty' => 'Hersteller Liste ist leer.',
@@ -25,5 +26,6 @@ return [
// Attributes
'name' => 'Hersteller Name',
+ 'website' => 'Vendor Website',
'description' => 'Hersteller Beschreibung',
];
diff --git a/resources/lang/en/vendor.php b/resources/lang/en/vendor.php
index 4126647..1fe3766 100644
--- a/resources/lang/en/vendor.php
+++ b/resources/lang/en/vendor.php
@@ -4,6 +4,7 @@ return [
// Labels
'vendor' => 'Vendor',
'list' => 'Vendor List',
+ 'detail' => 'Vendor Detail',
'search' => 'Search Vendor',
'not_found' => 'Vendor not found.',
'empty' => 'Vendor list is empty.',
@@ -25,5 +26,6 @@ return [
// Attributes
'name' => 'Vendor Name',
+ 'website' => 'Vendor Website',
'description' => 'Vendor Description',
];
diff --git a/resources/lang/id/vendor.php b/resources/lang/id/vendor.php
index 5a04da7..e283275 100644
--- a/resources/lang/id/vendor.php
+++ b/resources/lang/id/vendor.php
@@ -2,13 +2,14 @@
return [
// Labels
- 'vendor' => 'Vendor',
- 'list' => 'Daftar Vendor',
- 'search' => 'Cari Vendor',
- 'not_found' => 'Vendor tidak ditemukan',
- 'empty' => 'Belum ada Vendor',
- 'back_to_show' => 'Kembali ke detail Vendor',
- 'back_to_index' => 'Kembali ke daftar Vendor',
+ 'vendor' => 'Vendor',
+ 'list' => 'Daftar Vendor',
+ 'detail' => 'Detail Vendor',
+ 'search' => 'Cari Vendor',
+ 'not_found' => 'Vendor tidak ditemukan',
+ 'empty' => 'Belum ada Vendor',
+ 'back_to_show' => 'Kembali ke detail Vendor',
+ 'back_to_index' => 'Kembali ke daftar Vendor',
// Actions
'create' => 'Input Vendor Baru',
@@ -24,6 +25,7 @@ return [
'undeleteable' => 'Data Vendor tidak dapat dihapus.',
// Attributes
- 'name' => 'Nama Vendor',
- 'description' => 'Deskripsi Vendor',
+ 'name' => 'Nama Vendor',
+ 'website' => 'Website Vendor',
+ 'description' => 'Deskripsi Vendor',
];
diff --git a/resources/views/vendors/index.blade.php b/resources/views/vendors/index.blade.php
index c0df43f..1810ace 100644
--- a/resources/views/vendors/index.blade.php
+++ b/resources/views/vendors/index.blade.php
@@ -1,32 +1,32 @@
@extends('layouts.app')
-@section('title', trans('vendor.list'))
+@section('title', __('vendor.list'))
@section('content')
{{ Form::open(['method' => 'get','class' => 'form-inline']) }}
- {!! FormField::text('q', ['value' => request('q'), 'label' => trans('vendor.search'), 'class' => 'input-sm']) !!}
- {{ Form::submit(trans('vendor.search'), ['class' => 'btn btn-sm']) }}
- {{ link_to_route('vendors.index', trans('app.reset')) }}
+ {!! FormField::text('q', ['value' => request('q'), 'label' => __('vendor.search'), 'class' => 'input-sm']) !!}
+ {{ Form::submit(__('vendor.search'), ['class' => 'btn btn-sm']) }}
+ {{ link_to_route('vendors.index', __('app.reset')) }}
{{ Form::close() }}
- | {{ trans('app.table_no') }} |
- {{ trans('vendor.name') }} |
- {{ trans('app.notes') }} |
- {{ trans('app.action') }} |
+ {{ __('app.table_no') }} |
+ {{ __('vendor.name') }} |
+ {{ __('app.notes') }} |
+ {{ __('app.action') }} |
@@ -36,12 +36,13 @@
{{ $vendor->name }} |
{{ $vendor->notes }} |
- {!! link_to_route(
+ {{ link_to_route('vendors.show', __('app.show'), $vendor) }} |
+ {{ link_to_route(
'vendors.index',
- trans('app.edit'),
+ __('app.edit'),
['action' => 'edit', 'id' => $vendor->id] + Request::only('page', 'q'),
['id' => 'edit-vendor-' . $vendor->id]
- ) !!}
+ ) }}
|
@endforeach
diff --git a/resources/views/vendors/show.blade.php b/resources/views/vendors/show.blade.php
new file mode 100755
index 0000000..953dc32
--- /dev/null
+++ b/resources/views/vendors/show.blade.php
@@ -0,0 +1,62 @@
+@extends('layouts.app')
+
+@section('title', $vendor->name.' - '.__('vendor.detail'))
+
+@section('content')
+
+
+
+
+
+
+
+ | {{ __('vendor.name') }} | {{ $vendor->name }} |
+ | {{ __('vendor.website') }} | {{ $vendor->website }} |
+ | {{ __('app.status') }} | {{ $vendor->status }} |
+ | {{ __('app.notes') }} | {!! nl2br($vendor->notes) !!} |
+
+
+
+
+
+
+
+
{{ __('payment.payments') }}
+
+
+
+
+ | {{ __('app.table_no') }} |
+ {{ __('payment.project') }} |
+ {{ __('app.date') }} |
+ {{ __('payment.amount') }} |
+ {{ __('payment.description') }} |
+
+
+
+ @foreach ($vendor->payments as $key => $payment)
+
+ | {{ 1 + $key }} |
+ {{ $payment->project->name }} |
+ {{ $payment->date }} |
+ {{ formatRp($payment->amount) }} |
+ {{ $payment->description }} |
+
+ @endforeach
+
+
+
+ | {{ __('app.total') }} |
+ {{ formatRp($vendor->payments->sum('amount')) }} |
+ |
+
+
+
+
+
+@endsection
diff --git a/tests/Unit/Models/VendorTest.php b/tests/Unit/Models/VendorTest.php
index 19c32bb..9e9437d 100644
--- a/tests/Unit/Models/VendorTest.php
+++ b/tests/Unit/Models/VendorTest.php
@@ -20,12 +20,25 @@ 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());
}
+
+ /** @test */
+ public function a_vendor_has_status_attribute()
+ {
+ $vendor = factory(Vendor::class)->make(['is_active' => 1]);
+ $this->assertEquals(__('app.active'), $vendor->status);
+
+ $vendor->is_active = 0;
+ $this->assertEquals(__('app.in_active'), $vendor->status);
+ }
}