This commit is contained in:
denisdulici 2018-11-10 15:52:56 +03:00
parent 3b3379833d
commit 17be9fa205
3 changed files with 32 additions and 67 deletions

View File

@ -3,12 +3,9 @@
namespace App\Listeners\Incomes\Invoice; namespace App\Listeners\Incomes\Invoice;
use App\Events\InvoicePaid; use App\Events\InvoicePaid;
use App\Http\Requests\Income\InvoicePayment as PaymentRequest;
use App\Models\Income\Invoice; use App\Jobs\Income\CreateInvoicePayment;
use App\Models\Income\InvoicePayment;
use App\Models\Income\InvoiceHistory;
use App\Notifications\Customer\Invoice as Notification; use App\Notifications\Customer\Invoice as Notification;
use App\Traits\DateTime; use App\Traits\DateTime;
use Date; use Date;
@ -20,40 +17,14 @@ class Paid
* Handle the event. * Handle the event.
* *
* @param $event * @param $event
* @return void * @return array
*/ */
public function handle(InvoicePaid $event) public function handle(InvoicePaid $event)
{ {
$invoice = $event->invoice; $invoice = $event->invoice;
$request = $event->request; $request = $event->request;
$request['invoice_id'] = $invoice->id; $invoice_payment = $this->createPayment($invoice, $request);
if (!isset($request['company_id'])) {
$request['company_id'] = session('company_id');
}
if (!isset($request['account_id'])) {
$request['account_id'] = setting('general.default_account');
}
if (!isset($request['amount'])) {
$request['amount'] = $invoice->amount;
}
if (!isset($request['currency_code'])) {
$request['currency_code'] = $invoice->currency_code;
}
if (!isset($request['currency_rate'])) {
$request['currency_rate'] = $invoice->currency_rate;
}
if (!isset($request['notify'])) {
$request['notify'] = 0;
}
$request['paid_at'] = Date::parse('now')->format('Y-m-d');
if ($request['amount'] > $invoice->amount) { if ($request['amount'] > $invoice->amount) {
$message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]); $message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]);
@ -70,26 +41,6 @@ class Paid
$invoice->save(); $invoice->save();
if (!is_array($request)) {
$invoice_payment = InvoicePayment::create($request->input());
} else {
$invoice_payment = InvoicePayment::create($request);
}
$request['status_code'] = $invoice->invoice_status_code;
$desc_date = Date::parse($request['paid_at'])->format($this->getCompanyDateFormat());
$desc_amount = money((float) $request['amount'], $request['currency_code'], true)->format();
$request['description'] = $desc_date . ' ' . $desc_amount;
if (!is_array($request)) {
$invoice_history = InvoiceHistory::create($request->input());
} else {
$invoice_history = InvoiceHistory::create($request);
}
// Customer add payment on invoice send user notification // Customer add payment on invoice send user notification
foreach ($invoice->company->users as $user) { foreach ($invoice->company->users as $user) {
if (!$user->can('read-notifications')) { if (!$user->can('read-notifications')) {
@ -104,4 +55,27 @@ class Paid
'error' => false, 'error' => false,
]; ];
} }
protected function createPayment($invoice, $request)
{
if (!is_array($request)) {
$request = $request->input();
}
$request['invoice_id'] = $invoice->id;
$request['paid_at'] = Date::parse('now')->format('Y-m-d');
$request['company_id'] = isset($request['company_id']) ? $request['company_id'] : session('company_id');
$request['account_id'] = isset($request['account_id']) ? $request['account_id'] : setting('general.default_account');
$request['payment_method'] = isset($request['payment_method']) ? $request['payment_method'] : setting('general.default_payment_method');
$request['currency_code'] = isset($request['currency_code']) ? $request['currency_code'] : $invoice->currency_code;
$request['currency_rate'] = isset($request['currency_rate']) ? $request['currency_rate'] : $invoice->currency_rate;
$request['notify'] = isset($request['notify']) ? $request['notify'] : 0;
$payment_request = new PaymentRequest();
$payment_request->merge($request);
$invoice_payment = dispatch(new CreateInvoicePayment($payment_request, $invoice));
return $invoice_payment;
}
} }

View File

@ -18,11 +18,6 @@ class Company implements Scope
*/ */
public function apply(Builder $builder, Model $model) public function apply(Builder $builder, Model $model)
{ {
$company_id = session('company_id');
if (empty($company_id)) {
return;
}
$table = $model->getTable(); $table = $model->getTable();
// Skip for specific tables // Skip for specific tables
@ -37,7 +32,7 @@ class Company implements Scope
} }
// Apply company scope // Apply company scope
$builder->where($table . '.company_id', '=', $company_id); $builder->where($table . '.company_id', '=', session('company_id'));
} }
/** /**

View File

@ -48,8 +48,8 @@ class OfflinePayment extends Controller
} }
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* @param Invoice * @param $invoice
* @param PaymentRequest * @param $request
* @return Response * @return Response
*/ */
public function link(Invoice $invoice, PaymentRequest $request) public function link(Invoice $invoice, PaymentRequest $request)
@ -85,14 +85,10 @@ class OfflinePayment extends Controller
flash($message)->success(); flash($message)->success();
$request_invoice_paid = [ $event_response = event(new InvoicePaid($invoice, [
'amount' => $invoice->amount, 'amount' => $invoice->amount,
'currency_code' => $invoice->currency_code,
'currency_rate' => $invoice->currency_rate,
'payment_method' => $request['payment_method'], 'payment_method' => $request['payment_method'],
]; ]));
event(new InvoicePaid($invoice, $request_invoice_paid));
return response()->json([ return response()->json([
'error' => false, 'error' => false,