diff --git a/app/Console/Commands/CreateTestData.php b/app/Console/Commands/CreateTestData.php index 99ff15054929..b98205e70c2c 100644 --- a/app/Console/Commands/CreateTestData.php +++ b/app/Console/Commands/CreateTestData.php @@ -29,6 +29,7 @@ use App\Models\Expense; use App\Models\Product; use App\Models\Project; use App\Models\Quote; +use App\Models\RecurringInvoice; use App\Models\Task; use App\Models\User; use App\Models\Vendor; @@ -532,7 +533,9 @@ class CreateTestData extends Command $invoice->save(); $invoice->service()->createInvitations()->markSent(); - $this->invoice_repo->markSent($invoice); + if (rand(0, 1)) { + $this->invoice_repo->markSent($invoice); + } if (rand(0, 1)) { $invoice = $invoice->service()->markPaid()->save(); @@ -545,6 +548,9 @@ class CreateTestData extends Command 'documentable_id' => $invoice->id ]); + RecurringInvoice::factory()->create(['user_id' => $invoice->user->id, 'company_id' => $invoice->company->id, 'client_id' => $invoice->client_id]); + + event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars())); } diff --git a/app/Http/Controllers/ClientPortal/PaymentController.php b/app/Http/Controllers/ClientPortal/PaymentController.php index ac451c505805..e4bed3334897 100644 --- a/app/Http/Controllers/ClientPortal/PaymentController.php +++ b/app/Http/Controllers/ClientPortal/PaymentController.php @@ -223,7 +223,7 @@ class PaymentController extends Controller $invoice_totals = $payable_invoices->sum('amount'); $first_invoice = $invoices->first(); $credit_totals = $first_invoice->client->getSetting('use_credits_payment') == 'always' ? $first_invoice->client->service()->getCreditBalance() : 0; - $starting_invoice_amount = $first_invoice->amount; + $starting_invoice_amount = $first_invoice->balance; if ($gateway) { $first_invoice->service()->addGatewayFee($gateway, $payment_method_id, $invoice_totals)->save(); @@ -234,7 +234,7 @@ class PaymentController extends Controller * by adding it as a line item, and then subtract * the starting and finishing amounts of the invoice. */ - $fee_totals = $first_invoice->amount - $starting_invoice_amount; + $fee_totals = $first_invoice->balance - $starting_invoice_amount; if ($gateway) { $tokens = auth()->user()->client->gateway_tokens() diff --git a/app/Services/Ledger/LedgerService.php b/app/Services/Ledger/LedgerService.php index 13498a41c7fd..f905eed815a0 100644 --- a/app/Services/Ledger/LedgerService.php +++ b/app/Services/Ledger/LedgerService.php @@ -28,6 +28,8 @@ class LedgerService { $balance = 0; + \DB::connection(config('database.default'))->beginTransaction(); + $company_ledger = $this->ledger(); if ($company_ledger) { @@ -44,6 +46,8 @@ class LedgerService $this->entity->company_ledger()->save($company_ledger); + \DB::connection(config('database.default'))->commit(); + return $this; } @@ -51,6 +55,8 @@ class LedgerService { $balance = 0; + \DB::connection(config('database.default'))->beginTransaction(); + /* Get the last record for the client and set the current balance*/ $company_ledger = $this->ledger(); @@ -68,12 +74,16 @@ class LedgerService $this->entity->company_ledger()->save($company_ledger); + \DB::connection(config('database.default'))->commit(); + return $this; } public function updateCreditBalance($adjustment, $notes = '') { $balance = 0; + + \DB::connection(config('database.default'))->beginTransaction(); $company_ledger = $this->ledger(); @@ -91,6 +101,8 @@ class LedgerService $this->entity->company_ledger()->save($company_ledger); + \DB::connection(config('database.default'))->commit(); + return $this; } @@ -99,6 +111,7 @@ class LedgerService return CompanyLedger::whereClientId($this->entity->client_id) ->whereCompanyId($this->entity->company_id) ->orderBy('id', 'DESC') + ->lockForUpdate() ->first(); } @@ -109,3 +122,11 @@ class LedgerService return $this->entity; } } + +/* + DB::connection(config('database.default'))->beginTransaction(); + + \DB::connection(config('database.default'))->commit(); + + +*/ diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index 746b3a78878f..7661ce7b37a2 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -141,8 +141,6 @@ class RecurringInvoiceTest extends TestCase ])->put('/api/v1/recurring_invoices/'.$this->encodePrimaryKey($RecurringInvoice->id), $RecurringInvoice_update) ->assertStatus(200); - - $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), 'X-API-TOKEN' => $this->token,