diff --git a/app/Console/Commands/BillReminder.php b/app/Console/Commands/BillReminder.php index e06564896..02ddda567 100644 --- a/app/Console/Commands/BillReminder.php +++ b/app/Console/Commands/BillReminder.php @@ -78,5 +78,4 @@ class BillReminder extends Command } } } - } diff --git a/app/Console/Commands/InvoiceReminder.php b/app/Console/Commands/InvoiceReminder.php index e3fcb75d9..f24fe0dc9 100644 --- a/app/Console/Commands/InvoiceReminder.php +++ b/app/Console/Commands/InvoiceReminder.php @@ -69,7 +69,7 @@ class InvoiceReminder extends Command foreach ($invoices as $invoice) { // Notify the customer - if ($invoice->customer) { + if ($invoice->customer && !empty($invoice->customer_email)) { $invoice->customer->notify(new Notification($invoice)); } @@ -83,5 +83,4 @@ class InvoiceReminder extends Command } } } - } diff --git a/app/Http/Controllers/Auth/Users.php b/app/Http/Controllers/Auth/Users.php index 57e75bec8..75933b591 100644 --- a/app/Http/Controllers/Auth/Users.php +++ b/app/Http/Controllers/Auth/Users.php @@ -243,6 +243,7 @@ class Users extends Controller public function autocomplete(ARequest $request) { $user = false; + $data = false; $column = $request['column']; $value = $request['value']; @@ -250,7 +251,7 @@ class Users extends Controller if (!empty($column) && !empty($value)) { switch ($column) { case 'id': - $user = User::find(); + $user = User::find((int) $value); break; case 'email': $user = User::where('email', $value)->first(); @@ -258,12 +259,16 @@ class Users extends Controller default: $user = User::where($column, $value)->first(); } + + $data = $user; + } elseif (!empty($column) && empty($value)) { + $data = trans('validation.required', ['attribute' => $column]); } return response()->json([ - 'errors' => ($user) ? false: true, - 'success' => ($user) ? true: false, - 'data' => $user + 'errors' => ($user) ? false : true, + 'success' => ($user) ? true : false, + 'data' => $data ]); } } diff --git a/app/Http/Controllers/Expenses/Vendors.php b/app/Http/Controllers/Expenses/Vendors.php index 6b06d28be..90c3f8377 100644 --- a/app/Http/Controllers/Expenses/Vendors.php +++ b/app/Http/Controllers/Expenses/Vendors.php @@ -44,6 +44,10 @@ class Vendors extends Controller */ public function store(Request $request) { + if (empty($request['email'])) { + $request['email'] = ''; + } + Vendor::create($request->all()); $message = trans('messages.success.added', ['type' => trans_choice('general.vendors', 1)]); @@ -120,6 +124,10 @@ class Vendors extends Controller */ public function update(Vendor $vendor, Request $request) { + if (empty($request['email'])) { + $request['email'] = ''; + } + $vendor->update($request->all()); $message = trans('messages.success.updated', ['type' => trans_choice('general.vendors', 1)]); @@ -169,6 +177,10 @@ class Vendors extends Controller public function vendor(Request $request) { + if (empty($request['email'])) { + $request['email'] = ''; + } + $vendor = Vendor::create($request->all()); return response()->json($vendor); diff --git a/app/Http/Controllers/Incomes/Customers.php b/app/Http/Controllers/Incomes/Customers.php index 17d9f1abd..ebf317aef 100644 --- a/app/Http/Controllers/Incomes/Customers.php +++ b/app/Http/Controllers/Incomes/Customers.php @@ -46,6 +46,10 @@ class Customers extends Controller public function store(Request $request) { if (empty($request->input('create_user'))) { + if (empty($request['email'])) { + $request['email'] = ''; + } + Customer::create($request->all()); } else { // Check if user exist @@ -112,6 +116,11 @@ class Customers extends Controller foreach ($rows as $row) { $data = $row->toArray(); + + if (empty($data['email'])) { + $data['email'] = ''; + } + $data['company_id'] = session('company_id'); Customer::create($data); @@ -149,6 +158,10 @@ class Customers extends Controller public function update(Customer $customer, Request $request) { if (empty($request->input('create_user'))) { + if (empty($request['email'])) { + $request['email'] = ''; + } + $customer->update($request->all()); } else { // Check if user exist @@ -220,6 +233,10 @@ class Customers extends Controller public function customer(Request $request) { + if (empty($request['email'])) { + $request['email'] = ''; + } + $customer = Customer::create($request->all()); return response()->json($customer); diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index 4535a2c17..859707711 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -489,6 +489,10 @@ class Invoices extends Controller */ public function emailInvoice(Invoice $invoice) { + if (empty($invoice->customer_email)) { + return redirect()->back(); + } + $invoice = $this->prepareInvoice($invoice); $logo = $this->getLogo(); diff --git a/app/Http/Requests/Expense/Vendor.php b/app/Http/Requests/Expense/Vendor.php index b40613165..9f5e76629 100644 --- a/app/Http/Requests/Expense/Vendor.php +++ b/app/Http/Requests/Expense/Vendor.php @@ -23,6 +23,11 @@ class Vendor extends Request */ public function rules() { + $email = ''; + + // Get company id + $company_id = $this->request->get('company_id'); + // Check if store or update if ($this->getMethod() == 'PATCH') { $id = $this->vendor->getAttribute('id'); @@ -30,12 +35,13 @@ class Vendor extends Request $id = null; } - // Get company id - $company_id = $this->request->get('company_id'); + if (!empty($this->request->get('email'))) { + $email = 'email|unique:vendors,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL'; + } return [ 'name' => 'required|string', - 'email' => 'required|email|unique:vendors,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL', + 'email' => $email, 'currency_code' => 'required|string', ]; } diff --git a/app/Http/Requests/Income/Customer.php b/app/Http/Requests/Income/Customer.php index 861524f9c..4d2e97622 100644 --- a/app/Http/Requests/Income/Customer.php +++ b/app/Http/Requests/Income/Customer.php @@ -23,8 +23,12 @@ class Customer extends Request */ public function rules() { + $email = ''; $required = ''; + // Get company id + $company_id = $this->request->get('company_id'); + // Check if store or update if ($this->getMethod() == 'PATCH') { $id = $this->customer->getAttribute('id'); @@ -36,12 +40,13 @@ class Customer extends Request $required = 'required|'; } - // Get company id - $company_id = $this->request->get('company_id'); + if (!empty($this->request->get('email'))) { + $email = 'email|unique:customers,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL'; + } return [ 'name' => 'required|string', - 'email' => 'required|email|unique:customers,NULL,' . $id . ',id,company_id,' . $company_id . ',deleted_at,NULL', + 'email' => $email, 'currency_code' => 'required|string', 'password' => $required . 'confirmed', ]; diff --git a/public/css/app.css b/public/css/app.css index 78f922c22..cb55b99af 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -498,6 +498,18 @@ ul.add-new.nav.navbar-nav.pull-left { background-color: #ffffff; } } + +.text-disabled { + opacity: 0.4; +} + +.tooltip > .tooltip-inner { + background-color: #6da252; +} + +.tooltip.right .tooltip-arrow { + border-right-color: #6da252 !important; +} /* .content-wrapper { overflow: inherit; diff --git a/resources/lang/en-GB/invoices.php b/resources/lang/en-GB/invoices.php index 7f52a170f..d1a62106d 100644 --- a/resources/lang/en-GB/invoices.php +++ b/resources/lang/en-GB/invoices.php @@ -37,8 +37,9 @@ return [ ], 'messages' => [ - 'email_sent' => 'Invoice email has been sent successfully!', - 'marked_sent' => 'Invoice marked as sent successfully!', + 'email_sent' => 'Invoice email has been sent successfully!', + 'marked_sent' => 'Invoice marked as sent successfully!', + 'email_required' => 'No email address for this customer!', ], 'notification' => [ diff --git a/resources/views/expenses/bills/create.blade.php b/resources/views/expenses/bills/create.blade.php index 8b897a4bb..c46071d5f 100644 --- a/resources/views/expenses/bills/create.blade.php +++ b/resources/views/expenses/bills/create.blade.php @@ -290,7 +290,7 @@ modal += ' '; modal += ' '; modal += ' '; - modal += '
{{ trans('validation.required', ['attribute' => 'email']) }}
'); + $('input[name="email"]').focus(); + + return false; + } + $.ajax({ url: '{{ url("auth/users/autocomplete") }}', type: 'GET', dataType: 'JSON', - data: {column: 'email', value: $('input[name="email"]').val()}, + data: {column: 'email', value: email}, beforeSend: function() { + $('input[name="email"]').parent().parent().removeClass('has-error'); + $('input[name="email"]').parent().parent().find('.help-block').remove(); + $('.box-footer .btn').attr('disabled', true); }, complete: function() { @@ -90,6 +106,14 @@ }, success: function(json) { if (json['errors']) { + if (json['data']) { + $('input[name="email"]').parent().parent().addClass('has-error'); + $('input[name="email"]').parent().after('' + json['data'] + '
'); + $('input[name="email"]').focus(); + + return false; + } + $('.col-md-6.password').removeClass('hidden'); } diff --git a/resources/views/incomes/customers/edit.blade.php b/resources/views/incomes/customers/edit.blade.php index 739af59f8..8d7ed7429 100644 --- a/resources/views/incomes/customers/edit.blade.php +++ b/resources/views/incomes/customers/edit.blade.php @@ -14,7 +14,7 @@