diff --git a/app/Abstracts/Widget.php b/app/Abstracts/Widget.php index 7b692f80f..abe69783b 100644 --- a/app/Abstracts/Widget.php +++ b/app/Abstracts/Widget.php @@ -47,17 +47,13 @@ abstract class Widget $today = Date::today()->toDateString(); - $type = ($model instanceof Invoice) ? 'invoice' : 'bill'; - - $status_field = $type . '_status_code'; - - if ($model->$status_field == 'paid') { + if ($model->status == 'paid') { return [$open, $overdue]; } $payments = 0; - if ($model->$status_field == 'partial') { + if ($model->status == 'partial') { foreach ($model->transactions as $transaction) { $payments += $transaction->getAmountConvertedToDefault(); } diff --git a/app/BulkActions/Purchases/Bills.php b/app/BulkActions/Purchases/Bills.php index 37e0a0a5f..ff97a6f65 100644 --- a/app/BulkActions/Purchases/Bills.php +++ b/app/BulkActions/Purchases/Bills.php @@ -34,7 +34,7 @@ class Bills extends BulkAction $bills = $this->getSelectedRecords($request); foreach ($bills as $bill) { - $bill->bill_status_code = 'received'; + $bill->status = 'received'; $bill->save(); $description = trans('bills.mark_recevied'); diff --git a/app/Exports/Purchases/Sheets/BillHistories.php b/app/Exports/Purchases/Sheets/BillHistories.php index bdc6021b6..e0703bd0f 100644 --- a/app/Exports/Purchases/Sheets/BillHistories.php +++ b/app/Exports/Purchases/Sheets/BillHistories.php @@ -33,7 +33,7 @@ class BillHistories implements FromCollection, ShouldAutoSize, WithHeadings, Wit { return [ $model->bill_id, - $model->status_code, + $model->status, $model->notify, $model->description, ]; @@ -43,7 +43,7 @@ class BillHistories implements FromCollection, ShouldAutoSize, WithHeadings, Wit { return [ 'bill_id', - 'status_code', + 'status', 'notify', 'description', ]; @@ -53,4 +53,4 @@ class BillHistories implements FromCollection, ShouldAutoSize, WithHeadings, Wit { return 'bill_histories'; } -} \ No newline at end of file +} diff --git a/app/Exports/Purchases/Sheets/Bills.php b/app/Exports/Purchases/Sheets/Bills.php index 1a98909fb..14565e0b6 100644 --- a/app/Exports/Purchases/Sheets/Bills.php +++ b/app/Exports/Purchases/Sheets/Bills.php @@ -34,7 +34,7 @@ class Bills implements FromCollection, ShouldAutoSize, WithHeadings, WithMapping return [ $model->bill_number, $model->order_number, - $model->bill_status_code, + $model->status, $model->billed_at, $model->due_at, $model->amount, @@ -57,7 +57,7 @@ class Bills implements FromCollection, ShouldAutoSize, WithHeadings, WithMapping return [ 'bill_number', 'order_number', - 'bill_status_code', + 'status', 'billed_at', 'due_at', 'amount', diff --git a/app/Exports/Sales/Sheets/InvoiceHistories.php b/app/Exports/Sales/Sheets/InvoiceHistories.php index 618453e8f..3de04f568 100644 --- a/app/Exports/Sales/Sheets/InvoiceHistories.php +++ b/app/Exports/Sales/Sheets/InvoiceHistories.php @@ -33,7 +33,7 @@ class InvoiceHistories implements FromCollection, ShouldAutoSize, WithHeadings, { return [ $model->invoice_id, - $model->status_code, + $model->status, $model->notify, $model->description, ]; @@ -43,7 +43,7 @@ class InvoiceHistories implements FromCollection, ShouldAutoSize, WithHeadings, { return [ 'invoice_id', - 'status_code', + 'status', 'notify', 'description', ]; @@ -53,4 +53,4 @@ class InvoiceHistories implements FromCollection, ShouldAutoSize, WithHeadings, { return 'invoice_histories'; } -} \ No newline at end of file +} diff --git a/app/Exports/Sales/Sheets/Invoices.php b/app/Exports/Sales/Sheets/Invoices.php index 03aab856d..723ea0258 100644 --- a/app/Exports/Sales/Sheets/Invoices.php +++ b/app/Exports/Sales/Sheets/Invoices.php @@ -34,7 +34,7 @@ class Invoices implements FromCollection, ShouldAutoSize, WithHeadings, WithMapp return [ $model->invoice_number, $model->order_number, - $model->invoice_status_code, + $model->status, $model->invoiced_at, $model->due_at, $model->amount, @@ -57,7 +57,7 @@ class Invoices implements FromCollection, ShouldAutoSize, WithHeadings, WithMapp return [ 'invoice_number', 'order_number', - 'invoice_status_code', + 'status', 'invoiced_at', 'due_at', 'amount', diff --git a/app/Http/Controllers/Portal/Dashboard.php b/app/Http/Controllers/Portal/Dashboard.php index 5f4b84018..1923c69c3 100644 --- a/app/Http/Controllers/Portal/Dashboard.php +++ b/app/Http/Controllers/Portal/Dashboard.php @@ -40,7 +40,7 @@ class Dashboard extends Controller $unpaid = $paid = $overdue = $partial_paid = []; foreach ($invoices as $invoice) { - switch ($invoice->invoice_status_code) { + switch ($invoice->status) { case 'paid': $paid[] = $invoice; break; diff --git a/app/Http/Controllers/Portal/Invoices.php b/app/Http/Controllers/Portal/Invoices.php index 87a49f2d6..90f4f34bb 100644 --- a/app/Http/Controllers/Portal/Invoices.php +++ b/app/Http/Controllers/Portal/Invoices.php @@ -6,18 +6,18 @@ use App\Abstracts\Http\Controller; use App\Models\Banking\Account; use App\Models\Common\Contact; use App\Models\Sale\Invoice; -use App\Models\Sale\InvoiceStatus; use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Traits\Currencies; use App\Traits\DateTime; +use App\Traits\Sales; use App\Traits\Uploads; use App\Utilities\Modules; use Illuminate\Support\Facades\URL; class Invoices extends Controller { - use DateTime, Currencies, Uploads; + use DateTime, Currencies, Sales, Uploads; /** * Display a listing of the resource. @@ -32,10 +32,7 @@ class Invoices extends Controller $categories = collect(Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id')); - $statuses = collect(InvoiceStatus::get()->each(function ($item) { - $item->name = trans('invoices.status.' . $item->code); - return $item; - })->pluck('name', 'code')); + $statuses = $this->getInvoiceStatuses(); return view('portal.invoices.index', compact('invoices', 'categories', 'statuses')); } diff --git a/app/Http/Controllers/Purchases/Bills.php b/app/Http/Controllers/Purchases/Bills.php index 26eb7bd6f..4f018ddd6 100644 --- a/app/Http/Controllers/Purchases/Bills.php +++ b/app/Http/Controllers/Purchases/Bills.php @@ -15,7 +15,6 @@ use App\Jobs\Purchase\UpdateBill; use App\Models\Banking\Account; use App\Models\Common\Contact; use App\Models\Common\Item; -use App\Models\Purchase\BillStatus; use App\Models\Purchase\Bill; use App\Models\Purchase\BillHistory; use App\Models\Setting\Category; @@ -24,12 +23,13 @@ use App\Models\Setting\Tax; use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\DateTime; +use App\Traits\Purchases; use App\Traits\Uploads; use App\Utilities\Modules; class Bills extends Controller { - use Contacts, Currencies, DateTime, Uploads; + use Contacts, Currencies, DateTime, Purchases, Uploads; /** * Display a listing of the resource. @@ -44,10 +44,7 @@ class Bills extends Controller $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); - $statuses = collect(BillStatus::get()->each(function ($item) { - $item->name = trans('bills.status.' . $item->code); - return $item; - })->pluck('name', 'code')); + $statuses = $this->getBillStatuses(); return view('purchases.bills.index', compact('bills', 'vendors', 'categories', 'statuses')); } @@ -270,14 +267,14 @@ class Bills extends Controller */ public function markReceived(Bill $bill) { - $bill->bill_status_code = 'received'; + $bill->status = 'received'; $bill->save(); // Add bill history BillHistory::create([ 'company_id' => $bill->company_id, 'bill_id' => $bill->id, - 'status_code' => 'received', + 'status' => 'received', 'notify' => 0, 'description' => trans('bills.mark_received'), ]); diff --git a/app/Http/Controllers/Purchases/Vendors.php b/app/Http/Controllers/Purchases/Vendors.php index 5f8575060..cf4e83b1b 100644 --- a/app/Http/Controllers/Purchases/Vendors.php +++ b/app/Http/Controllers/Purchases/Vendors.php @@ -59,7 +59,7 @@ class Vendors extends Controller foreach ($bills as $item) { // Already in transactions - if ($item->bill_status_code == 'paid') { + if ($item->status == 'paid') { continue; } diff --git a/app/Http/Controllers/Sales/Customers.php b/app/Http/Controllers/Sales/Customers.php index 517aa7140..845b3164a 100644 --- a/app/Http/Controllers/Sales/Customers.php +++ b/app/Http/Controllers/Sales/Customers.php @@ -60,7 +60,7 @@ class Customers extends Controller foreach ($invoices as $item) { // Already in transactions - if ($item->invoice_status_code == 'paid') { + if ($item->status == 'paid') { continue; } diff --git a/app/Http/Controllers/Sales/Invoices.php b/app/Http/Controllers/Sales/Invoices.php index 3ebd6b537..9d5971034 100644 --- a/app/Http/Controllers/Sales/Invoices.php +++ b/app/Http/Controllers/Sales/Invoices.php @@ -16,7 +16,6 @@ use App\Models\Banking\Account; use App\Models\Common\Contact; use App\Models\Common\Item; use App\Models\Sale\Invoice; -use App\Models\Sale\InvoiceStatus; use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Models\Setting\Tax; @@ -46,10 +45,7 @@ class Invoices extends Controller $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); - $statuses = collect(InvoiceStatus::get()->each(function ($item) { - $item->name = trans('invoices.status.' . $item->code); - return $item; - })->pluck('name', 'code')); + $statuses = $this->getInvoiceStatuses(); return view('sales.invoices.index', compact('invoices', 'customers', 'categories', 'statuses')); } diff --git a/app/Http/Requests/Purchase/Bill.php b/app/Http/Requests/Purchase/Bill.php index f704abcf4..002d0f745 100644 --- a/app/Http/Requests/Purchase/Bill.php +++ b/app/Http/Requests/Purchase/Bill.php @@ -42,7 +42,7 @@ class Bill extends FormRequest return [ 'bill_number' => 'required|string|unique:bills,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL', - 'bill_status_code' => 'required|string', + 'status' => 'required|string', 'billed_at' => 'required|date_format:Y-m-d H:i:s', 'due_at' => 'required|date_format:Y-m-d H:i:s', 'amount' => 'required', diff --git a/app/Http/Requests/Purchase/BillHistory.php b/app/Http/Requests/Purchase/BillHistory.php index 173bb6afd..d5a2f8a05 100644 --- a/app/Http/Requests/Purchase/BillHistory.php +++ b/app/Http/Requests/Purchase/BillHistory.php @@ -25,7 +25,7 @@ class BillHistory extends FormRequest { return [ 'bill_id' => 'required|integer', - 'status_code' => 'required|string', + 'status' => 'required|string', 'notify' => 'required|integer', ]; } diff --git a/app/Http/Requests/Sale/Invoice.php b/app/Http/Requests/Sale/Invoice.php index 9de6e2bce..fb2076920 100644 --- a/app/Http/Requests/Sale/Invoice.php +++ b/app/Http/Requests/Sale/Invoice.php @@ -42,7 +42,7 @@ class Invoice extends FormRequest return [ 'invoice_number' => 'required|string|unique:invoices,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL', - 'invoice_status_code' => 'required|string', + 'status' => 'required|string', 'invoiced_at' => 'required|date_format:Y-m-d H:i:s', 'due_at' => 'required|date_format:Y-m-d H:i:s', 'amount' => 'required', diff --git a/app/Http/Requests/Sale/InvoiceHistory.php b/app/Http/Requests/Sale/InvoiceHistory.php index 68bccec1a..17eee6eba 100644 --- a/app/Http/Requests/Sale/InvoiceHistory.php +++ b/app/Http/Requests/Sale/InvoiceHistory.php @@ -25,7 +25,7 @@ class InvoiceHistory extends FormRequest { return [ 'invoice_id' => 'required|integer', - 'status_code' => 'required|string', + 'status' => 'required|string', 'notify' => 'required|integer', ]; } diff --git a/app/Jobs/Banking/CreateDocumentTransaction.php b/app/Jobs/Banking/CreateDocumentTransaction.php index ac3addd0f..b5a51aa49 100644 --- a/app/Jobs/Banking/CreateDocumentTransaction.php +++ b/app/Jobs/Banking/CreateDocumentTransaction.php @@ -144,7 +144,7 @@ class CreateDocumentTransaction extends Job throw new \Exception($message); } else { - $this->setStatusCode($amount_check, $total_amount_check); + $this->model->status = ($amount_check == $total_amount_check) ? 'paid' : 'partial'; } return true; @@ -189,17 +189,6 @@ class CreateDocumentTransaction extends Job return $paid; } - protected function setStatusCode($amount_check, $total_amount_check) - { - $column = ($this->model instanceof Invoice) ? 'invoice_status_code' : 'bill_status_code'; - - if ($amount_check == $total_amount_check) { - $this->model->$column = 'paid'; - } else { - $this->model->$column = 'partial'; - } - } - protected function createHistory($transaction) { $history_desc = money((double) $transaction->amount, (string) $transaction->currency_code, true)->format() . ' ' . trans_choice('general.payments', 1); diff --git a/app/Jobs/Common/DeleteCompany.php b/app/Jobs/Common/DeleteCompany.php index 3a31eeb22..53cc918a5 100644 --- a/app/Jobs/Common/DeleteCompany.php +++ b/app/Jobs/Common/DeleteCompany.php @@ -32,9 +32,9 @@ class DeleteCompany extends Job $this->authorize(); $this->deleteRelationships($this->company, [ - 'accounts', 'bills', 'bill_histories', 'bill_items', 'bill_item_taxes', 'bill_statuses', 'bill_totals', 'categories', + 'accounts', 'bills', 'bill_histories', 'bill_items', 'bill_item_taxes', 'bill_totals', 'categories', 'contacts', 'currencies', 'dashboards', 'email_templates', 'invoices', 'invoice_histories', 'invoice_items', - 'invoice_item_taxes', 'invoice_statuses', 'invoice_totals', 'items', 'modules', 'module_histories', 'reconciliations', + 'invoice_item_taxes', 'invoice_totals', 'items', 'modules', 'module_histories', 'reconciliations', 'recurring', 'reports', 'settings', 'taxes', 'transactions', 'transfers', 'widgets', ]); diff --git a/app/Jobs/Purchase/CreateBillHistory.php b/app/Jobs/Purchase/CreateBillHistory.php index f516b9db7..3c206c800 100644 --- a/app/Jobs/Purchase/CreateBillHistory.php +++ b/app/Jobs/Purchase/CreateBillHistory.php @@ -39,7 +39,7 @@ class CreateBillHistory extends Job $bill_history = BillHistory::create([ 'company_id' => $this->bill->company_id, 'bill_id' => $this->bill->id, - 'status_code' => $this->bill->bill_status_code, + 'status' => $this->bill->status, 'notify' => $this->notify, 'description' => $description, ]); diff --git a/app/Jobs/Purchase/DuplicateBill.php b/app/Jobs/Purchase/DuplicateBill.php index 24d4f5159..de49f19e7 100644 --- a/app/Jobs/Purchase/DuplicateBill.php +++ b/app/Jobs/Purchase/DuplicateBill.php @@ -33,7 +33,7 @@ class DuplicateBill extends Job BillHistory::create([ 'company_id' => session('company_id'), 'bill_id' => $clone->id, - 'status_code' => 'draft', + 'status' => 'draft', 'notify' => 0, 'description' => trans('messages.success.added', ['type' => $clone->bill_number]), ]); diff --git a/app/Jobs/Purchase/UpdateBill.php b/app/Jobs/Purchase/UpdateBill.php index 879252c91..6b673d723 100644 --- a/app/Jobs/Purchase/UpdateBill.php +++ b/app/Jobs/Purchase/UpdateBill.php @@ -57,7 +57,7 @@ class UpdateBill extends Job unset($this->bill->reconciled); if (($bill_paid) && $this->request['amount'] > $bill_paid) { - $this->request['bill_status_code'] = 'partial'; + $this->request['status'] = 'partial'; } $this->bill->update($this->request->input()); diff --git a/app/Jobs/Sale/CreateInvoiceHistory.php b/app/Jobs/Sale/CreateInvoiceHistory.php index 613f861f5..5ccfe45ea 100644 --- a/app/Jobs/Sale/CreateInvoiceHistory.php +++ b/app/Jobs/Sale/CreateInvoiceHistory.php @@ -39,7 +39,7 @@ class CreateInvoiceHistory extends Job $invoice_history = InvoiceHistory::create([ 'company_id' => $this->invoice->company_id, 'invoice_id' => $this->invoice->id, - 'status_code' => $this->invoice->invoice_status_code, + 'status' => $this->invoice->status, 'notify' => $this->notify, 'description' => $description, ]); diff --git a/app/Jobs/Sale/UpdateInvoice.php b/app/Jobs/Sale/UpdateInvoice.php index 900dc1d08..344534d2c 100644 --- a/app/Jobs/Sale/UpdateInvoice.php +++ b/app/Jobs/Sale/UpdateInvoice.php @@ -57,7 +57,7 @@ class UpdateInvoice extends Job unset($this->invoice->reconciled); if (($invoice_paid) && $this->request['amount'] > $invoice_paid) { - $this->request['invoice_status_code'] = 'partial'; + $this->request['status'] = 'partial'; } $this->invoice->update($this->request->all()); diff --git a/app/Listeners/Sale/MarkInvoiceSent.php b/app/Listeners/Sale/MarkInvoiceSent.php index 0fec48916..a93a79e8b 100644 --- a/app/Listeners/Sale/MarkInvoiceSent.php +++ b/app/Listeners/Sale/MarkInvoiceSent.php @@ -16,8 +16,8 @@ class MarkInvoiceSent public function handle(Event $event) { // Mark invoice as sent - if ($event->invoice->invoice_status_code != 'partial') { - $event->invoice->invoice_status_code = 'sent'; + if ($event->invoice->status != 'partial') { + $event->invoice->status = 'sent'; $event->invoice->save(); } @@ -26,7 +26,7 @@ class MarkInvoiceSent InvoiceHistory::create([ 'company_id' => $event->invoice->company_id, 'invoice_id' => $event->invoice->id, - 'status_code' => 'sent', + 'status' => 'sent', 'notify' => 0, 'description' => trans('invoices.mark_sent'), ]); diff --git a/app/Listeners/Sale/MarkInvoiceViewed.php b/app/Listeners/Sale/MarkInvoiceViewed.php index 3781c23fe..e7d57ad95 100644 --- a/app/Listeners/Sale/MarkInvoiceViewed.php +++ b/app/Listeners/Sale/MarkInvoiceViewed.php @@ -16,13 +16,13 @@ class MarkInvoiceViewed { $invoice = $event->invoice; - if ($invoice->invoice_status_code != 'sent') { + if ($invoice->status != 'sent') { return; } unset($invoice->paid); - $invoice->invoice_status_code = 'viewed'; + $invoice->status = 'viewed'; $invoice->save(); } } diff --git a/app/Models/Common/Company.php b/app/Models/Common/Company.php index 93108cbc1..bc078937f 100644 --- a/app/Models/Common/Company.php +++ b/app/Models/Common/Company.php @@ -63,11 +63,6 @@ class Company extends Eloquent return $this->hasMany('App\Models\Purchase\BillItemTax'); } - public function bill_statuses() - { - return $this->hasMany('App\Models\Purchase\BillStatus'); - } - public function bill_totals() { return $this->hasMany('App\Models\Purchase\BillTotal'); @@ -133,11 +128,6 @@ class Company extends Eloquent return $this->hasMany('App\Models\Sale\InvoiceItemTax'); } - public function invoice_statuses() - { - return $this->hasMany('App\Models\Sale\InvoiceStatus'); - } - public function invoice_totals() { return $this->hasMany('App\Models\Sale\InvoiceTotal'); diff --git a/app/Models/Purchase/Bill.php b/app/Models/Purchase/Bill.php index e925d679c..2fb1e2e20 100644 --- a/app/Models/Purchase/Bill.php +++ b/app/Models/Purchase/Bill.php @@ -23,7 +23,7 @@ class Bill extends Model * * @var array */ - protected $appends = ['attachment', 'amount_without_tax', 'discount', 'paid']; + protected $appends = ['attachment', 'amount_without_tax', 'discount', 'paid', 'status_label']; protected $dates = ['deleted_at', 'billed_at', 'due_at']; @@ -32,14 +32,14 @@ class Bill extends Model * * @var array */ - protected $fillable = ['company_id', 'bill_number', 'order_number', 'bill_status_code', 'billed_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'contact_id', 'contact_name', 'contact_email', 'contact_tax_number', 'contact_phone', 'contact_address', 'notes', 'category_id', 'parent_id']; + protected $fillable = ['company_id', 'bill_number', 'order_number', 'status', 'billed_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'contact_id', 'contact_name', 'contact_email', 'contact_tax_number', 'contact_phone', 'contact_address', 'notes', 'category_id', 'parent_id']; /** * Sortable columns. * * @var array */ - public $sortable = ['bill_number', 'contact_name', 'amount', 'status.name', 'billed_at', 'due_at', 'bill_status_code']; + public $sortable = ['bill_number', 'contact_name', 'amount', 'status', 'billed_at', 'due_at']; /** * Clonable relationships. @@ -83,11 +83,6 @@ class Bill extends Model return $this->morphOne('App\Models\Common\Recurring', 'recurable'); } - public function status() - { - return $this->belongsTo('App\Models\Purchase\BillStatus', 'bill_status_code', 'code'); - } - public function totals() { return $this->hasMany('App\Models\Purchase\BillTotal'); @@ -110,22 +105,22 @@ class Bill extends Model public function scopeAccrued($query) { - return $query->where('bill_status_code', '<>', 'draft'); + return $query->where('status', '<>', 'draft'); } public function scopePaid($query) { - return $query->where('bill_status_code', '=', 'paid'); + return $query->where('status', '=', 'paid'); } public function scopeNotPaid($query) { - return $query->where('bill_status_code', '<>', 'paid'); + return $query->where('status', '<>', 'paid'); } public function onCloning($src, $child = null) { - $this->bill_status_code = 'draft'; + $this->status = 'draft'; } /** @@ -256,4 +251,30 @@ class Bill extends Model return $paid; } + + /** + * Get the status label. + * + * @return string + */ + public function getLabelAttribute() + { + switch ($this->code) { + case 'paid': + $label = 'success'; + break; + case 'delete': + $label = 'danger'; + break; + case 'partial': + case 'received': + $label = 'warning'; + break; + default: + $label = 'info'; + break; + } + + return $label; + } } diff --git a/app/Models/Purchase/BillHistory.php b/app/Models/Purchase/BillHistory.php index 3219fd9dc..df7bb5915 100644 --- a/app/Models/Purchase/BillHistory.php +++ b/app/Models/Purchase/BillHistory.php @@ -17,15 +17,10 @@ class BillHistory extends Model * * @var array */ - protected $fillable = ['company_id', 'bill_id', 'status_code', 'notify', 'description']; + protected $fillable = ['company_id', 'bill_id', 'status', 'notify', 'description']; public function bill() { return $this->belongsTo('App\Models\Purchase\Bill'); } - - public function status() - { - return $this->belongsTo('App\Models\Purchase\BillStatus', 'status_code', 'code'); - } } diff --git a/app/Models/Purchase/BillStatus.php b/app/Models/Purchase/BillStatus.php deleted file mode 100644 index c3f38e3cf..000000000 --- a/app/Models/Purchase/BillStatus.php +++ /dev/null @@ -1,51 +0,0 @@ -code) { - case 'paid': - $label = 'success'; - break; - case 'delete': - $label = 'danger'; - break; - case 'partial': - case 'received': - $label = 'warning'; - break; - default: - $label = 'info'; - break; - } - - return $label; - } -} diff --git a/app/Models/Sale/Invoice.php b/app/Models/Sale/Invoice.php index 2006c1139..4fea8ea13 100644 --- a/app/Models/Sale/Invoice.php +++ b/app/Models/Sale/Invoice.php @@ -23,7 +23,7 @@ class Invoice extends Model * * @var array */ - protected $appends = ['attachment', 'amount_without_tax', 'discount', 'paid']; + protected $appends = ['attachment', 'amount_without_tax', 'discount', 'paid', 'status_label']; protected $dates = ['deleted_at', 'invoiced_at', 'due_at']; @@ -32,14 +32,14 @@ class Invoice extends Model * * @var array */ - protected $fillable = ['company_id', 'invoice_number', 'order_number', 'invoice_status_code', 'invoiced_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'contact_id', 'contact_name', 'contact_email', 'contact_tax_number', 'contact_phone', 'contact_address', 'notes', 'category_id', 'parent_id', 'footer']; + protected $fillable = ['company_id', 'invoice_number', 'order_number', 'status', 'invoiced_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'contact_id', 'contact_name', 'contact_email', 'contact_tax_number', 'contact_phone', 'contact_address', 'notes', 'category_id', 'parent_id', 'footer']; /** * Sortable columns. * * @var array */ - public $sortable = ['invoice_number', 'contact_name', 'amount', 'status' , 'invoiced_at', 'due_at', 'invoice_status_code']; + public $sortable = ['invoice_number', 'contact_name', 'amount', 'status' , 'invoiced_at', 'due_at']; protected $reconciled_amount = []; @@ -90,11 +90,6 @@ class Invoice extends Model return $this->morphOne('App\Models\Common\Recurring', 'recurable'); } - public function status() - { - return $this->belongsTo('App\Models\Sale\InvoiceStatus', 'invoice_status_code', 'code'); - } - public function totals() { return $this->hasMany('App\Models\Sale\InvoiceTotal'); @@ -117,22 +112,22 @@ class Invoice extends Model public function scopeAccrued($query) { - return $query->where('invoice_status_code', '<>', 'draft'); + return $query->where('status', '<>', 'draft'); } public function scopePaid($query) { - return $query->where('invoice_status_code', '=', 'paid'); + return $query->where('status', '=', 'paid'); } public function scopeNotPaid($query) { - return $query->where('invoice_status_code', '<>', 'paid'); + return $query->where('status', '<>', 'paid'); } public function onCloning($src, $child = null) { - $this->invoice_status_code = 'draft'; + $this->status = 'draft'; $this->invoice_number = $this->getNextInvoiceNumber(); } @@ -264,4 +259,30 @@ class Invoice extends Model return $paid; } + + /** + * Get the status label. + * + * @return string + */ + public function getStatusLabelAttribute() + { + switch ($this->status) { + case 'paid': + $label = 'success'; + break; + case 'delete': + $label = 'danger'; + break; + case 'partial': + case 'sent': + $label = 'warning'; + break; + default: + $label = 'info'; + break; + } + + return $label; + } } diff --git a/app/Models/Sale/InvoiceHistory.php b/app/Models/Sale/InvoiceHistory.php index e2424d903..64a4043c7 100644 --- a/app/Models/Sale/InvoiceHistory.php +++ b/app/Models/Sale/InvoiceHistory.php @@ -7,7 +7,6 @@ use App\Traits\Currencies; class InvoiceHistory extends Model { - use Currencies; protected $table = 'invoice_histories'; @@ -17,15 +16,10 @@ class InvoiceHistory extends Model * * @var array */ - protected $fillable = ['company_id', 'invoice_id', 'status_code', 'notify', 'description']; + protected $fillable = ['company_id', 'invoice_id', 'status', 'notify', 'description']; public function invoice() { return $this->belongsTo('App\Models\Sale\Invoice'); } - - public function status() - { - return $this->belongsTo('App\Models\Sale\InvoiceStatus', 'status_code', 'code'); - } } diff --git a/app/Models/Sale/InvoiceStatus.php b/app/Models/Sale/InvoiceStatus.php deleted file mode 100644 index cbe4dc023..000000000 --- a/app/Models/Sale/InvoiceStatus.php +++ /dev/null @@ -1,51 +0,0 @@ -code) { - case 'paid': - $label = 'success'; - break; - case 'delete': - $label = 'danger'; - break; - case 'partial': - case 'sent': - $label = 'warning'; - break; - default: - $label = 'info'; - break; - } - - return $label; - } -} diff --git a/app/Notifications/Portal/PaymentReceived.php b/app/Notifications/Portal/PaymentReceived.php index 5d3afa07e..001f4575c 100644 --- a/app/Notifications/Portal/PaymentReceived.php +++ b/app/Notifications/Portal/PaymentReceived.php @@ -100,7 +100,7 @@ class PaymentReceived extends Notification $this->invoice->invoice_number, money($this->invoice->amount, $this->invoice->currency_code, true), $this->invoice->due_at, - trans('invoices.status.' . $this->invoice->invoice_status_code), + trans('invoices.statuses.' . $this->invoice->status), URL::signedRoute('signed.invoices.show', [$this->invoice->id, 'company_id' => $this->invoice->company_id]), route('invoices.show', $this->invoice->id), route('portal.invoices.show', $this->invoice->id), diff --git a/app/Observers/Transaction.php b/app/Observers/Transaction.php index 14ab91a7a..10a94db78 100644 --- a/app/Observers/Transaction.php +++ b/app/Observers/Transaction.php @@ -32,7 +32,7 @@ class Transaction { $invoice = $transaction->invoice; - $invoice->invoice_status_code = ($invoice->transactions->count() > 1) ? 'partial' : 'sent'; + $invoice->status = ($invoice->transactions->count() > 1) ? 'partial' : 'sent'; $invoice->save(); @@ -43,7 +43,7 @@ class Transaction { $bill = $transaction->bill; - $bill->bill_status_code = ($bill->transactions->count() > 1) ? 'partial' : 'received'; + $bill->status = ($bill->transactions->count() > 1) ? 'partial' : 'received'; $bill->save(); diff --git a/app/Traits/Purchases.php b/app/Traits/Purchases.php new file mode 100644 index 000000000..beb1a0184 --- /dev/null +++ b/app/Traits/Purchases.php @@ -0,0 +1,33 @@ +each(function ($code) { + $item = new \stdClass(); + $item->code = $code; + $item->name = trans('bills.statuses.' . $code); + + return $item; + }); + + return $statuses; + } +} diff --git a/app/Traits/Sales.php b/app/Traits/Sales.php index 3b81c1e05..d4d9b9515 100644 --- a/app/Traits/Sales.php +++ b/app/Traits/Sales.php @@ -30,4 +30,33 @@ trait Sales setting(['invoice.number_next' => $next]); setting()->save(); } -} \ No newline at end of file + + /** + * Get a collection invoice statuses + * + * @return Collection + */ + public function getInvoiceStatuses() + { + $list = [ + 'draft', + 'sent', + 'viewed', + 'approved', + 'partial', + 'paid', + 'overdue', + 'unpaid', + ]; + + $statuses = collect($list)->each(function ($code) { + $item = new \stdClass(); + $item->code = $code; + $item->name = trans('invoices.statuses.' . $code); + + return $item; + }); + + return $statuses; + } +} diff --git a/app/Transformers/Purchase/Bill.php b/app/Transformers/Purchase/Bill.php index c08d67f2b..099dc5733 100644 --- a/app/Transformers/Purchase/Bill.php +++ b/app/Transformers/Purchase/Bill.php @@ -13,7 +13,7 @@ class Bill extends TransformerAbstract /** * @var array */ - protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'status', 'transactions']; + protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'transactions']; /** * @param Model $model @@ -26,7 +26,7 @@ class Bill extends TransformerAbstract 'company_id' => $model->company_id, 'bill_number' => $model->bill_number, 'order_number' => $model->order_number, - 'bill_status_code' => $model->invoice_status_code, + 'status' => $model->status, 'billed_at' => $model->billed_at ? $model->billed_at->toIso8601String() : '', 'due_at' => $model->due_at ? $model->due_at->toIso8601String() : '', 'amount' => $model->amount, @@ -81,15 +81,6 @@ class Bill extends TransformerAbstract return $this->collection($model->items, new BillItems()); } - /** - * @param Model $model - * @return \League\Fractal\Resource\Item - */ - public function includeStatus(Model $model) - { - return $this->item($model->status, new BillStatus()); - } - /** * @param Model $model * @return \League\Fractal\Resource\Collection diff --git a/app/Transformers/Purchase/BillHistories.php b/app/Transformers/Purchase/BillHistories.php index c6e0026d9..ce31b6b8e 100644 --- a/app/Transformers/Purchase/BillHistories.php +++ b/app/Transformers/Purchase/BillHistories.php @@ -17,7 +17,7 @@ class BillHistories extends TransformerAbstract 'id' => $model->id, 'company_id' => $model->company_id, 'bill_id' => $model->bill_id, - 'status_code' => $model->status_code, + 'status' => $model->status, 'notify' => $model->notify, 'description' => $model->description, 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '', diff --git a/app/Transformers/Purchase/BillStatus.php b/app/Transformers/Purchase/BillStatus.php deleted file mode 100644 index c5d42cfa2..000000000 --- a/app/Transformers/Purchase/BillStatus.php +++ /dev/null @@ -1,25 +0,0 @@ - $model->id, - 'company_id' => $model->company_id, - 'name' => $model->name, - 'code' => $model->code, - 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '', - 'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '', - ]; - } -} diff --git a/app/Transformers/Sale/Invoice.php b/app/Transformers/Sale/Invoice.php index 6899c2203..2cfc4ff4e 100644 --- a/app/Transformers/Sale/Invoice.php +++ b/app/Transformers/Sale/Invoice.php @@ -13,7 +13,7 @@ class Invoice extends TransformerAbstract /** * @var array */ - protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'status', 'transactions']; + protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'transactions']; /** * @param Model $model @@ -26,7 +26,7 @@ class Invoice extends TransformerAbstract 'company_id' => $model->company_id, 'invoice_number' => $model->invoice_number, 'order_number' => $model->order_number, - 'invoice_status_code' => $model->invoice_status_code, + 'status' => $model->status, 'invoiced_at' => $model->invoiced_at ? $model->invoiced_at->toIso8601String() : '', 'due_at' => $model->due_at ? $model->due_at->toIso8601String() : '', 'amount' => $model->amount, @@ -81,15 +81,6 @@ class Invoice extends TransformerAbstract return $this->collection($model->items, new InvoiceItems()); } - /** - * @param Model $model - * @return \League\Fractal\Resource\Item - */ - public function includeStatus(Model $model) - { - return $this->item($model->status, new InvoiceStatus()); - } - /** * @param Model $model * @return \League\Fractal\Resource\Collection diff --git a/app/Transformers/Sale/InvoiceHistories.php b/app/Transformers/Sale/InvoiceHistories.php index 4f2fdb738..0dc317b4c 100644 --- a/app/Transformers/Sale/InvoiceHistories.php +++ b/app/Transformers/Sale/InvoiceHistories.php @@ -17,7 +17,7 @@ class InvoiceHistories extends TransformerAbstract 'id' => $model->id, 'company_id' => $model->company_id, 'invoice_id' => $model->invoice_id, - 'status_code' => $model->status_code, + 'status' => $model->status, 'notify' => $model->notify, 'description' => $model->description, 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '', diff --git a/app/Transformers/Sale/InvoiceStatus.php b/app/Transformers/Sale/InvoiceStatus.php deleted file mode 100644 index 3451cfa9d..000000000 --- a/app/Transformers/Sale/InvoiceStatus.php +++ /dev/null @@ -1,25 +0,0 @@ - $model->id, - 'company_id' => $model->company_id, - 'name' => $model->name, - 'code' => $model->code, - 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '', - 'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '', - ]; - } -} diff --git a/config/columnsortable.php b/config/columnsortable.php index 8b7a2f4aa..460901031 100644 --- a/config/columnsortable.php +++ b/config/columnsortable.php @@ -7,7 +7,7 @@ return [ */ 'columns' => [ 'alpha' => [ - 'rows' => ['name', 'contact_name', 'customer_name', 'vendor_name', 'display_name', 'company_name', 'domain', 'email', 'description', 'code', 'type', 'status', 'vendor', 'account', 'bill_status_code', 'invoice_status_code'], + 'rows' => ['name', 'contact_name', 'customer_name', 'vendor_name', 'display_name', 'company_name', 'domain', 'email', 'description', 'code', 'type', 'status', 'vendor', 'account'], 'class' => 'fas fa-sort-alpha', ], 'amount' => [ diff --git a/config/search-string.php b/config/search-string.php index 1f49d1f94..0d23ba612 100644 --- a/config/search-string.php +++ b/config/search-string.php @@ -146,7 +146,7 @@ return [ 'columns' => [ 'bill_number' => ['searchable' => true], 'order_number' => ['searchable' => true], - 'bill_status_code', + 'status', 'billed_at' => ['date' => true], 'due_at' => ['date' => true], 'amount', @@ -166,7 +166,7 @@ return [ 'columns' => [ 'invoice_number' => ['searchable' => true], 'order_number' => ['searchable' => true], - 'invoice_status_code', + 'status', 'invoiced_at' => ['date' => true], 'due_at' => ['date' => true], 'amount', diff --git a/database/migrations/2017_09_14_000000_core_v1.php b/database/migrations/2017_09_14_000000_core_v1.php index b543d524c..fd45d6176 100644 --- a/database/migrations/2017_09_14_000000_core_v1.php +++ b/database/migrations/2017_09_14_000000_core_v1.php @@ -556,7 +556,6 @@ class CoreV1 extends Migration Schema::drop('bill_histories'); Schema::drop('bill_items'); Schema::drop('bill_item_taxes'); - Schema::drop('bill_statuses'); Schema::drop('bill_totals'); Schema::drop('categories'); Schema::drop('companies'); @@ -565,7 +564,6 @@ class CoreV1 extends Migration Schema::drop('invoice_histories'); Schema::drop('invoice_items'); Schema::drop('invoice_item_taxes'); - Schema::drop('invoice_statuses'); Schema::drop('invoice_totals'); Schema::drop('items'); Schema::drop('jobs'); diff --git a/database/migrations/2020_01_08_000000_core_v200.php b/database/migrations/2020_01_08_000000_core_v200.php index 8e65c175f..bea4074bb 100644 --- a/database/migrations/2020_01_08_000000_core_v200.php +++ b/database/migrations/2020_01_08_000000_core_v200.php @@ -41,6 +41,7 @@ class CoreV200 extends Migration }); $rename_bills = [ + 'bill_status_code' => 'status', 'vendor_id' => 'contact_id', 'vendor_name' => 'contact_name', 'vendor_email' => 'contact_email', @@ -55,7 +56,14 @@ class CoreV200 extends Migration }); } + Schema::table('bill_histories', function (Blueprint $table) { + $table->renameColumn('status_code', 'status'); + }); + + Schema::drop('bill_statuses'); + $rename_invoices = [ + 'invoice_status_code' => 'status', 'customer_id' => 'contact_id', 'customer_name' => 'contact_name', 'customer_email' => 'contact_email', @@ -70,6 +78,12 @@ class CoreV200 extends Migration }); } + Schema::table('invoice_histories', function (Blueprint $table) { + $table->renameColumn('status_code', 'status'); + }); + + Schema::drop('invoice_statuses'); + // Dashboards Schema::create('dashboards', function (Blueprint $table) { $table->increments('id'); @@ -129,7 +143,7 @@ class CoreV200 extends Migration $table->boolean('blocked')->default(1); $table->timestamps(); $table->softDeletes(); - + $table->index('ip'); $table->unique(['ip', 'deleted_at']); }); @@ -145,7 +159,7 @@ class CoreV200 extends Migration $table->text('request')->nullable(); $table->timestamps(); $table->softDeletes(); - + $table->index('ip'); }); diff --git a/database/seeds/BillStatuses.php b/database/seeds/BillStatuses.php deleted file mode 100644 index 86ab6b12b..000000000 --- a/database/seeds/BillStatuses.php +++ /dev/null @@ -1,56 +0,0 @@ -create(); - - Model::reguard(); - } - - private function create() - { - $company_id = $this->command->argument('company'); - - $rows = [ - [ - 'company_id' => $company_id, - 'name' => trans('bills.status.draft'), - 'code' => 'draft', - ], - [ - 'company_id' => $company_id, - 'name' => trans('bills.status.received'), - 'code' => 'received', - ], - [ - 'company_id' => $company_id, - 'name' => trans('bills.status.partial'), - 'code' => 'partial', - ], - [ - 'company_id' => $company_id, - 'name' => trans('bills.status.paid'), - 'code' => 'paid', - ], - ]; - - foreach ($rows as $row) { - BillStatus::create($row); - } - } -} diff --git a/database/seeds/CompanySeeder.php b/database/seeds/CompanySeeder.php index 5403c91a3..4df8350ac 100644 --- a/database/seeds/CompanySeeder.php +++ b/database/seeds/CompanySeeder.php @@ -12,11 +12,9 @@ class CompanySeeder extends Seeder public function run() { $this->call(Database\Seeds\Accounts::class); - $this->call(Database\Seeds\BillStatuses::class); $this->call(Database\Seeds\Categories::class); $this->call(Database\Seeds\Currencies::class); $this->call(Database\Seeds\EmailTemplates::class); - $this->call(Database\Seeds\InvoiceStatuses::class); $this->call(Database\Seeds\Modules::class); $this->call(Database\Seeds\Reports::class); $this->call(Database\Seeds\Settings::class); diff --git a/database/seeds/InvoiceStatuses.php b/database/seeds/InvoiceStatuses.php deleted file mode 100644 index 494db7667..000000000 --- a/database/seeds/InvoiceStatuses.php +++ /dev/null @@ -1,66 +0,0 @@ -create(); - - Model::reguard(); - } - - private function create() - { - $company_id = $this->command->argument('company'); - - $rows = [ - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.draft'), - 'code' => 'draft', - ], - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.sent'), - 'code' => 'sent', - ], - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.viewed'), - 'code' => 'viewed', - ], - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.approved'), - 'code' => 'approved', - ], - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.partial'), - 'code' => 'partial', - ], - [ - 'company_id' => $company_id, - 'name' => trans('invoices.status.paid'), - 'code' => 'paid', - ], - ]; - - foreach ($rows as $row) { - InvoiceStatus::create($row); - } - } -} diff --git a/resources/lang/en-GB/bills.php b/resources/lang/en-GB/bills.php index 13360748a..3b634d05a 100644 --- a/resources/lang/en-GB/bills.php +++ b/resources/lang/en-GB/bills.php @@ -35,11 +35,13 @@ return [ 'receive_bill' => 'Receive Bill', 'make_payment' => 'Make Payment', - 'status' => [ + 'statuses' => [ 'draft' => 'Draft', 'received' => 'Received', 'partial' => 'Partial', 'paid' => 'Paid', + 'overdue' => 'Overdue', + 'unpaid' => 'Unpaid', ], 'messages' => [ diff --git a/resources/lang/en-GB/invoices.php b/resources/lang/en-GB/invoices.php index 139c54761..7925ed2f4 100644 --- a/resources/lang/en-GB/invoices.php +++ b/resources/lang/en-GB/invoices.php @@ -37,13 +37,15 @@ return [ 'get_paid' => 'Get Paid', 'accept_payments' => 'Accept Online Payments', - 'status' => [ + 'statuses' => [ 'draft' => 'Draft', 'sent' => 'Sent', 'viewed' => 'Viewed', 'approved' => 'Approved', 'partial' => 'Partial', 'paid' => 'Paid', + 'overdue' => 'Overdue', + 'unpaid' => 'Unpaid', ], 'messages' => [ diff --git a/resources/views/banking/reconciliations/index.blade.php b/resources/views/banking/reconciliations/index.blade.php index 97f1263fc..c2e6c3a6f 100644 --- a/resources/views/banking/reconciliations/index.blade.php +++ b/resources/views/banking/reconciliations/index.blade.php @@ -37,7 +37,7 @@