diff --git a/app/Http/Requests/Payment/StorePaymentRequest.php b/app/Http/Requests/Payment/StorePaymentRequest.php index 3341ddf67833..7fc64f69c179 100644 --- a/app/Http/Requests/Payment/StorePaymentRequest.php +++ b/app/Http/Requests/Payment/StorePaymentRequest.php @@ -68,7 +68,9 @@ class StorePaymentRequest extends Request if (isset($input['credits']) && is_array($input['credits']) !== false) { foreach ($input['credits'] as $key => $value) { if (array_key_exists('credit_id', $input['credits'][$key])) { - $input['credits'][$key]['credit_id'] = $value['credit_id']; + // $input['credits'][$key]['credit_id'] = $value['credit_id']; + $input['credits'][$key]['credit_id'] = $this->decodePrimaryKey($value['credit_id']); + $credits_total += $value['amount']; } } diff --git a/app/Http/ValidationRules/Credit/ValidCreditsRules.php b/app/Http/ValidationRules/Credit/ValidCreditsRules.php index f80b24e5bf48..f745092fe967 100644 --- a/app/Http/ValidationRules/Credit/ValidCreditsRules.php +++ b/app/Http/ValidationRules/Credit/ValidCreditsRules.php @@ -50,11 +50,14 @@ class ValidCreditsRules implements Rule } $unique_array = []; + + $cred_collection = Credit::withTrashed()->whereIn('id', array_column($this->input['credits'], 'credit_id'))->get(); foreach ($this->input['credits'] as $credit) { $unique_array[] = $credit['credit_id']; - $cred = Credit::find($this->decodePrimaryKey($credit['credit_id'])); + // $cred = Credit::find($this->decodePrimaryKey($credit['credit_id'])); + $cred = $cred_collection->firstWhere('id', $credit['credit_id']); if (! $cred) { $this->error_msg = ctrans('texts.credit_not_found'); diff --git a/app/Http/ValidationRules/Payment/ValidInvoicesRules.php b/app/Http/ValidationRules/Payment/ValidInvoicesRules.php index a3360fcd9c58..d432a422723e 100644 --- a/app/Http/ValidationRules/Payment/ValidInvoicesRules.php +++ b/app/Http/ValidationRules/Payment/ValidInvoicesRules.php @@ -51,6 +51,9 @@ class ValidInvoicesRules implements Rule $unique_array = []; + ///// + $inv_collection = Invoice::withTrashed()->whereIn('id', array_column($this->input['invoices'], 'invoice_id'))->get(); + //todo optimize this into a single query foreach ($this->input['invoices'] as $invoice) { $unique_array[] = $invoice['invoice_id']; @@ -61,7 +64,10 @@ class ValidInvoicesRules implements Rule return false; } - $inv = Invoice::withTrashed()->whereId($invoice['invoice_id'])->first(); + ///// + $inv = $inv_collection->firstWhere('id', $invoice['invoice_id']); + + // $inv = Invoice::withTrashed()->whereId($invoice['invoice_id'])->first(); if (! $inv) { $this->error_msg = ctrans('texts.invoice_not_found'); diff --git a/app/Jobs/Ninja/CompanySizeCheck.php b/app/Jobs/Ninja/CompanySizeCheck.php index 4a365a7dad84..c47d3cb65233 100644 --- a/app/Jobs/Ninja/CompanySizeCheck.php +++ b/app/Jobs/Ninja/CompanySizeCheck.php @@ -55,6 +55,8 @@ class CompanySizeCheck implements ShouldQueue private function check() { + nlog("Checking all company sizes"); + Company::where('is_large', false)->withCount(['invoices', 'clients', 'products'])->cursor()->each(function ($company) { if ($company->invoices_count > 500 || $company->products_count > 500 || $company->clients_count > 500) { nlog("Marking company {$company->id} as large"); diff --git a/app/Repositories/PaymentRepository.php b/app/Repositories/PaymentRepository.php index 833c58ba4f81..916267f8ba54 100644 --- a/app/Repositories/PaymentRepository.php +++ b/app/Repositories/PaymentRepository.php @@ -157,12 +157,15 @@ class PaymentRepository extends BaseRepository { if (array_key_exists('credits', $data) && is_array($data['credits'])) { $credit_totals = array_sum(array_column($data['credits'], 'amount')); - $credits = Credit::whereIn('id', $this->transformKeys(array_column($data['credits'], 'credit_id')))->get(); + // $credits = Credit::whereIn('id', $this->transformKeys(array_column($data['credits'], 'credit_id')))->get(); + + $credits = Credit::whereIn('id', array_column($data['credits'], 'credit_id'))->get(); + $payment->credits()->saveMany($credits); //todo optimize into a single query foreach ($data['credits'] as $paid_credit) { - $credit = Credit::withTrashed()->find($this->decodePrimaryKey($paid_credit['credit_id'])); + $credit = Credit::withTrashed()->find($paid_credit['credit_id']); if ($credit) { $credit = $credit->service()->markSent()->save(); diff --git a/tests/Feature/Import/ImportCompanyTest.php b/tests/Feature/Import/ImportCompanyTest.php index 9d5d7f30df51..30f66317a5c3 100644 --- a/tests/Feature/Import/ImportCompanyTest.php +++ b/tests/Feature/Import/ImportCompanyTest.php @@ -78,7 +78,7 @@ class ImportCompanyTest extends TestCase { parent::setUp(); - $this->artisan('db:seed'); + // $this->artisan('db:seed'); $this->withoutMiddleware( ThrottleRequests::class