From 83ad45cdfa35adfe52ac278ea3aafdf232f18fba Mon Sep 17 00:00:00 2001 From: cuneytsenturk Date: Tue, 13 Mar 2018 15:06:28 +0300 Subject: [PATCH] close #252 Fixed: Invoice partial payments are unpredictable --- app/Http/Controllers/Expenses/Bills.php | 11 +++- app/Http/Controllers/Incomes/Invoices.php | 43 ++++++++++++++-- app/Listeners/Updates/Version1115.php | 51 +++++++++++++++++++ app/Models/Expense/BillStatus.php | 3 ++ app/Models/Income/InvoiceStatus.php | 3 ++ app/Providers/EventServiceProvider.php | 1 + database/seeds/BillStatuses.php | 5 ++ database/seeds/InvoiceStatuses.php | 5 ++ resources/views/expenses/bills/bill.blade.php | 21 ++++++-- .../views/incomes/invoices/invoice.blade.php | 21 ++++++-- .../views/incomes/invoices/show.blade.php | 2 + 11 files changed, 152 insertions(+), 14 deletions(-) create mode 100644 app/Listeners/Updates/Version1115.php diff --git a/app/Http/Controllers/Expenses/Bills.php b/app/Http/Controllers/Expenses/Bills.php index 18d535fcb..429c92fc4 100644 --- a/app/Http/Controllers/Expenses/Bills.php +++ b/app/Http/Controllers/Expenses/Bills.php @@ -594,13 +594,22 @@ class Bills extends Controller } elseif ($bill->payments()->count() > 1) { $bill->bill_status_code = 'partial'; } else { - $bill->bill_status_code = 'draft'; + $bill->bill_status_code = 'received'; } $bill->save(); $payment->delete(); + // Add invoice history + BillHistory::create([ + 'company_id' => $bill->company_id, + 'invoice_id' => $bill->id, + 'status_code' => 'delete', + 'notify' => 0, + 'description' => trans('general.delete') . ' ' . $payment->description, + ]); + $message = trans('messages.success.deleted', ['type' => trans_choice('general.bills', 1)]); flash($message)->success(); diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index c8012764a..7dcc8db31 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -474,8 +474,20 @@ class Invoices extends Controller */ public function markSent(Invoice $invoice) { - $invoice->invoice_status_code = 'sent'; - $invoice->save(); + if ($invoice->invoice_status_code != 'partial') { + $invoice->invoice_status_code = 'sent'; + + $invoice->save(); + } + + // Add invoice history + InvoiceHistory::create([ + 'company_id' => $invoice->company_id, + 'invoice_id' => $invoice->id, + 'status_code' => 'sent', + 'notify' => 0, + 'description' => trans('invoices.mark_sent'), + ]); flash(trans('invoices.messages.marked_sent'))->success(); @@ -522,8 +534,20 @@ class Invoices extends Controller unset($invoice->pdf_path); // Mark invoice as sent - $invoice->invoice_status_code = 'sent'; - $invoice->save(); + if ($invoice->invoice_status_code != 'partial') { + $invoice->invoice_status_code = 'sent'; + + $invoice->save(); + } + + // Add invoice history + InvoiceHistory::create([ + 'company_id' => $invoice->company_id, + 'invoice_id' => $invoice->id, + 'status_code' => 'sent', + 'notify' => 1, + 'description' => trans('invoices.send_mail'), + ]); flash(trans('invoices.messages.email_sent'))->success(); @@ -705,13 +729,22 @@ class Invoices extends Controller } elseif ($invoice->payments()->count() > 1) { $invoice->invoice_status_code = 'partial'; } else { - $invoice->invoice_status_code = 'draft'; + $invoice->invoice_status_code = 'sent'; } $invoice->save(); $payment->delete(); + // Add invoice history + InvoiceHistory::create([ + 'company_id' => $invoice->company_id, + 'invoice_id' => $invoice->id, + 'status_code' => 'delete', + 'notify' => 0, + 'description' => trans('general.delete') . ' ' . $payment->description, + ]); + $message = trans('messages.success.deleted', ['type' => trans_choice('general.invoices', 1)]); flash($message)->success(); diff --git a/app/Listeners/Updates/Version1115.php b/app/Listeners/Updates/Version1115.php new file mode 100644 index 000000000..e1e834cc8 --- /dev/null +++ b/app/Listeners/Updates/Version1115.php @@ -0,0 +1,51 @@ +check($event)) { + return; + } + + // Create new bill statuses + $companies = Company::all(); + + foreach ($companies as $company) { + $invoice = [ + 'company_id' => $company->id, + 'name' => trans('invoices.status.delete'), + 'code' => 'delete', + ]; + + InvoiceStatus::create($invoice); + + $bill = [ + 'company_id' => $company->id, + 'name' => trans('bills.status.delete'), + 'code' => 'delete', + ]; + + BillStatus::create($bill); + } + } +} diff --git a/app/Models/Expense/BillStatus.php b/app/Models/Expense/BillStatus.php index b758c78f3..f138d1ff8 100644 --- a/app/Models/Expense/BillStatus.php +++ b/app/Models/Expense/BillStatus.php @@ -34,6 +34,9 @@ class BillStatus extends Model case 'paid': $label = 'label-success'; break; + case 'delete': + $label = 'label-danger'; + break; case 'partial': case 'received': $label = 'label-warning'; diff --git a/app/Models/Income/InvoiceStatus.php b/app/Models/Income/InvoiceStatus.php index bbcbf3c0d..10a7bd1ac 100644 --- a/app/Models/Income/InvoiceStatus.php +++ b/app/Models/Income/InvoiceStatus.php @@ -34,6 +34,9 @@ class InvoiceStatus extends Model case 'paid': $label = 'label-success'; break; + case 'delete': + $label = 'label-danger'; + break; case 'partial': case 'sent': $label = 'label-warning'; diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 002ecd50c..8a88b29cc 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -22,6 +22,7 @@ class EventServiceProvider extends ServiceProvider 'App\Listeners\Updates\Version112', 'App\Listeners\Updates\Version113', 'App\Listeners\Updates\Version119', + 'App\Listeners\Updates\Version1115', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\Auth\Login', diff --git a/database/seeds/BillStatuses.php b/database/seeds/BillStatuses.php index bbd92950b..16d298214 100644 --- a/database/seeds/BillStatuses.php +++ b/database/seeds/BillStatuses.php @@ -43,6 +43,11 @@ class BillStatuses extends Seeder 'name' => trans('bills.status.partial'), 'code' => 'partial', ], + [ + 'company_id' => $company_id, + 'name' => trans('bills.status.delete'), + 'code' => 'delete', + ], [ 'company_id' => $company_id, 'name' => trans('bills.status.paid'), diff --git a/database/seeds/InvoiceStatuses.php b/database/seeds/InvoiceStatuses.php index 67c175b8d..27580bba6 100644 --- a/database/seeds/InvoiceStatuses.php +++ b/database/seeds/InvoiceStatuses.php @@ -53,6 +53,11 @@ class InvoiceStatuses extends Seeder 'name' => trans('invoices.status.partial'), 'code' => 'partial', ], + [ + 'company_id' => $company_id, + 'name' => trans('invoices.status.delete'), + 'code' => 'delete', + ], [ 'company_id' => $company_id, 'name' => trans('invoices.status.paid'), diff --git a/resources/views/expenses/bills/bill.blade.php b/resources/views/expenses/bills/bill.blade.php index c35c2142d..8fa3bc9cb 100644 --- a/resources/views/expenses/bills/bill.blade.php +++ b/resources/views/expenses/bills/bill.blade.php @@ -113,10 +113,23 @@ @foreach($bill->totals as $total) - - - - + @if ($total->code != 'total') + + + + + @else + @if ($bill->paid) + + + + + @endif + + + + + @endif @endforeach
{{ trans($total['name']) }}:@money($total->amount, $bill->currency_code, true)
{{ trans($total['name']) }}:@money($total->amount, $bill->currency_code, true)
{{ trans('invoices.paid') }}:- @money($bill->paid, $bill->currency_code, true)
{{ trans($total['name']) }}:@money($total->amount - $bill->paid, $bill->currency_code, true)
diff --git a/resources/views/incomes/invoices/invoice.blade.php b/resources/views/incomes/invoices/invoice.blade.php index 897bc0c36..e80137f2d 100644 --- a/resources/views/incomes/invoices/invoice.blade.php +++ b/resources/views/incomes/invoices/invoice.blade.php @@ -113,10 +113,23 @@ @foreach($invoice->totals as $total) - - - - + @if($total->code != 'total') + + + + + @else + @if ($invoice->paid) + + + + + @endif + + + + + @endif @endforeach
{{ trans($total['name']) }}:@money($total->amount, $invoice->currency_code, true)
{{ trans($total['name']) }}:@money($total->amount, $invoice->currency_code, true)
{{ trans('invoices.paid') }}:- @money($invoice->paid, $invoice->currency_code, true)
{{ trans($total['name']) }}:@money($total->amount - $invoice->paid, $invoice->currency_code, true)
diff --git a/resources/views/incomes/invoices/show.blade.php b/resources/views/incomes/invoices/show.blade.php index 7630ffdef..6520023c5 100644 --- a/resources/views/incomes/invoices/show.blade.php +++ b/resources/views/incomes/invoices/show.blade.php @@ -165,7 +165,9 @@
  • @endif @permission('update-incomes-invoices') + @if($invoice->invoice_status_code != 'partial')
  • {{ trans('invoices.mark_sent') }}
  • + @endif @endpermission @if($invoice->customer_email)
  • {{ trans('invoices.send_mail') }}