mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 12:17:32 -04:00 
			
		
		
		
	
						commit
						ce0ebaa63a
					
				| @ -298,7 +298,7 @@ class CheckData extends Command | ||||
|             $invoice_balance = $client->invoices->where('is_deleted', false)->where('status_id', '>', 1)->sum('balance'); | ||||
|             $credit_balance = $client->credits->where('is_deleted', false)->sum('balance'); | ||||
| 
 | ||||
|             $invoice_balance -= $credit_balance; | ||||
|             // $invoice_balance -= $credit_balance;//doesn't make sense to remove the credit amount
 | ||||
| 
 | ||||
|             $ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first(); | ||||
| 
 | ||||
| @ -388,9 +388,9 @@ class CheckData extends Command | ||||
|         foreach (Client::cursor()->where('is_deleted', 0) as $client) { | ||||
|             //$invoice_balance = $client->invoices->where('is_deleted', false)->where('status_id', '>', 1)->sum('balance');
 | ||||
|             $invoice_balance = Invoice::where('client_id', $client->id)->where('is_deleted', false)->where('status_id', '>', 1)->withTrashed()->sum('balance'); | ||||
|             $client_balance = Credit::where('client_id', $client->id)->where('is_deleted', false)->withTrashed()->sum('balance'); | ||||
|             $credit_balance = Credit::where('client_id', $client->id)->where('is_deleted', false)->withTrashed()->sum('balance'); | ||||
| 
 | ||||
|             $invoice_balance -= $client_balance; | ||||
|             // $invoice_balance -= $credit_balance;
 | ||||
| 
 | ||||
|             $ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first(); | ||||
| 
 | ||||
|  | ||||
| @ -331,7 +331,7 @@ class CreateTestData extends Command | ||||
| 
 | ||||
|         $this->info('Creating '.$this->count.' clients'); | ||||
| 
 | ||||
|         for ($x = 0; $x < $this->count * 500; $x++) { | ||||
|         for ($x = 0; $x < $this->count * 200; $x++) { | ||||
|             $z = $x + 1; | ||||
|             $this->info('Creating client # '.$z); | ||||
| 
 | ||||
|  | ||||
| @ -687,8 +687,8 @@ class InvoiceController extends BaseController | ||||
|                 break; | ||||
|             case 'delete': | ||||
|                 //need to make sure the invoice is cancelled first!!
 | ||||
|                 //$invoice->service()->handleCancellation()->save();
 | ||||
| 
 | ||||
|                 //$invoice->service()->handleCancellation()s->save();
 | ||||
| nlog("inside delete"); | ||||
|                 $this->invoice_repo->delete($invoice); | ||||
| 
 | ||||
|                 if (! $bulk) { | ||||
|  | ||||
| @ -53,21 +53,40 @@ class ValidInvoicesRules implements Rule | ||||
|          | ||||
|         //todo optimize this into a single query
 | ||||
|         foreach ($this->input['invoices'] as $invoice) { | ||||
| 
 | ||||
|             $unique_array[] = $invoice['invoice_id']; | ||||
| 
 | ||||
|             $inv = Invoice::whereId($invoice['invoice_id'])->first(); | ||||
| 
 | ||||
|             if (! $inv) { | ||||
| 
 | ||||
|                 $this->error_msg = 'Invoice not found '; | ||||
| 
 | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             if ($inv->client_id != $this->input['client_id']) { | ||||
| 
 | ||||
|                 $this->error_msg = 'Selected invoices are not from a single client'; | ||||
| 
 | ||||
|                 return false; | ||||
|             } | ||||
| 
 | ||||
|             if($inv->status_id == Invoice::STATUS_DRAFT && $invoice['amount'] <= $inv->amount){ | ||||
|                 //catch here nothing to do - we need this to prevent the last elseif triggering
 | ||||
|             } | ||||
|             else if($inv->status_id == Invoice::STATUS_DRAFT && $invoice['amount'] > $inv->amount){ | ||||
| 
 | ||||
|                 $this->error_msg = 'Amount cannot be greater than invoice balance'; | ||||
| 
 | ||||
|                 return false; | ||||
|             } | ||||
|             else if($invoice['amount'] > $inv->balance) { | ||||
| 
 | ||||
|                 $this->error_msg = 'Amount cannot be greater than invoice balance'; | ||||
| 
 | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (! (array_unique($unique_array) == $unique_array)) { | ||||
|  | ||||
| @ -96,7 +96,7 @@ class ZipInvoices extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->email) | ||||
|                 ->send(new DownloadInvoices(Storage::disk(config('filesystems.default'))->url($path.$file_name), $this->company)); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             // //$this->failed($e);
 | ||||
|         } | ||||
|          | ||||
|         UnlinkFile::dispatch(config('filesystems.default'), $path.$file_name)->delay(now()->addHours(1)); | ||||
|  | ||||
| @ -96,7 +96,7 @@ class EntityFailedSendMailer extends BaseMailerJob implements ShouldQueue | ||||
|                 ->send(new EntityNotificationMailer($mail_obj)); | ||||
|         } catch (\Exception $e) { | ||||
|             nlog("failing in EntityFailedSendMailer"); | ||||
|             $this->failed($e); | ||||
|             //$this->failed($e);
 | ||||
|             $this->logMailError($e->getMessage(), $this->entity->client); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -83,7 +83,7 @@ class EntityPaidMailer extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->user->email) | ||||
|                 ->send(new EntityNotificationMailer($mail_obj)); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             // //$this->failed($e);
 | ||||
|             $this->logMailError($e->getMessage(), $this->payment->client); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -90,7 +90,7 @@ class EntitySentMailer extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->user->email) | ||||
|                 ->send(new EntityNotificationMailer($mail_obj)); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             // //$this->failed($e);
 | ||||
|             $this->logMailError($e->getMessage(), $this->entity->client); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -88,7 +88,7 @@ class EntityViewedMailer extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->user->email) | ||||
|                 ->send(new EntityNotificationMailer($mail_obj)); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             //$this->failed($e);
 | ||||
|             $this->logMailError($e->getMessage(), $this->entity->client); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -73,7 +73,7 @@ class MailRouter extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->to_user->email) | ||||
|                 ->send($this->mailable); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             //$this->failed($e);
 | ||||
|              | ||||
|             if ($this->to_user instanceof ClientContact) { | ||||
|                 $this->logMailError($e->getMessage(), $this->to_user->client); | ||||
|  | ||||
| @ -98,7 +98,7 @@ class PaymentFailureMailer extends BaseMailerJob implements ShouldQueue | ||||
|                     Mail::to($company_user->user->email) | ||||
|                         ->send(new EntityNotificationMailer($mail_obj)); | ||||
|                 } catch (\Exception $e) { | ||||
|                     $this->failed($e); | ||||
|                     //$this->failed($e);
 | ||||
|                     $this->logMailError($e->getMessage(), $this->client); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @ -308,7 +308,7 @@ class SendReminders implements ShouldQueue | ||||
|         $invoice = $invoice->calc()->getInvoice(); | ||||
| 
 | ||||
|         $this->invoice->client->service()->updateBalance($this->invoice->balance - $temp_invoice_balance)->save(); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance - $temp_invoice_balance); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance - $temp_invoice_balance, "Late Fee Adjustment for invoice {$this->invoice->number}"); | ||||
| 
 | ||||
|         return $invoice; | ||||
|     } | ||||
|  | ||||
| @ -84,7 +84,7 @@ class EmailPayment extends BaseMailerJob implements ShouldQueue | ||||
|             } catch (\Exception $e) { | ||||
|                 nlog("mailing failed with message " . $e->getMessage()); | ||||
|                 event(new PaymentWasEmailedAndFailed($this->payment, $this->company, Mail::failures(), Ninja::eventVars())); | ||||
|                 $this->failed($e); | ||||
|                 //$this->failed($e);
 | ||||
|                 return $this->logMailError($e->getMessage(), $this->payment->client); | ||||
|             } | ||||
| 
 | ||||
