diff --git a/app/Http/Controllers/Invoices/DraftsController.php b/app/Http/Controllers/Invoices/DraftsController.php index bcc756b..7d54393 100644 --- a/app/Http/Controllers/Invoices/DraftsController.php +++ b/app/Http/Controllers/Invoices/DraftsController.php @@ -46,7 +46,13 @@ class DraftsController extends Controller public function create(Request $request) { - $this->draftCollection->add(new InvoiceDraft()); + $draft = new InvoiceDraft(); + + if ($request->has('project_id')) { + $draft->projectId = $request->get('project_id'); + } + + $this->draftCollection->add($draft); return redirect()->route('invoice-drafts.show', $this->draftCollection->content()->last()->draftKey); } @@ -137,8 +143,6 @@ class DraftsController extends Controller return redirect()->route('invoice-drafts.show', [$draftKey]); } - flash(trans('invoice.confirm_instruction'), 'warning')->important(); - return redirect()->route('invoice-drafts.show', [$draftKey, 'action' => 'confirm']); } diff --git a/resources/lang/id/invoice.php b/resources/lang/id/invoice.php index eaa204c..537bfba 100644 --- a/resources/lang/id/invoice.php +++ b/resources/lang/id/invoice.php @@ -10,6 +10,7 @@ return [ 'empty' => 'Belum ada Invoice', 'back_to_show' => 'Kembali ke Detail Invoice', 'back_to_index' => 'Kembali ke daftar Invoice', + 'back_to_project' => 'Kembali ke Invoice Project', 'draft_list' => 'List Draft Invoice', 'draft_list_empty' => 'Draft Invoice kosong.', 'draft_not_found' => 'Draft Invoice tidak ditemukan.', @@ -34,7 +35,7 @@ return [ 'item_added' => 'Item berhasil ditambahkan.', 'item_updated' => 'Item berhasil diupdate.', 'item_removed' => 'Item berhasil dihapus.', - 'confirm_instruction' => 'Silakan periksa rincian di bawah ini, jika belum sesuai, silakan klik kembali.', + 'confirm_instruction' => 'Silakan periksa rincian di bawah ini, jika belum sesuai, silakan klik :back_link.', // Attributes 'number' => 'No. Invoice', diff --git a/resources/lang/id/project.php b/resources/lang/id/project.php index a5f02ce..7734c0b 100644 --- a/resources/lang/id/project.php +++ b/resources/lang/id/project.php @@ -10,6 +10,7 @@ return [ 'search' => 'Cari Project', 'found' => 'Project ditemukan', 'not_found' => 'Project tidak ditemukan', + 'select' => 'Pilih Project', 'empty' => 'Belum ada Project', 'back_to_index' => 'Kembali ke daftar Project', diff --git a/resources/views/invoice-drafts/index.blade.php b/resources/views/invoice-drafts/index.blade.php index d21b897..cebd454 100644 --- a/resources/views/invoice-drafts/index.blade.php +++ b/resources/views/invoice-drafts/index.blade.php @@ -34,4 +34,35 @@ 'style' => 'padding:0px', ]) !!} @endif -@endsection \ No newline at end of file +@endsection + +@section('ext_css') + {!! Html::style(url('assets/css/plugins/jquery.datetimepicker.css')) !!} + {!! Html::style(url('assets/css/plugins/select2.min.css')) !!} + +@endsection + +@section('ext_js') + {!! Html::script(url('assets/js/plugins/jquery.datetimepicker.js')) !!} + {!! Html::script(url('assets/js/plugins/select2.min.js')) !!} +@endsection + +@section('script') + +@endsection diff --git a/resources/views/invoice-drafts/partials/draft-confirm.blade.php b/resources/views/invoice-drafts/partials/draft-confirm.blade.php index c0e2c11..0c5f41e 100644 --- a/resources/views/invoice-drafts/partials/draft-confirm.blade.php +++ b/resources/views/invoice-drafts/partials/draft-confirm.blade.php @@ -1,16 +1,25 @@ -
+
+ {!! trans('invoice.confirm_instruction', [ + 'back_link' => link_to_route('invoice-drafts.show', trans('app.back'), $draft->draftKey) + ]) !!} +
+

{{ trans('invoice.detail') }}

+ @php + $project = App\Entities\Projects\Project::findOrFail($draft->projectId); + @endphp + + + + - - + + -
{{ trans('invoice.project') }}{{ $project->name }}
{{ trans('customer.customer') }}{{ $project->customer->name }}
{{ trans('invoice.date') }}{{ $draft->date }}
{{ trans('invoice.due_date') }}{{ $draft->dueDate }}
{{ trans('invoice.project') }} - {{ App\Entities\Projects\Project::findOrFail($draft->projectId)->name }} - {{ trans('invoice.total') }}{{ formatRp($draft->getTotal()) }}
{{ trans('invoice.total') }}{{ formatRp($draft->getTotal()) }}
{{ trans('invoice.notes') }}{{ $draft->notes }}
diff --git a/resources/views/invoice-drafts/partials/form-draft-detail.blade.php b/resources/views/invoice-drafts/partials/form-draft-detail.blade.php index 17aa9b9..ea521b2 100644 --- a/resources/views/invoice-drafts/partials/form-draft-detail.blade.php +++ b/resources/views/invoice-drafts/partials/form-draft-detail.blade.php @@ -2,14 +2,35 @@

{{ trans('invoice.detail') }}

{{ Form::open(['route' => ['invoice-drafts.draft-proccess', $draft->draftKey], 'method' => 'patch']) }}
+ @php + $project = App\Entities\Projects\Project::find($draft->projectId); + @endphp + @if (!is_null($project)) + {!! FormField::textDisplay(trans('project.project'), $project->name) !!} + {!! FormField::textDisplay(trans('project.customer'), $project->customer->name) !!} + {{ Form::hidden('project_id', $project->id) }} + @else {!! FormField::select('project_id', $projects, [ 'label' => trans('invoice.project'), 'value' => $draft->projectId, 'required' => true, ]) !!} + @endif
-
{!! FormField::text('date', ['label' => trans('invoice.date')]) !!}
-
{!! FormField::text('due_date', ['label' => trans('invoice.due_date')]) !!}
+
+ {!! FormField::text('date', [ + 'placeholder' => 'yyyy-mm-dd', + 'label' => trans('invoice.date'), + 'value' => $draft->date, + ]) !!} +
+
+ {!! FormField::text('due_date', [ + 'placeholder' => 'yyyy-mm-dd', + 'label' => trans('invoice.due_date'), + 'value' => $draft->dueDate, + ]) !!} +
{!! FormField::textarea('notes', ['label' => trans('invoice.notes'), 'value' => $draft->notes]) !!}
diff --git a/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php b/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php index 6ad0291..0845abc 100644 --- a/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php +++ b/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php @@ -1,5 +1,5 @@ -
{{ $project->name }} {{ trans('project.invoices') }} @@ -34,7 +36,7 @@ @forelse($project->invoices as $key => $invoice) {{ 1 + $key }} - {{ $invoice->number }} + {{ $invoice->numberLink() }} {{ $invoice->date }} {{ $invoice->due_date }} {{ $project->customer->nameLink() }} diff --git a/tests/Feature/Invoices/InvoiceEntryTest.php b/tests/Feature/Invoices/InvoiceEntryTest.php index 99a27b8..e6d78a7 100644 --- a/tests/Feature/Invoices/InvoiceEntryTest.php +++ b/tests/Feature/Invoices/InvoiceEntryTest.php @@ -43,6 +43,25 @@ class InvoiceEntryTest extends TestCase } /** @test */ + public function user_can_create_invoice_draft_from_project_invoices_page() + { + $this->adminUserSigningIn(); + $project = factory(Project::class)->create(); + + $this->visit(route('projects.invoices', $project)); + + $this->press(trans('invoice.create')); + + $cart = new InvoiceDraftCollection(); + $draft = $cart->content()->last(); + + $this->assertEquals($draft->projectId, $project->id); + $this->seePageIs(route('invoice-drafts.show', $draft->draftKey)); + $this->see($project->name); + $this->see($project->customer->name); + } + + /** @test */ public function user_can_add_item_to_invoice_draft() { $this->adminUserSigningIn(); @@ -145,8 +164,12 @@ class InvoiceEntryTest extends TestCase $this->seePageIs(route('invoice-drafts.show', [$draft->draftKey, 'action' => 'confirm'])); - $this->see(trans('invoice.confirm_instruction')); + $this->see(trans('invoice.confirm_instruction', [ + 'back_link' => link_to_route('invoice-drafts.show', trans('app.back'), $draft->draftKey), + ])); + $this->see($project->name); + $this->see($project->customer->name); $this->see($draft->notes); $this->see(formatRp(3000)); $this->seeElement('input', ['id' => 'save-invoice-draft']);