public function rules()
{
if (!$this->invoice_id || !$this->amount) {
return ['invoice_id' => 'required|numeric|min:1', 'amount' => 'required|numeric|min:0.01'];
}
$invoice = Invoice::scope($this->invoice_id)->invoices()->firstOrFail();
$this->merge(['invoice_id' => $invoice->id, 'client_id' => $invoice->client->id]);
$rules = ['amount' => "required|numeric|between:0.01,{$invoice->balance}"];
if ($this->payment_type_id == PAYMENT_TYPE_CREDIT) {
$rules['payment_type_id'] = 'has_credit:' . $invoice->client->public_id . ',' . $this->amount;
}
return $rules;
}