|  | ||||
| @ -79,7 +79,7 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue | ||||
|             Mail::to($this->new_email) | ||||
|             ->send(new UserNotificationMailer($mail_obj)); | ||||
|         } catch (\Exception $e) { | ||||
|             $this->failed($e); | ||||
|             //$this->failed($e);
 | ||||
|             $this->logMailError($e->getMessage(), $this->company->owner()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -49,10 +49,7 @@ class ClientContact extends Authenticatable implements HasLocalePreference | ||||
|         'hashed_id', | ||||
|     ]; | ||||
| 
 | ||||
|     protected $with = [ | ||||
| //        'client',
 | ||||
| //        'company'
 | ||||
|     ]; | ||||
|     protected $with = []; | ||||
| 
 | ||||
|     protected $casts = [ | ||||
|         'updated_at' => 'timestamp', | ||||
| @ -87,12 +84,6 @@ class ClientContact extends Authenticatable implements HasLocalePreference | ||||
|         'client_id', | ||||
|     ]; | ||||
| 
 | ||||
|     /* Changing the username to id allows us to login() a contact that doesn't have an email address set*/ | ||||
|     public function username() | ||||
|     { | ||||
|         return 'id'; | ||||
|     } | ||||
| 
 | ||||
|     public function getEntityType() | ||||
|     { | ||||
|         return self::class; | ||||
|  | ||||
| @ -264,7 +264,7 @@ class BaseDriver extends AbstractPaymentDriver | ||||
|             if (collect($invoice->line_items)->contains('type_id', '3')) { | ||||
|                 $invoice->service()->toggleFeesPaid()->save(); | ||||
|                 $invoice->client->service()->updateBalance($fee_total)->save(); | ||||
|                 $invoice->ledger()->updateInvoiceBalance($fee_total, $notes = 'Gateway fee adjustment'); | ||||
|                 $invoice->ledger()->updateInvoiceBalance($fee_total, "Gateway fee adjustment for invoice {$invoice->number}"); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
| @ -306,7 +306,7 @@ class BasePaymentDriver | ||||
|             if (collect($invoice->line_items)->contains('type_id', '3')) { | ||||
|                 $invoice->service()->toggleFeesPaid()->save(); | ||||
|                 $invoice->client->service()->updateBalance($fee_total)->save(); | ||||
|                 $invoice->ledger()->updateInvoiceBalance($fee_total, $notes = 'Gateway fee adjustment'); | ||||
|                 $invoice->ledger()->updateInvoiceBalance($fee_total, "Gateway fee adjustment for Invoice {$invoice->number}"); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
| @ -293,7 +293,7 @@ class BaseRepository | ||||
| 
 | ||||
|             if (($state['finished_amount'] != $state['starting_amount']) && ($model->status_id != Invoice::STATUS_DRAFT)) { | ||||
| 
 | ||||
|                 $model->ledger()->updateInvoiceBalance(($state['finished_amount'] - $state['starting_amount'])); | ||||
|                 $model->ledger()->updateInvoiceBalance(($state['finished_amount'] - $state['starting_amount']), "Update adjustment for invoice {$model->number}"); | ||||
|                 $model->client->service()->updateBalance(($state['finished_amount'] - $state['starting_amount']))->save(); | ||||
| 
 | ||||
|             } | ||||
|  | ||||
| @ -58,6 +58,10 @@ class ClientContactRepository extends BaseRepository | ||||
|                 $update_contact->client_id = $client->id; | ||||
|             } | ||||
| 
 | ||||
|             /* We need to set NULL email addresses to blank strings to pass authentication*/ | ||||
|             if(array_key_exists('email', $contact) && is_null($contact['email'])) | ||||
|                 $contact['email'] = ''; | ||||
| 
 | ||||
|             $update_contact->fill($contact); | ||||
| 
 | ||||
|             if (array_key_exists('password', $contact) && strlen($contact['password']) > 1) { | ||||
| @ -77,6 +81,7 @@ class ClientContactRepository extends BaseRepository | ||||
|             $new_contact->contact_key = Str::random(40); | ||||
|             $new_contact->is_primary = true; | ||||
|             $new_contact->confirmed = true; | ||||
|             $new_contact->email = ' '; | ||||
|             $new_contact->save(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -64,7 +64,6 @@ class PaymentRepository extends BaseRepository | ||||
|      */ | ||||
|     private function applyPayment(array $data, Payment $payment): ?Payment | ||||
|     { | ||||
| nlog($data); | ||||
| 
 | ||||
|         $is_existing_payment = true; | ||||
| 
 | ||||
|  | ||||
| @ -136,11 +136,13 @@ class PaymentMethod | ||||
|         foreach ($this->gateways as $gateway) { | ||||
|             foreach ($gateway->driver($this->client)->gatewayTypes() as $type) { | ||||
|                 if (isset($gateway->fees_and_limits) && property_exists($gateway->fees_and_limits, $type)) { | ||||
|                     if ($this->validGatewayForAmount($gateway->fees_and_limits->{$type}, $this->amount)) { | ||||
| 
 | ||||
|                     if ($this->validGatewayForAmount($gateway->fees_and_limits->{$type}, $this->amount) && $gateway->fees_and_limits->{$type}->is_enabled) { | ||||
|                         $this->payment_methods[] = [$gateway->id => $type]; | ||||
|                     } | ||||
| 
 | ||||
|                 } else { | ||||
|                     $this->payment_methods[] = [$gateway->id => $type]; | ||||
|                     //$this->payment_methods[] = [$gateway->id => $type];
 | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -93,10 +93,6 @@ class AddGatewayFee extends AbstractService | ||||
|         /**Refresh Invoice values*/ | ||||
|         $this->invoice = $this->invoice->calc()->getInvoice(); | ||||
| 
 | ||||
|         /*Update client balance*/ // don't increment until we have process the payment!
 | ||||
|         //$this->invoice->client->service()->updateBalance($gateway_fee)->save();
 | ||||
|         //$this->invoice->ledger()->updateInvoiceBalance($gateway_fee, $notes = 'Gateway fee adjustment');
 | ||||
| 
 | ||||
|         return $this->invoice; | ||||
|     } | ||||
| 
 | ||||
| @ -122,10 +118,6 @@ class AddGatewayFee extends AbstractService | ||||
| 
 | ||||
|         $this->invoice = $this->invoice->calc()->getInvoice(); | ||||
| 
 | ||||
|         // $this->invoice->client->service()->updateBalance($gateway_fee)->save();
 | ||||
| 
 | ||||
|         // $this->invoice->ledger()->updateInvoiceBalance($gateway_fee, $notes = 'Discount fee adjustment');
 | ||||
| 
 | ||||
|         return $this->invoice; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -100,11 +100,6 @@ class ApplyPayment extends AbstractService | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // $this->payment
 | ||||
|         //      ->ledger()
 | ||||
|         //      ->updatePaymentBalance($this->payment_amount * -1);
 | ||||
| 
 | ||||
| 
 | ||||
|         $this->payment | ||||
|              ->ledger() | ||||
|              ->updatePaymentBalance($amount_paid); | ||||
|  | ||||
| @ -147,8 +147,8 @@ class AutoBillInvoice extends AbstractService | ||||
|                                   ->save(); | ||||
| 
 | ||||
|         $this->invoice->ledger() | ||||
|                           ->updateInvoiceBalance($amount * -1, 'Invoice payment using Credit') | ||||
|                           ->updateCreditBalance($amount * -1, 'Credits used to pay down Invoice ' . $this->invoice->number) | ||||
|                           ->updateInvoiceBalance($amount * -1, "Invoice {$this->invoice->number} payment using Credit {$current_credit->number}") | ||||
|                           ->updateCreditBalance($amount * -1, "Credit {$current_credit->number} used to pay down Invoice {$this->invoice->number}") | ||||
|                           ->save(); | ||||
| 
 | ||||
|         event(new PaymentWasCreated($payment, $payment->company, Ninja::eventVars())); | ||||
| @ -325,7 +325,7 @@ class AutoBillInvoice extends AbstractService | ||||
| 
 | ||||
|         if ($starting_amount != $this->invoice->amount && $this->invoice->status_id != Invoice::STATUS_DRAFT) { | ||||
|             $this->invoice->client->service()->updateBalance($this->invoice->amount - $starting_amount)->save(); | ||||
|             $this->invoice->ledger()->updateInvoiceBalance($this->invoice->amount - $starting_amount, 'Invoice balance updated after stale gateway fee removed')->save(); | ||||
|             $this->invoice->ledger()->updateInvoiceBalance($this->invoice->amount - $starting_amount, "Invoice {$this->invoice->number} balance updated after stale gateway fee removed")->save(); | ||||
|         } | ||||
| 
 | ||||
|         return $this; | ||||
|  | ||||
| @ -42,7 +42,7 @@ class HandleCancellation extends AbstractService | ||||
|         $this->backupCancellation($adjustment); | ||||
| 
 | ||||
|         //set invoice balance to 0
 | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($adjustment, 'Invoice cancellation'); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($adjustment, "Invoice {$this->invoice->number} cancellation"); | ||||
| 
 | ||||
|         $this->invoice->balance = 0; | ||||
|         $this->invoice = $this->invoice->service()->setStatus(Invoice::STATUS_CANCELLED)->save(); | ||||
| @ -57,11 +57,13 @@ class HandleCancellation extends AbstractService | ||||
| 
 | ||||
|     public function reverse() | ||||
|     { | ||||
|         /* The stored cancelled object - contains the adjustment and status*/ | ||||
|         $cancellation = $this->invoice->backup->cancellation; | ||||
| 
 | ||||
|         /* Will turn the negative cancellation amount to a positive adjustment*/ | ||||
|         $adjustment = $cancellation->adjustment * -1; | ||||
| 
 | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($adjustment, 'Invoice cancellation REVERSAL'); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($adjustment, "Invoice {$this->invoice->number} reversal"); | ||||
| 
 | ||||
|         /* Reverse the invoice status and balance */ | ||||
|         $this->invoice->balance += $adjustment; | ||||
|  | ||||
| @ -71,14 +71,15 @@ class HandleRestore extends AbstractService | ||||
|         } | ||||
| 
 | ||||
|         //adjust ledger balance
 | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance, 'Restored invoice {$this->invoice->number}')->save(); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance, "Restored invoice {$this->invoice->number}")->save(); | ||||
| 
 | ||||
|         //adjust paid to dates
 | ||||
|         $this->invoice->client->service()->updatePaidToDate($this->payment_total)->save(); | ||||
| 
 | ||||
|         $this->invoice->client->service()->updateBalance($this->invoice->balance)->save(); | ||||
| 
 | ||||
|         $this->invoice->ledger()->updatePaymentBalance($this->payment_total, 'Restored payment for invoice {$this->invoice->number}')->save(); | ||||
|         // you only need to touch the ledger ONCE per transaction.
 | ||||
|         // $this->invoice->ledger()->updatePaymentBalance($this->payment_total*-1, "Restored payment for invoice {$this->invoice->number}")->save();
 | ||||
| 
 | ||||
|         $this->windBackInvoiceNumber(); | ||||
| 
 | ||||
|  | ||||
| @ -36,9 +36,6 @@ class MarkInvoiceDeleted extends AbstractService | ||||
|         if ($this->invoice->is_deleted) { | ||||
|             return $this->invoice; | ||||
|         } | ||||
| 
 | ||||
|         // if(in_array($this->invoice->status_id, ['currencies', 'industries', 'languages', 'countries', 'banks']))
 | ||||
|         //     return $this->
 | ||||
|               | ||||
|         $this->cleanup() | ||||
|              ->setAdjustmentAmount() | ||||
| @ -53,25 +50,26 @@ class MarkInvoiceDeleted extends AbstractService | ||||
| 
 | ||||
|     private function adjustLedger() | ||||
|     { | ||||
|         $this->invoice->ledger()->updatePaymentBalance($this->adjustment_amount * -1); | ||||
|         $this->invoice->ledger()->updatePaymentBalance($this->adjustment_amount * -1, 'Invoice Deleted - reducing ledger balance'); //reduces the payment balance by payment totals
 | ||||
| 
 | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     private function adjustPaidToDate() | ||||
|     { | ||||
|         $this->invoice->client->service()->updatePaidToDate($this->adjustment_amount * -1)->save(); | ||||
|         $this->invoice->client->service()->updatePaidToDate($this->adjustment_amount * -1)->save(); //reduces the paid to date by the payment totals
 | ||||
| 
 | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     private function adjustBalance() | ||||
|     { | ||||
|         $this->invoice->client->service()->updateBalance($this->invoice->balance * -1)->save(); | ||||
|         $this->invoice->client->service()->updateBalance($this->invoice->balance * -1)->save(); //reduces the client balance by the invoice amount.
 | ||||
| 
 | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     /* Adjust the payment amounts */ | ||||
|     private function adjustPayments() | ||||
|     { | ||||
|         //if total payments = adjustment amount - that means we need to delete the payments as well.
 | ||||
| @ -79,6 +77,7 @@ class MarkInvoiceDeleted extends AbstractService | ||||
|         if ($this->adjustment_amount == $this->total_payments) { | ||||
|             $this->invoice->payments()->update(['payments.deleted_at' => now(), 'payments.is_deleted' => true]); | ||||
|         } else { | ||||
| 
 | ||||
|             //adjust payments down by the amount applied to the invoice payment.
 | ||||
|              | ||||
|             $this->invoice->payments->each(function ($payment) { | ||||
| @ -96,6 +95,12 @@ class MarkInvoiceDeleted extends AbstractService | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Set the values of two variables | ||||
|      * | ||||
|      * $this->adjustment_amount - sum of the invoice paymentables | ||||
|      * $this->total_payments - sum of the invoice payments | ||||
|      */ | ||||
|     private function setAdjustmentAmount() | ||||
|     { | ||||
|         foreach ($this->invoice->payments as $payment) { | ||||
| @ -111,6 +116,12 @@ class MarkInvoiceDeleted extends AbstractService | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     /*  | ||||
|      * | ||||
|      * This sets the invoice number to _deleted | ||||
|      * and also removes the links to existing entities | ||||
|      *  | ||||
|      */ | ||||
|     private function cleanup() | ||||
|     { | ||||
|         $check = false; | ||||
| @ -143,7 +154,7 @@ class MarkInvoiceDeleted extends AbstractService | ||||
|         return $number; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /* Touches all paymentables as deleted */ | ||||
|     private function deletePaymentables() | ||||
|     { | ||||
|         $this->invoice->payments->each(function ($payment) { | ||||
|  | ||||
| @ -51,7 +51,7 @@ class MarkSent extends AbstractService | ||||
| 
 | ||||
|         $this->client->service()->updateBalance($this->invoice->balance)->save(); | ||||
| 
 | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance); | ||||
|         $this->invoice->ledger()->updateInvoiceBalance($this->invoice->balance, "Invoice {$this->invoice->number} marked as sent."); | ||||
| 
 | ||||
|         event(new InvoiceWasUpdated($this->invoice, $this->invoice->company, Ninja::eventVars())); | ||||
| 
 | ||||
|  | ||||
| @ -47,7 +47,7 @@ class LedgerService | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     public function updatePaymentBalance($adjustment) | ||||
|     public function updatePaymentBalance($adjustment, $notes = '') | ||||
|     { | ||||
|         $balance = 0; | ||||
| 
 | ||||
| @ -63,6 +63,7 @@ class LedgerService | ||||
|         $company_ledger->adjustment = $adjustment; | ||||
|         $company_ledger->balance = $balance + $adjustment; | ||||
|         $company_ledger->activity_id = Activity::UPDATE_PAYMENT; | ||||
|         $company_ledger->notes = $notes; | ||||
|         $company_ledger->save(); | ||||
| 
 | ||||
|         $this->entity->company_ledger()->save($company_ledger); | ||||
|  | ||||
| @ -80,7 +80,7 @@ class DeletePayment | ||||
|         if ($this->payment->invoices()->exists()) { | ||||
|             $this->payment->invoices()->each(function ($paymentable_invoice) { | ||||
|                 $paymentable_invoice->service()->updateBalance($paymentable_invoice->pivot->amount)->save(); | ||||
|                 $paymentable_invoice->ledger()->updateInvoiceBalance($paymentable_invoice->pivot->amount)->save(); | ||||
|                 $paymentable_invoice->ledger()->updateInvoiceBalance($paymentable_invoice->pivot->amount, "Adjusting invoice {$paymentable_invoice->number} due to deletion of Payment {$this->payment->number}")->save(); | ||||
|                 $paymentable_invoice->client->service()->updateBalance($paymentable_invoice->pivot->amount)->save(); | ||||
| 
 | ||||
|                 if ($paymentable_invoice->balance == $paymentable_invoice->amount) { | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|         @include('email.components.header', ['logo' => $logo]) | ||||
|     @endslot | ||||
| 
 | ||||
|     <h1>{{ $title }}</h1> | ||||
|     <p>{{ $title }}</p> | ||||
| 
 | ||||
|     @slot('greeting') | ||||
|         @lang($message) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user