fill($data); $credit->save(); $credit->number = $credit->client->getNextCreditNumber($credit->client); if (isset($data['invitations'])) { $invitations = collect($data['invitations']); /* Get array of Keyss which have been removed from the invitations array and soft delete each invitation */ collect($credit->invitations->pluck('key'))->diff($invitations->pluck('key'))->each(function ($invitation) { CreditInvitation::destroy($invitation); }); foreach ($data['invitations'] as $invitation) { $cred = false; if (array_key_exists('key', $invitation)) { $cred = CreditInvitation::whereKey($invitation['key'])->first(); } if (!$cred) { //$invitation['client_contact_id'] = $this->decodePrimaryKey($invitation['client_contact_id']); $new_invitation = CreditInvitationFactory::create($invoice->company_id, $invoice->user_id); $new_invitation->fill($invitation); $new_invitation->credit_id = $credit->id; $new_invitation->client_contact_id = $this->decodePrimaryKey($invitation['client_contact_id']); $new_invitation->save(); } } } /** * Perform calculations on the * credit note */ $credit = $credit->calc()->getCredit(); $credit->save(); return $credit; } }