mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 11:07:31 -04:00 
			
		
		
		
	Fixes for ledger adjustments
This commit is contained in:
		
							parent
							
								
									ff4f2f3953
								
							
						
					
					
						commit
						05ea7f092a
					
				| @ -687,8 +687,8 @@ class InvoiceController extends BaseController | |||||||
|                 break; |                 break; | ||||||
|             case 'delete': |             case 'delete': | ||||||
|                 //need to make sure the invoice is cancelled first!!
 |                 //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); |                 $this->invoice_repo->delete($invoice); | ||||||
| 
 | 
 | ||||||
|                 if (! $bulk) { |                 if (! $bulk) { | ||||||
|  | |||||||
| @ -64,7 +64,6 @@ class PaymentRepository extends BaseRepository | |||||||
|      */ |      */ | ||||||
|     private function applyPayment(array $data, Payment $payment): ?Payment |     private function applyPayment(array $data, Payment $payment): ?Payment | ||||||
|     { |     { | ||||||
| nlog($data); |  | ||||||
| 
 | 
 | ||||||
|         $is_existing_payment = true; |         $is_existing_payment = true; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -71,14 +71,15 @@ class HandleRestore extends AbstractService | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         //adjust ledger balance
 |         //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
 |         //adjust paid to dates
 | ||||||
|         $this->invoice->client->service()->updatePaidToDate($this->payment_total)->save(); |         $this->invoice->client->service()->updatePaidToDate($this->payment_total)->save(); | ||||||
| 
 | 
 | ||||||
|         $this->invoice->client->service()->updateBalance($this->invoice->balance)->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(); |         $this->windBackInvoiceNumber(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -36,9 +36,6 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|         if ($this->invoice->is_deleted) { |         if ($this->invoice->is_deleted) { | ||||||
|             return $this->invoice; |             return $this->invoice; | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         // if(in_array($this->invoice->status_id, ['currencies', 'industries', 'languages', 'countries', 'banks']))
 |  | ||||||
|         //     return $this->
 |  | ||||||
|               |               | ||||||
|         $this->cleanup() |         $this->cleanup() | ||||||
|              ->setAdjustmentAmount() |              ->setAdjustmentAmount() | ||||||
| @ -53,25 +50,26 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
| 
 | 
 | ||||||
|     private function adjustLedger() |     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; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function adjustPaidToDate() |     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; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function adjustBalance() |     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; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /* Adjust the payment amounts */ | ||||||
|     private function adjustPayments() |     private function adjustPayments() | ||||||
|     { |     { | ||||||
|         //if total payments = adjustment amount - that means we need to delete the payments as well.
 |         //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) { |         if ($this->adjustment_amount == $this->total_payments) { | ||||||
|             $this->invoice->payments()->update(['payments.deleted_at' => now(), 'payments.is_deleted' => true]); |             $this->invoice->payments()->update(['payments.deleted_at' => now(), 'payments.is_deleted' => true]); | ||||||
|         } else { |         } else { | ||||||
|  | 
 | ||||||
|             //adjust payments down by the amount applied to the invoice payment.
 |             //adjust payments down by the amount applied to the invoice payment.
 | ||||||
|              |              | ||||||
|             $this->invoice->payments->each(function ($payment) { |             $this->invoice->payments->each(function ($payment) { | ||||||
| @ -96,6 +95,12 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|         return $this; |         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() |     private function setAdjustmentAmount() | ||||||
|     { |     { | ||||||
|         foreach ($this->invoice->payments as $payment) { |         foreach ($this->invoice->payments as $payment) { | ||||||
| @ -111,6 +116,12 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|         return $this; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /*  | ||||||
|  |      * | ||||||
|  |      * This sets the invoice number to _deleted | ||||||
|  |      * and also removes the links to existing entities | ||||||
|  |      *  | ||||||
|  |      */ | ||||||
|     private function cleanup() |     private function cleanup() | ||||||
|     { |     { | ||||||
|         $check = false; |         $check = false; | ||||||
| @ -143,7 +154,7 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|         return $number; |         return $number; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |     /* Touches all paymentables as deleted */ | ||||||
|     private function deletePaymentables() |     private function deletePaymentables() | ||||||
|     { |     { | ||||||
|         $this->invoice->payments->each(function ($payment) { |         $this->invoice->payments->each(function ($payment) { | ||||||
|  | |||||||
| @ -47,7 +47,7 @@ class LedgerService | |||||||
|         return $this; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function updatePaymentBalance($adjustment) |     public function updatePaymentBalance($adjustment, $notes = '') | ||||||
|     { |     { | ||||||
|         $balance = 0; |         $balance = 0; | ||||||
| 
 | 
 | ||||||
| @ -63,6 +63,7 @@ class LedgerService | |||||||
|         $company_ledger->adjustment = $adjustment; |         $company_ledger->adjustment = $adjustment; | ||||||
|         $company_ledger->balance = $balance + $adjustment; |         $company_ledger->balance = $balance + $adjustment; | ||||||
|         $company_ledger->activity_id = Activity::UPDATE_PAYMENT; |         $company_ledger->activity_id = Activity::UPDATE_PAYMENT; | ||||||
|  |         $company_ledger->notes = $notes; | ||||||
|         $company_ledger->save(); |         $company_ledger->save(); | ||||||
| 
 | 
 | ||||||
|         $this->entity->company_ledger()->save($company_ledger); |         $this->entity->company_ledger()->save($company_ledger); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user