invoice = $invoice; $this->company = $company; } /** * Execute the job. * * * @return void */ public function handle() { MultiDB::setDB($this->company->db); /* Create Payment */ $payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id); $payment->amount = $this->invoice->balance; $payment->status_id = Payment::STATUS_COMPLETED; $payment->client_id = $this->invoice->client_id; $payment->transaction_reference = ctrans('texts.manual_entry'); /* Create a payment relationship to the invoice entity */ $payment->save(); $payment->invoices()->attach($this->invoice->id,[ 'amount' => $payment->amount ]); $this->invoice->updateBalance($payment->amount*-1); /* Update Invoice balance */ event(new PaymentWasCreated($payment, $payment->company)); UpdateCompanyLedgerWithPayment::dispatchNow($payment, ($payment->amount*-1)); UpdateClientBalance::dispatchNow($payment->client, $payment->amount*-1); UpdateClientPaidToDate::dispatchNow($payment->client, $payment->amount); return $this->invoice; } }