1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 13:12:50 +01:00

Improvements for payment idempotency

This commit is contained in:
David Bomba 2023-11-07 17:15:50 +11:00
parent 5e1d45436e
commit 1ba1b1b1a3
3 changed files with 6 additions and 3 deletions

View File

@ -96,6 +96,10 @@ class StorePaymentRequest extends Request
$input['date'] = now()->addSeconds($user->company()->timezone()->utc_offset)->format('Y-m-d');
}
if (! isset($input['idempotency_key'])) {
$input['idempotency_key'] = substr(sha1(json_encode($input)).time()."{$input['date']}{$input['amount']}{$input['client_id']}{$user->id}",0,64);
}
$this->replace($input);
}
@ -106,7 +110,6 @@ class StorePaymentRequest extends Request
$rules = [
'amount' => ['numeric', 'bail', new PaymentAmountsBalanceRule(), new ValidCreditsPresentRule($this->all())],
// 'client_id' => 'bail|required|exists:clients,id',
'client_id' => 'bail|required|exists:clients,id,company_id,'.$user->company()->id.',is_deleted,0',
'invoices.*.invoice_id' => 'bail|required|distinct|exists:invoices,id',
'invoices.*.amount' => 'bail|required',
@ -117,7 +120,6 @@ class StorePaymentRequest extends Request
'invoices' => new ValidPayableInvoicesRule(),
'number' => ['nullable', 'bail', Rule::unique('payments')->where('company_id', $user->company()->id)],
'idempotency_key' => ['nullable', 'bail', 'string','max:64', Rule::unique('payments')->where('company_id', $user->company()->id)],
];
if ($this->file('documents') && is_array($this->file('documents'))) {

View File

@ -40,7 +40,7 @@ class UpdateLedger implements ShouldQueue
*/
public function handle() :void
{
nlog("Updating company ledger for client ". $this->company_ledger_id);
// nlog("Updating company ledger for client ". $this->company_ledger_id);
MultiDB::setDb($this->db);

View File

@ -158,6 +158,7 @@ class Payment extends BaseModel
'custom_value3',
'custom_value4',
'category_id',
'idempotency_key',
];
protected $casts = [