From ce90285a3900084b1fd1a52f46ee26aa64506de5 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 16 Mar 2018 16:16:14 +0300 Subject: [PATCH 01/94] fixed #268 #269 --- app/Models/Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Model.php b/app/Models/Model.php index 47efe52c5..0ffda8779 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -91,7 +91,7 @@ class Model extends Eloquent $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } /** From 16ddfaa35d2d5cd01e206ca8a26aeea9e591ac85 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 16 Mar 2018 16:24:42 +0300 Subject: [PATCH 02/94] fixed collect scope --- app/Models/Auth/Permission.php | 2 +- app/Models/Auth/Role.php | 2 +- app/Models/Auth/User.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Models/Auth/Permission.php b/app/Models/Auth/Permission.php index 5303bf74b..4350d5911 100644 --- a/app/Models/Auth/Permission.php +++ b/app/Models/Auth/Permission.php @@ -65,6 +65,6 @@ class Permission extends LaratrustPermission $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } } diff --git a/app/Models/Auth/Role.php b/app/Models/Auth/Role.php index f45c9de01..ebb4a1297 100644 --- a/app/Models/Auth/Role.php +++ b/app/Models/Auth/Role.php @@ -64,6 +64,6 @@ class Role extends LaratrustRole $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } } diff --git a/app/Models/Auth/User.php b/app/Models/Auth/User.php index d9ddabf01..0a985bbc5 100644 --- a/app/Models/Auth/User.php +++ b/app/Models/Auth/User.php @@ -177,7 +177,7 @@ class User extends Authenticatable $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } /** From 94351e2663db1a80acb7c642deeef8169a0d8c13 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 16 Mar 2018 16:25:35 +0300 Subject: [PATCH 03/94] fixed #270 --- resources/views/expenses/payments/create.blade.php | 4 ++-- resources/views/incomes/revenues/create.blade.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/expenses/payments/create.blade.php b/resources/views/expenses/payments/create.blade.php index 6b78af2ea..823e3e440 100644 --- a/resources/views/expenses/payments/create.blade.php +++ b/resources/views/expenses/payments/create.blade.php @@ -130,11 +130,11 @@ modal += ' '; modal += ' '; modal += ' '; - modal += '
'; + modal += '
'; modal += ' '; modal += '
'; modal += '
'; - modal += ' '; + modal += ' '; modal += '
'; modal += '
'; modal += '
'; diff --git a/resources/views/incomes/revenues/create.blade.php b/resources/views/incomes/revenues/create.blade.php index 16b697287..e3cc4b0ec 100644 --- a/resources/views/incomes/revenues/create.blade.php +++ b/resources/views/incomes/revenues/create.blade.php @@ -130,11 +130,11 @@ modal += ' '; modal += '
'; modal += '
'; - modal += '
'; + modal += '
'; modal += ' '; modal += '
'; modal += '
'; - modal += ' '; + modal += ' '; modal += '
'; modal += '
'; modal += '
'; From 76ed900bc9eefcf4d84283a875807655ff201107 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Mon, 19 Mar 2018 15:07:43 +0300 Subject: [PATCH 04/94] fixed #275 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index aef46974e..3aaab5d36 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "fideloper/proxy": "3.3.*", "guzzlehttp/guzzle": "6.3.*", "intervention/image": "2.3.*", - "jenssegers/date": "3.2.*", + "jenssegers/date": "3.3.*", "kyslik/column-sortable": "5.4.*", "laracasts/flash": "3.0.*", "laravel/framework": "5.4.*", From f3587963884089474959d587d9d9c7fd589d2c4c Mon Sep 17 00:00:00 2001 From: denisdulici Date: Wed, 21 Mar 2018 16:21:51 +0300 Subject: [PATCH 05/94] language fix --- app/Http/Controllers/Expenses/Bills.php | 2 +- app/Http/Controllers/Incomes/Invoices.php | 2 +- resources/lang/en-GB/messages.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Expenses/Bills.php b/app/Http/Controllers/Expenses/Bills.php index 6aff04f61..7cbf5f471 100644 --- a/app/Http/Controllers/Expenses/Bills.php +++ b/app/Http/Controllers/Expenses/Bills.php @@ -536,7 +536,7 @@ class Bills extends Controller } if ($amount > $total_amount) { - $message = trans('messages.error.payment_add'); + $message = trans('messages.error.over_payment'); return response()->json([ 'success' => false, diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index 35974fcc8..0a925974b 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -669,7 +669,7 @@ class Invoices extends Controller } if ($amount > $total_amount) { - $message = trans('messages.error.payment_add'); + $message = trans('messages.error.over_payment'); return response()->json([ 'success' => false, diff --git a/resources/lang/en-GB/messages.php b/resources/lang/en-GB/messages.php index cc59366e2..491beb1c2 100644 --- a/resources/lang/en-GB/messages.php +++ b/resources/lang/en-GB/messages.php @@ -10,9 +10,9 @@ return [ 'imported' => ':type imported!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Error: You are not allowed to manage this company!', - 'customer' => 'Error: You can not created user! :name use this email address.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: No file selected!', ], 'warning' => [ From 4d05971b50cebaf0622df5cbe359260d4eea3961 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 23 Mar 2018 18:02:37 +0300 Subject: [PATCH 06/94] fixed #262 --- app/Http/Controllers/Expenses/Bills.php | 12 +++++------- app/Http/Controllers/Incomes/Invoices.php | 10 ++++------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Expenses/Bills.php b/app/Http/Controllers/Expenses/Bills.php index 7cbf5f471..9a838940e 100644 --- a/app/Http/Controllers/Expenses/Bills.php +++ b/app/Http/Controllers/Expenses/Bills.php @@ -589,25 +589,23 @@ class Bills extends Controller { $bill = Bill::find($payment->bill_id); - $status = 'received'; - if ($bill->payments()->count() > 1) { $bill->bill_status_code = 'partial'; + } else { + $bill->bill_status_code = 'received'; } - $bill->bill_status_code = $status; - $bill->save(); $desc_amount = money((float) $payment->amount, (string) $payment->currency_code, true)->format(); $description = $desc_amount . ' ' . trans_choice('general.payments', 1); - // Add invoice history + // Add bill history BillHistory::create([ 'company_id' => $bill->company_id, - 'invoice_id' => $bill->id, - 'status_code' => $status, + 'bill_id' => $bill->id, + 'status_code' => $bill->bill_status_code, 'notify' => 0, 'description' => trans('messages.success.deleted', ['type' => $description]), ]); diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index 0a925974b..8eb71b2df 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -722,14 +722,12 @@ class Invoices extends Controller { $invoice = Invoice::find($payment->invoice_id); - $status = 'sent'; - if ($invoice->payments()->count() > 1) { - $status = 'partial'; + $invoice->invoice_status_code = 'partial'; + } else { + $invoice->invoice_status_code = 'sent'; } - $invoice->invoice_status_code = $status; - $invoice->save(); $desc_amount = money((float) $payment->amount, (string) $payment->currency_code, true)->format(); @@ -740,7 +738,7 @@ class Invoices extends Controller InvoiceHistory::create([ 'company_id' => $invoice->company_id, 'invoice_id' => $invoice->id, - 'status_code' => $status, + 'status_code' => $invoice->invoice_status_code, 'notify' => 0, 'description' => trans('messages.success.deleted', ['type' => $description]), ]); From 6dec413786b42604fe2256ec07385661d65cfa17 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Wed, 28 Mar 2018 15:30:00 +0300 Subject: [PATCH 07/94] get api invoice by number --- app/Http/Controllers/Api/Incomes/Invoices.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/Incomes/Invoices.php b/app/Http/Controllers/Api/Incomes/Invoices.php index 818061b39..fb78c9d46 100644 --- a/app/Http/Controllers/Api/Incomes/Invoices.php +++ b/app/Http/Controllers/Api/Incomes/Invoices.php @@ -36,11 +36,18 @@ class Invoices extends ApiController /** * Display the specified resource. * - * @param Invoice $invoice + * @param $id * @return \Dingo\Api\Http\Response */ - public function show(Invoice $invoice) + public function show($id) { + // Check if we're querying by id or number + if (is_numeric($id)) { + $invoice = Invoice::find($id); + } else { + $invoice = Invoice::where('invoice_number', $id)->first(); + } + return $this->response->item($invoice, new Transformer()); } From 88d78d54afb15d053569f6dfaf49d4f81f717f3b Mon Sep 17 00:00:00 2001 From: denisdulici Date: Thu, 29 Mar 2018 18:50:13 +0300 Subject: [PATCH 08/94] fixed #278 --- app/Http/Controllers/Banking/Accounts.php | 37 +++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Banking/Accounts.php b/app/Http/Controllers/Banking/Accounts.php index 59a373bd6..4e43d9bd2 100644 --- a/app/Http/Controllers/Banking/Accounts.php +++ b/app/Http/Controllers/Banking/Accounts.php @@ -84,19 +84,34 @@ class Accounts extends Controller */ public function update(Account $account, Request $request) { - $account->update($request->all()); - - // Set default account - if ($request['default_account']) { - setting()->set('general.default_account', $account->id); - setting()->save(); + // Check if we can disable it + if (!$request['enabled']) { + if ($account->id == setting('general.default_account')) { + $relationships[] = strtolower(trans_choice('general.companies', 1)); + } } - $message = trans('messages.success.updated', ['type' => trans_choice('general.accounts', 1)]); + if (empty($relationships)) { + $account->update($request->all()); - flash($message)->success(); + // Set default account + if ($request['default_account']) { + setting()->set('general.default_account', $account->id); + setting()->save(); + } - return redirect('banking/accounts'); + $message = trans('messages.success.updated', ['type' => trans_choice('general.accounts', 1)]); + + flash($message)->success(); + + return redirect('banking/accounts'); + } else { + $message = trans('messages.warning.disabled', ['name' => $account->name, 'text' => implode(', ', $relationships)]); + + flash($message)->warning(); + + return redirect('banking/accounts/' . $account->id . '/edit'); + } } /** @@ -115,6 +130,10 @@ class Accounts extends Controller 'revenues' => 'revenues', ]); + if ($account->id == setting('general.default_account')) { + $relationships[] = strtolower(trans_choice('general.companies', 1)); + } + if (empty($relationships)) { $account->delete(); From 778006d2a4b92ab1bac61178e63505986ebceb9a Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 30 Mar 2018 11:39:37 +0300 Subject: [PATCH 09/94] fixed #279 --- resources/views/expenses/bills/create.blade.php | 4 ++-- resources/views/expenses/bills/edit.blade.php | 4 ++-- resources/views/incomes/invoices/create.blade.php | 4 ++-- resources/views/incomes/invoices/edit.blade.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/views/expenses/bills/create.blade.php b/resources/views/expenses/bills/create.blade.php index c46071d5f..12b9a7928 100644 --- a/resources/views/expenses/bills/create.blade.php +++ b/resources/views/expenses/bills/create.blade.php @@ -51,7 +51,7 @@ - + @@ -123,7 +123,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; diff --git a/resources/views/expenses/bills/edit.blade.php b/resources/views/expenses/bills/edit.blade.php index 7d4d36ab7..8c11bfa36 100644 --- a/resources/views/expenses/bills/edit.blade.php +++ b/resources/views/expenses/bills/edit.blade.php @@ -42,7 +42,7 @@ - + @@ -141,7 +141,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; diff --git a/resources/views/incomes/invoices/create.blade.php b/resources/views/incomes/invoices/create.blade.php index cff4e31aa..dbb2db7dd 100644 --- a/resources/views/incomes/invoices/create.blade.php +++ b/resources/views/incomes/invoices/create.blade.php @@ -51,7 +51,7 @@ - + @@ -124,7 +124,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php index a5b949116..aa2e8c37f 100644 --- a/resources/views/incomes/invoices/edit.blade.php +++ b/resources/views/incomes/invoices/edit.blade.php @@ -65,7 +65,7 @@ - + @@ -140,7 +140,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; From a57f446d92a924795eafc81e263836ee28a92eaf Mon Sep 17 00:00:00 2001 From: denisdulici Date: Fri, 30 Mar 2018 17:46:50 +0300 Subject: [PATCH 10/94] fixed #284 --- public/css/app.css | 6 ++++++ resources/views/banking/accounts/index.blade.php | 4 ++-- resources/views/banking/transactions/index.blade.php | 4 ++-- resources/views/banking/transfers/index.blade.php | 4 ++-- resources/views/expenses/bills/index.blade.php | 6 +++--- resources/views/expenses/payments/index.blade.php | 4 ++-- resources/views/incomes/invoices/index.blade.php | 6 +++--- resources/views/incomes/revenues/index.blade.php | 4 ++-- resources/views/items/items/index.blade.php | 8 ++++---- resources/views/partials/admin/head.blade.php | 6 +++--- resources/views/partials/customer/head.blade.php | 6 +++--- 11 files changed, 32 insertions(+), 26 deletions(-) diff --git a/public/css/app.css b/public/css/app.css index 850703770..5fef5c91b 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -505,6 +505,12 @@ ul.add-new.nav.navbar-nav.pull-left { } } +@media only screen and (min-width : 768px) { + .amount-space { + padding-right: 30px !important; + } +} + .text-disabled { opacity: 0.4; } diff --git a/resources/views/banking/accounts/index.blade.php b/resources/views/banking/accounts/index.blade.php index 7992ef947..bc5206a05 100644 --- a/resources/views/banking/accounts/index.blade.php +++ b/resources/views/banking/accounts/index.blade.php @@ -33,7 +33,7 @@ @sortablelink('name', trans('general.name')) @sortablelink('number', trans('accounts.number')) - @sortablelink('opening_balance', trans('accounts.current_balance')) + @sortablelink('opening_balance', trans('accounts.current_balance')) @sortablelink('enabled', trans_choice('general.statuses', 1)) {{ trans('general.actions') }} @@ -43,7 +43,7 @@ {{ $item->name }} {{ $item->number }} - @money($item->balance, $item->currency_code, true) + @money($item->balance, $item->currency_code, true) @if ($item->enabled) {{ trans('general.enabled') }} diff --git a/resources/views/banking/transactions/index.blade.php b/resources/views/banking/transactions/index.blade.php index e4790a7a8..d25de5eb3 100644 --- a/resources/views/banking/transactions/index.blade.php +++ b/resources/views/banking/transactions/index.blade.php @@ -32,7 +32,7 @@ @sortablelink('type', trans_choice('general.types', 1)) @sortablelink('category_name', trans_choice('general.categories', 1)) @sortablelink('description', trans('general.description')) - @sortablelink('amount', trans('general.amount')) + @sortablelink('amount', trans('general.amount')) @@ -43,7 +43,7 @@ {{ $item->type }} {{ $item->category_name }} {{ $item->description }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) @endforeach diff --git a/resources/views/banking/transfers/index.blade.php b/resources/views/banking/transfers/index.blade.php index 58e329840..1dba80657 100644 --- a/resources/views/banking/transfers/index.blade.php +++ b/resources/views/banking/transfers/index.blade.php @@ -35,7 +35,7 @@ @sortablelink('payment.paid_at', trans('general.date')) @sortablelink('payment.name', trans('transfers.from_account')) @sortablelink('revenue.name', trans('transfers.to_account')) - @sortablelink('payment.amount', trans('general.amount')) + @sortablelink('payment.amount', trans('general.amount')) @@ -44,7 +44,7 @@ {{ Date::parse($item->paid_at)->format($date_format) }} {{ $item->from_account }} {{ $item->to_account }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) @endforeach diff --git a/resources/views/expenses/bills/index.blade.php b/resources/views/expenses/bills/index.blade.php index 278e76be2..f6b762195 100644 --- a/resources/views/expenses/bills/index.blade.php +++ b/resources/views/expenses/bills/index.blade.php @@ -35,8 +35,8 @@ @sortablelink('bill_number', trans_choice('general.numbers', 1)) - @sortablelink('vendor_name', trans_choice('general.vendors', 1)) - @sortablelink('amount', trans('general.amount')) + @sortablelink('vendor_name', trans_choice('general.vendors', 1)) + @sortablelink('amount', trans('general.amount')) @sortablelink('billed_at', trans('bills.bill_date')) @sortablelink('due_at', trans('bills.due_date')) @sortablelink('bill_status_code', trans_choice('general.statuses', 1)) @@ -48,7 +48,7 @@ {{ $item->bill_number }} {{ $item->vendor_name }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) {{ Date::parse($item->billed_at)->format($date_format) }} {{ Date::parse($item->due_at)->format($date_format) }} {{ $item->status->name }} diff --git a/resources/views/expenses/payments/index.blade.php b/resources/views/expenses/payments/index.blade.php index b2d6598fe..987b8a851 100644 --- a/resources/views/expenses/payments/index.blade.php +++ b/resources/views/expenses/payments/index.blade.php @@ -35,7 +35,7 @@ @sortablelink('paid_at', trans('general.date')) - @sortablelink('amount', trans('general.amount')) + @sortablelink('amount', trans('general.amount')) @sortablelink('vendor.name', trans_choice('general.vendors', 1)) @sortablelink('category.name', trans_choice('general.categories', 1)) @sortablelink('account.name', trans_choice('general.accounts', 1)) @@ -46,7 +46,7 @@ @foreach($payments as $item) {{ Date::parse($item->paid_at)->format($date_format) }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) {{ !empty($item->vendor->name) ? $item->vendor->name : trans('general.na') }} {{ $item->category->name }} {{ $item->account->name }} diff --git a/resources/views/incomes/invoices/index.blade.php b/resources/views/incomes/invoices/index.blade.php index 66f863cc2..635be1ee7 100644 --- a/resources/views/incomes/invoices/index.blade.php +++ b/resources/views/incomes/invoices/index.blade.php @@ -34,8 +34,8 @@ @sortablelink('invoice_number', trans_choice('general.numbers', 1)) - @sortablelink('customer_name', trans_choice('general.customers', 1)) - @sortablelink('amount', trans('general.amount')) + @sortablelink('customer_name', trans_choice('general.customers', 1)) + @sortablelink('amount', trans('general.amount')) @sortablelink('invoiced_at', trans('invoices.invoice_date')) @sortablelink('due_at', trans('invoices.due_date')) @sortablelink('invoice_status_code', trans_choice('general.statuses', 1)) @@ -47,7 +47,7 @@ {{ $item->invoice_number }} {{ $item->customer_name }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) {{ Date::parse($item->invoiced_at)->format($date_format) }} {{ Date::parse($item->due_at)->format($date_format) }} {{ $item->status->name }} diff --git a/resources/views/incomes/revenues/index.blade.php b/resources/views/incomes/revenues/index.blade.php index 8c79d2ece..40421bf7b 100644 --- a/resources/views/incomes/revenues/index.blade.php +++ b/resources/views/incomes/revenues/index.blade.php @@ -35,7 +35,7 @@ @sortablelink('paid_at', trans('general.date')) - @sortablelink('amount', trans('general.amount')) + @sortablelink('amount', trans('general.amount')) @sortablelink('customer.name', trans_choice('general.customers', 1)) @sortablelink('category.name', trans_choice('general.categories', 1)) @sortablelink('account.name', trans_choice('general.accounts', 1)) @@ -46,7 +46,7 @@ @foreach($revenues as $item) {{ Date::parse($item->paid_at)->format($date_format) }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) {{ !empty($item->customer->name) ? $item->customer->name : trans('general.na') }} {{ $item->category->name }} {{ $item->account->name }} diff --git a/resources/views/items/items/index.blade.php b/resources/views/items/items/index.blade.php index bedfa54b6..59ff6cfe5 100644 --- a/resources/views/items/items/index.blade.php +++ b/resources/views/items/items/index.blade.php @@ -37,8 +37,8 @@ @sortablelink('name', trans('general.name')) @sortablelink('category', trans_choice('general.categories', 1)) @sortablelink('quantity', trans_choice('items.quantities', 1)) - @sortablelink('sale_price', trans('items.sales_price')) - @sortablelink('purchase_price', trans('items.purchase_price')) + @sortablelink('sale_price', trans('items.sales_price')) + @sortablelink('purchase_price', trans('items.purchase_price')) @sortablelink('enabled', trans_choice('general.statuses', 1)) {{ trans('general.actions') }} @@ -50,8 +50,8 @@ {{ $item->name }} {{ $item->category ? $item->category->name : trans('general.na') }} {{ $item->quantity }} - {{ money($item->sale_price, setting('general.default_currency'), true) }} - {{ money($item->purchase_price, setting('general.default_currency'), true) }} + {{ money($item->sale_price, setting('general.default_currency'), true) }} + {{ money($item->purchase_price, setting('general.default_currency'), true) }} @if ($item->enabled) {{ trans('general.enabled') }} diff --git a/resources/views/partials/admin/head.blade.php b/resources/views/partials/admin/head.blade.php index a2095e49e..9976e3aa9 100644 --- a/resources/views/partials/admin/head.blade.php +++ b/resources/views/partials/admin/head.blade.php @@ -19,13 +19,13 @@ @else - + @endif - - + + diff --git a/resources/views/partials/customer/head.blade.php b/resources/views/partials/customer/head.blade.php index b2bdc073b..dc64f5fa3 100644 --- a/resources/views/partials/customer/head.blade.php +++ b/resources/views/partials/customer/head.blade.php @@ -19,15 +19,15 @@ @else - + @endif - - + + From b864875533784b9b76c67f3f070ba04bd5099387 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 31 Mar 2018 11:12:31 +0300 Subject: [PATCH 11/94] fixed #285 --- resources/views/expenses/bills/show.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/expenses/bills/show.blade.php b/resources/views/expenses/bills/show.blade.php index 597ebff8e..adffc2fc4 100644 --- a/resources/views/expenses/bills/show.blade.php +++ b/resources/views/expenses/bills/show.blade.php @@ -220,9 +220,9 @@ @foreach($bill->histories as $history) - {{ Date::parse($bill->created_at)->format($date_format) }} - {{ $bill->status->name }} - {{ $bill->description }} + {{ Date::parse($history->created_at)->format($date_format) }} + {{ $history->status->name }} + {{ $history->description }} @endforeach From fcc61078713cff699d13fca5df7ddf5b5d7626b6 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 31 Mar 2018 11:13:49 +0300 Subject: [PATCH 12/94] formatting --- app/Http/Controllers/Expenses/Bills.php | 2 +- app/Http/Controllers/Incomes/Invoices.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Expenses/Bills.php b/app/Http/Controllers/Expenses/Bills.php index 9a838940e..cde227a81 100644 --- a/app/Http/Controllers/Expenses/Bills.php +++ b/app/Http/Controllers/Expenses/Bills.php @@ -569,7 +569,7 @@ class Bills extends Controller BillHistory::create($request->input()); - $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); + $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); return response()->json([ 'success' => true, diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index 8eb71b2df..7df620606 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -702,7 +702,7 @@ class Invoices extends Controller InvoiceHistory::create($request->input()); - $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); + $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); return response()->json([ 'success' => true, From 7ecf6914a8f127888c649c5d1e285e291951545d Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 7 Apr 2018 12:00:39 +0300 Subject: [PATCH 13/94] print reports --- .../Controllers/Reports/ExpenseSummary.php | 13 ++- .../Reports/IncomeExpenseSummary.php | 13 ++- .../Controllers/Reports/IncomeSummary.php | 13 ++- public/css/app.css | 4 + resources/views/layouts/print.blade.php | 7 ++ .../reports/expense_summary/body.blade.php | 48 ++++++++++ .../reports/expense_summary/index.blade.php | 53 ++--------- .../reports/expense_summary/print.blade.php | 7 ++ .../income_expense_summary/body.blade.php | 66 ++++++++++++++ .../income_expense_summary/index.blade.php | 73 ++------------- .../income_expense_summary/print.blade.php | 7 ++ .../reports/income_summary/body.blade.php | 48 ++++++++++ .../reports/income_summary/index.blade.php | 89 +++++-------------- .../reports/income_summary/print.blade.php | 7 ++ .../charts/chartjs/multi/line_print.blade.php | 58 ++++++++++++ 15 files changed, 319 insertions(+), 187 deletions(-) create mode 100644 resources/views/layouts/print.blade.php create mode 100644 resources/views/reports/expense_summary/body.blade.php create mode 100644 resources/views/reports/expense_summary/print.blade.php create mode 100644 resources/views/reports/income_expense_summary/body.blade.php create mode 100644 resources/views/reports/income_expense_summary/print.blade.php create mode 100644 resources/views/reports/income_summary/body.blade.php create mode 100644 resources/views/reports/income_summary/print.blade.php create mode 100644 resources/views/vendor/consoletvs/charts/chartjs/multi/line_print.blade.php diff --git a/app/Http/Controllers/Reports/ExpenseSummary.php b/app/Http/Controllers/Reports/ExpenseSummary.php index 10408cb22..dbae1aea3 100644 --- a/app/Http/Controllers/Reports/ExpenseSummary.php +++ b/app/Http/Controllers/Reports/ExpenseSummary.php @@ -91,6 +91,15 @@ class ExpenseSummary extends Controller $this->setAmount($expenses_graph, $totals, $expenses, $payments, 'payment', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.expense_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.expense_summary.index'; + } + // Expenses chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -98,12 +107,12 @@ class ExpenseSummary extends Controller ->dataset(trans_choice('general.expenses', 1), $expenses_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); // Expenses Graph $expenses_graph = json_encode($expenses_graph); - return view('reports.expense_summary.index', compact('chart', 'dates', 'categories', 'expenses', 'totals')); + return view($view_template, compact('chart', 'dates', 'categories', 'expenses', 'totals')); } private function setAmount(&$graph, &$totals, &$expenses, $items, $type, $date_field) diff --git a/app/Http/Controllers/Reports/IncomeExpenseSummary.php b/app/Http/Controllers/Reports/IncomeExpenseSummary.php index 5e8352d6e..86c7b138c 100644 --- a/app/Http/Controllers/Reports/IncomeExpenseSummary.php +++ b/app/Http/Controllers/Reports/IncomeExpenseSummary.php @@ -141,6 +141,15 @@ class IncomeExpenseSummary extends Controller $this->setAmount($profit_graph, $totals, $compares, $payments, 'payment', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.income_expense_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.income_expense_summary.index'; + } + // Profit chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -148,9 +157,9 @@ class IncomeExpenseSummary extends Controller ->dataset(trans_choice('general.profits', 1), $profit_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); - return view('reports.income_expense_summary.index', compact('chart', 'dates', 'income_categories', 'expense_categories', 'compares', 'totals')); + return view($view_template, compact('chart', 'dates', 'income_categories', 'expense_categories', 'compares', 'totals')); } private function setAmount(&$graph, &$totals, &$compares, $items, $type, $date_field) diff --git a/app/Http/Controllers/Reports/IncomeSummary.php b/app/Http/Controllers/Reports/IncomeSummary.php index 390c2cede..338d677c1 100644 --- a/app/Http/Controllers/Reports/IncomeSummary.php +++ b/app/Http/Controllers/Reports/IncomeSummary.php @@ -91,6 +91,15 @@ class IncomeSummary extends Controller $this->setAmount($incomes_graph, $totals, $incomes, $revenues, 'revenue', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.income_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.income_summary.index'; + } + // Incomes chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -98,9 +107,9 @@ class IncomeSummary extends Controller ->dataset(trans_choice('general.incomes', 1), $incomes_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); - return view('reports.income_summary.index', compact('chart', 'dates', 'categories', 'incomes', 'totals')); + return view($view_template, compact('chart', 'dates', 'categories', 'incomes', 'totals')); } private function setAmount(&$graph, &$totals, &$incomes, $items, $type, $date_field) diff --git a/public/css/app.css b/public/css/app.css index 5fef5c91b..67f89e918 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -515,6 +515,10 @@ ul.add-new.nav.navbar-nav.pull-left { opacity: 0.4; } +.print-width { + max-width: 1500px; +} + /* .tooltip > .tooltip-inner { background-color: #6da252; diff --git a/resources/views/layouts/print.blade.php b/resources/views/layouts/print.blade.php new file mode 100644 index 000000000..6b213602e --- /dev/null +++ b/resources/views/layouts/print.blade.php @@ -0,0 +1,7 @@ + + @include('partials.admin.head') + + + @yield('content') + + diff --git a/resources/views/reports/expense_summary/body.blade.php b/resources/views/reports/expense_summary/body.blade.php new file mode 100644 index 000000000..ba036df75 --- /dev/null +++ b/resources/views/reports/expense_summary/body.blade.php @@ -0,0 +1,48 @@ +
+ {!! $chart->render() !!} + +
+ +
+ + + + + @foreach($dates as $date) + + @endforeach + + + + @if ($expenses) + @foreach($expenses as $category_id => $category) + + + @foreach($category as $item) + + @endforeach + + @endforeach + @else + + + + @endif + + + + + @foreach($totals as $total) + + @endforeach + + +
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)
+
{{ trans('general.no_records') }}
+
{{ trans_choice('general.totals', 1) }}@money($total['amount'], $total['currency_code'], true)
+
+
+ +@push('js') +{!! Charts::assets() !!} +@endpush \ No newline at end of file diff --git a/resources/views/reports/expense_summary/index.blade.php b/resources/views/reports/expense_summary/index.blade.php index b5504c7a9..1b2d0444b 100644 --- a/resources/views/reports/expense_summary/index.blade.php +++ b/resources/views/reports/expense_summary/index.blade.php @@ -2,6 +2,10 @@ @section('title', trans('reports.summary.expense')) +@section('new_button') +  {{ trans('general.print') }} +@endsection + @section('content')
@@ -17,55 +21,8 @@
{!! Form::close() !!}
-
- {!! $chart->render() !!} -
- -
- - - - - @foreach($dates as $date) - - @endforeach - - - - @if ($expenses) - @foreach($expenses as $category_id => $category) - - - @foreach($category as $item) - - @endforeach - - @endforeach - @else - - - - @endif - - - - - @foreach($totals as $total) - - @endforeach - - -
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)
-
{{ trans('general.no_records') }}
-
{{ trans_choice('general.totals', 1) }}@money($total['amount'], $total['currency_code'], true)
-
-
- + @include('reports.expense_summary.body')
@endsection - -@push('js') -{!! Charts::assets() !!} -@endpush diff --git a/resources/views/reports/expense_summary/print.blade.php b/resources/views/reports/expense_summary/print.blade.php new file mode 100644 index 000000000..e1d4f9651 --- /dev/null +++ b/resources/views/reports/expense_summary/print.blade.php @@ -0,0 +1,7 @@ +@extends('layouts.print') + +@section('title', trans('reports.summary.expense')) + +@section('content') + @include('reports.expense_summary.body') +@endsection \ No newline at end of file diff --git a/resources/views/reports/income_expense_summary/body.blade.php b/resources/views/reports/income_expense_summary/body.blade.php new file mode 100644 index 000000000..a5f54f4f3 --- /dev/null +++ b/resources/views/reports/income_expense_summary/body.blade.php @@ -0,0 +1,66 @@ +
+ {!! $chart->render() !!} + +
+ +
+ + + + + @foreach($dates as $date) + + @endforeach + + + + @if ($compares) + @foreach($compares as $type => $categories) + @foreach($categories as $category_id => $category) + + @if($type == 'income') + + @else + + @endif + @foreach($category as $item) + @if($type == 'income') + + @else + + @endif + @endforeach + + @endforeach + @endforeach + @else + + + + @endif + + + + + @foreach($totals as $total) + + @endforeach + + +
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $income_categories[$category_id] }}{{ $expense_categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)@money(-$item['amount'], $item['currency_code'], true)
+
{{ trans('general.no_records') }}
+
{{ trans_choice('general.totals', 1) }} + @if($total['amount'] == 0) + @money($total['amount'], $total['currency_code'], true) + @elseif($total['amount'] > 0) + @money($total['amount'], $total['currency_code'], true) + @else + @money($total['amount'], $total['currency_code'], true) + @endif +
+
+
+ +@push('js') +{!! Charts::assets() !!} +@endpush diff --git a/resources/views/reports/income_expense_summary/index.blade.php b/resources/views/reports/income_expense_summary/index.blade.php index d8d1cd3c6..e969e5598 100644 --- a/resources/views/reports/income_expense_summary/index.blade.php +++ b/resources/views/reports/income_expense_summary/index.blade.php @@ -1,6 +1,10 @@ @extends('layouts.admin') -@section('title', trans_choice('reports.summary.income_expense', 1)) +@section('title', trans('reports.summary.income_expense')) + +@section('new_button') +  {{ trans('general.print') }} +@endsection @section('content') @@ -17,73 +21,8 @@ {!! Form::close() !!} -
- {!! $chart->render() !!} -
- -
- - - - - @foreach($dates as $date) - - @endforeach - - - - @if ($compares) - @foreach($compares as $type => $categories) - @foreach($categories as $category_id => $category) - - @if($type == 'income') - - @else - - @endif - @foreach($category as $item) - @if($type == 'income') - - @else - - @endif - @endforeach - - @endforeach - @endforeach - @else - - - - @endif - - - - - @foreach($totals as $total) - - @endforeach - - -
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $income_categories[$category_id] }}{{ $expense_categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)@money(-$item['amount'], $item['currency_code'], true)
-
{{ trans('general.no_records') }}
-
{{ trans_choice('general.totals', 1) }} - @if($total['amount'] == 0) - @money($total['amount'], $total['currency_code'], true) - @elseif($total['amount'] > 0) - @money($total['amount'], $total['currency_code'], true) - @else - @money($total['amount'], $total['currency_code'], true) - @endif -
-
-
- + @include('reports.income_expense_summary.body') @endsection - -@push('js') -{!! Charts::assets() !!} -@endpush diff --git a/resources/views/reports/income_expense_summary/print.blade.php b/resources/views/reports/income_expense_summary/print.blade.php new file mode 100644 index 000000000..fa13bd103 --- /dev/null +++ b/resources/views/reports/income_expense_summary/print.blade.php @@ -0,0 +1,7 @@ +@extends('layouts.print') + +@section('title', trans('reports.summary.income_expense')) + +@section('content') + @include('reports.income_expense_summary.body') +@endsection \ No newline at end of file diff --git a/resources/views/reports/income_summary/body.blade.php b/resources/views/reports/income_summary/body.blade.php new file mode 100644 index 000000000..c42f7c3ea --- /dev/null +++ b/resources/views/reports/income_summary/body.blade.php @@ -0,0 +1,48 @@ +
+ {!! $chart->render() !!} + +
+ +
+ + + + + @foreach($dates as $date) + + @endforeach + + + + @if ($incomes) + @foreach($incomes as $category_id => $category) + + + @foreach($category as $item) + + @endforeach + + @endforeach + @else + + + + @endif + + + + + @foreach($totals as $total) + + @endforeach + + +
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)
+
{{ trans('general.no_records') }}
+
{{ trans_choice('general.totals', 1) }}@money($total['amount'], $total['currency_code'], true)
+
+
+ +@push('js') +{!! Charts::assets() !!} +@endpush diff --git a/resources/views/reports/income_summary/index.blade.php b/resources/views/reports/income_summary/index.blade.php index c29a7f83e..a3cb75b9c 100644 --- a/resources/views/reports/income_summary/index.blade.php +++ b/resources/views/reports/income_summary/index.blade.php @@ -1,71 +1,28 @@ @extends('layouts.admin') -@section('title', trans_choice('reports.summary.income', 1)) +@section('title', trans('reports.summary.income')) -@section('content') - -
-
- - {!! Form::open(['url' => 'reports/income-summary', 'role' => 'form', 'method' => 'GET']) !!} -
- {!! Form::select('year', $years, request('year', $this_year), ['class' => 'form-control input-filter input-sm', 'onchange' => 'this.form.submit()']) !!} -
- {!! Form::close() !!} -
-
- {!! $chart->render() !!} - -
- -
- - - - - @foreach($dates as $date) - - @endforeach - - - - @if ($incomes) - @foreach($incomes as $category_id => $category) - - - @foreach($category as $item) - - @endforeach - - @endforeach - @else - - - - @endif - - - - - @foreach($totals as $total) - - @endforeach - - -
{{ trans_choice('general.categories', 1) }}{{ $date }}
{{ $categories[$category_id] }}@money($item['amount'], $item['currency_code'], true)
-
{{ trans('general.no_records') }}
-
{{ trans_choice('general.totals', 1) }}@money($total['amount'], $total['currency_code'], true)
-
-
- -
- +@section('new_button') +  {{ trans('general.print') }} @endsection -@push('js') -{!! Charts::assets() !!} -@endpush +@section('content') + +
+
+ + {!! Form::open(['url' => 'reports/income-summary', 'role' => 'form', 'method' => 'GET']) !!} +
+ {!! Form::select('year', $years, request('year', $this_year), ['class' => 'form-control input-filter input-sm', 'onchange' => 'this.form.submit()']) !!} +
+ {!! Form::close() !!} +
+ + @include('reports.income_summary.body') +
+ +@endsection diff --git a/resources/views/reports/income_summary/print.blade.php b/resources/views/reports/income_summary/print.blade.php new file mode 100644 index 000000000..14f408335 --- /dev/null +++ b/resources/views/reports/income_summary/print.blade.php @@ -0,0 +1,7 @@ +@extends('layouts.print') + +@section('title', trans('reports.summary.income')) + +@section('content') + @include('reports.income_summary.body') +@endsection \ No newline at end of file diff --git a/resources/views/vendor/consoletvs/charts/chartjs/multi/line_print.blade.php b/resources/views/vendor/consoletvs/charts/chartjs/multi/line_print.blade.php new file mode 100644 index 000000000..bd2b2e887 --- /dev/null +++ b/resources/views/vendor/consoletvs/charts/chartjs/multi/line_print.blade.php @@ -0,0 +1,58 @@ +@if(!$model->customId) + @include('charts::_partials.container.canvas2') +@endif + + From a7bf8651f5405def305580749df3c6d989e786af Mon Sep 17 00:00:00 2001 From: denisdulici Date: Sat, 7 Apr 2018 17:14:34 +0300 Subject: [PATCH 14/94] customer/vendor show page --- app/Http/Controllers/Expenses/Vendors.php | 99 ++++++++++++ app/Http/Controllers/Incomes/Customers.php | 101 +++++++++++- .../views/expenses/vendors/index.blade.php | 3 +- .../views/expenses/vendors/show.blade.php | 152 ++++++++++++++++++ .../views/incomes/customers/index.blade.php | 3 +- .../views/incomes/customers/show.blade.php | 152 ++++++++++++++++++ 6 files changed, 507 insertions(+), 3 deletions(-) create mode 100644 resources/views/expenses/vendors/show.blade.php create mode 100644 resources/views/incomes/customers/show.blade.php diff --git a/app/Http/Controllers/Expenses/Vendors.php b/app/Http/Controllers/Expenses/Vendors.php index 76aa73dc1..0cd4fb7fb 100644 --- a/app/Http/Controllers/Expenses/Vendors.php +++ b/app/Http/Controllers/Expenses/Vendors.php @@ -4,10 +4,16 @@ namespace App\Http\Controllers\Expenses; use App\Http\Controllers\Controller; use App\Http\Requests\Expense\Vendor as Request; +use App\Models\Expense\Bill; +use App\Models\Expense\Payment; use App\Models\Expense\Vendor; use App\Models\Setting\Currency; use App\Traits\Uploads; use App\Utilities\ImportFile; +use Date; +use Illuminate\Pagination\Paginator; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Collection; class Vendors extends Controller { @@ -25,6 +31,80 @@ class Vendors extends Controller return view('expenses.vendors.index', compact('vendors')); } + /** + * Show the form for viewing the specified resource. + * + * @param Vendor $vendor + * + * @return Response + */ + public function show(Vendor $vendor) + { + $amounts = [ + 'paid' => 0, + 'open' => 0, + 'overdue' => 0, + ]; + + $counts = [ + 'bills' => 0, + 'payments' => 0, + ]; + + // Handle bills + $bills = Bill::with(['status', 'payments'])->where('vendor_id', $vendor->id)->get(); + + $counts['bills'] = $bills->count(); + + $bill_payments = []; + + $today = Date::today()->toDateString(); + + foreach ($bills as $item) { + $payments = 0; + + foreach ($item->payments as $payment) { + $payment->category = new \stdClass(); + $payment->category->id = 0; + $payment->category->name = trans_choice('general.bills', 2); + + $bill_payments[] = $payment; + + $amount = $payment->getConvertedAmount(); + + $amounts['paid'] += $amount; + + $payments += $amount; + } + + if ($item->bill_status_code == 'paid') { + continue; + } + + // Check if it's open or overdue invoice + if ($item->due_at > $today) { + $amounts['open'] += $item->getConvertedAmount() - $payments; + } else { + $amounts['overdue'] += $item->getConvertedAmount() - $payments; + } + } + + // Handle payments + $payments = Payment::with(['account', 'category'])->where('vendor_id', $vendor->id)->get(); + + $counts['payments'] = $payments->count(); + + // Prepare data + $items = collect($payments)->each(function ($item) use (&$amounts) { + $amounts['paid'] += $item->getConvertedAmount(); + }); + + $limit = request('limit', setting('general.list_limit', '25')); + $transactions = $this->paginate($items->merge($bill_payments)->sortByDesc('paid_at'), $limit); + + return view('expenses.vendors.show', compact('vendor', 'counts', 'amounts', 'transactions')); + } + /** * Show the form for creating a new resource. * @@ -206,4 +286,23 @@ class Vendors extends Controller return response()->json($vendor); } + + /** + * Generate a pagination collection. + * + * @param array|Collection $items + * @param int $perPage + * @param int $page + * @param array $options + * + * @return LengthAwarePaginator + */ + public function paginate($items, $perPage = 15, $page = null, $options = []) + { + $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); + + $items = $items instanceof Collection ? $items : Collection::make($items); + + return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); + } } diff --git a/app/Http/Controllers/Incomes/Customers.php b/app/Http/Controllers/Incomes/Customers.php index 5fc0f692b..273030037 100644 --- a/app/Http/Controllers/Incomes/Customers.php +++ b/app/Http/Controllers/Incomes/Customers.php @@ -4,11 +4,17 @@ namespace App\Http\Controllers\Incomes; use App\Http\Controllers\Controller; use App\Http\Requests\Income\Customer as Request; -use Illuminate\Http\Request as FRequest; use App\Models\Auth\User; use App\Models\Income\Customer; +use App\Models\Income\Invoice; +use App\Models\Income\Revenue; use App\Models\Setting\Currency; use App\Utilities\ImportFile; +use Date; +use Illuminate\Http\Request as FRequest; +use Illuminate\Pagination\Paginator; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Collection; class Customers extends Controller { @@ -25,6 +31,80 @@ class Customers extends Controller return view('incomes.customers.index', compact('customers', 'emails')); } + /** + * Show the form for viewing the specified resource. + * + * @param Customer $customer + * + * @return Response + */ + public function show(Customer $customer) + { + $amounts = [ + 'paid' => 0, + 'open' => 0, + 'overdue' => 0, + ]; + + $counts = [ + 'invoices' => 0, + 'revenues' => 0, + ]; + + // Handle invoices + $invoices = Invoice::with(['status', 'payments'])->where('customer_id', $customer->id)->get(); + + $counts['invoices'] = $invoices->count(); + + $invoice_payments = []; + + $today = Date::today()->toDateString(); + + foreach ($invoices as $item) { + $payments = 0; + + foreach ($item->payments as $payment) { + $payment->category = new \stdClass(); + $payment->category->id = 0; + $payment->category->name = trans_choice('general.invoices', 2); + + $invoice_payments[] = $payment; + + $amount = $payment->getConvertedAmount(); + + $amounts['paid'] += $amount; + + $payments += $amount; + } + + if ($item->invoice_status_code == 'paid') { + continue; + } + + // Check if it's open or overdue invoice + if ($item->due_at > $today) { + $amounts['open'] += $item->getConvertedAmount() - $payments; + } else { + $amounts['overdue'] += $item->getConvertedAmount() - $payments; + } + } + + // Handle revenues + $revenues = Revenue::with(['account', 'category'])->where('customer_id', $customer->id)->get(); + + $counts['revenues'] = $revenues->count(); + + // Prepare data + $items = collect($revenues)->each(function ($item) use (&$amounts) { + $amounts['paid'] += $item->getConvertedAmount(); + }); + + $limit = request('limit', setting('general.list_limit', '25')); + $transactions = $this->paginate($items->merge($invoice_payments)->sortByDesc('paid_at'), $limit); + + return view('incomes.customers.show', compact('customer', 'counts', 'amounts', 'transactions')); + } + /** * Show the form for creating a new resource. * @@ -266,4 +346,23 @@ class Customers extends Controller return response()->json($json); } + + /** + * Generate a pagination collection. + * + * @param array|Collection $items + * @param int $perPage + * @param int $page + * @param array $options + * + * @return LengthAwarePaginator + */ + public function paginate($items, $perPage = 15, $page = null, $options = []) + { + $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); + + $items = $items instanceof Collection ? $items : Collection::make($items); + + return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); + } } diff --git a/resources/views/expenses/vendors/index.blade.php b/resources/views/expenses/vendors/index.blade.php index 0a66e11ac..4f479f4a1 100644 --- a/resources/views/expenses/vendors/index.blade.php +++ b/resources/views/expenses/vendors/index.blade.php @@ -42,7 +42,7 @@ @foreach($vendors as $item) - {{ $item->name }} + {{ $item->name }} {{ !empty($item->email) ? $item->email : trans('general.na') }} {{ $item->phone }} @@ -58,6 +58,7 @@