diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index 47ed5629a3b1..289ecc3333ba 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -61,6 +61,25 @@ class StoreInvoiceRequest extends Request } + if(isset($input['invitations'])) + { + + foreach($input['invitations'] as $key => $value) + { + + if(isset($input['invitations'][$key]['id']) && is_numeric($input['invitations'][$key]['id'])) + unset($input['invitations'][$key]['id']); + + if(isset($input['invitations'][$key]['id']) && is_string($input['invitations'][$key]['id'])) + $input['invitations'][$key]['id'] = $this->decodePrimaryKey($input['invitations'][$key]['id']); + + if(is_string($input['invitations'][$key]['client_contact_id'])) + $input['invitations'][$key]['client_contact_id'] = $this->decodePrimaryKey($input['invitations'][$key]['client_contact_id']); + + } + + } + $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; //$input['line_items'] = json_encode($input['line_items']); $this->replace($input); diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index d42127423cda..27d044ab3f42 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -53,6 +53,25 @@ class UpdateInvoiceRequest extends Request $input['client_id'] = $this->decodePrimaryKey($input['client_id']); } + if(isset($input['invitations'])) + { + + foreach($input['invitations'] as $key => $value) + { + + if(is_numeric($input['invitations'][$key]['id'])) + unset($input['invitations'][$key]['id']); + + if(is_string($input['invitations'][$key]['id'])) + $input['invitations'][$key]['id'] = $this->decodePrimaryKey($input['invitations'][$key]['id']); + + if(is_string($input['invitations'][$key]['client_contact_id'])) + $input['invitations'][$key]['client_contact_id'] = $this->decodePrimaryKey($input['invitations'][$key]['client_contact_id']); + + } + + } + $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; $this->replace($input); diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php index b75818f81f72..11d85ddb16fb 100644 --- a/app/Repositories/InvoiceRepository.php +++ b/app/Repositories/InvoiceRepository.php @@ -68,12 +68,12 @@ class InvoiceRepository extends BaseRepository { /* Get array of Keys which have been removed from the invitations array and soft delete each invitation */ $invoice->invitations->pluck('key')->diff($invitations->pluck('key'))->each(function ($invitation) { - $invite = $this->getInvitationByKey($invitation); + $invite = $this->getInvitationByKey($invitation); - if($invite) - $invite->forceDelete(); + if($invite) + $invite->forceDelete(); - }); + }); foreach ($data['invitations'] as $invitation) { $inv = false; @@ -91,15 +91,19 @@ class InvoiceRepository extends BaseRepository { $new_invitation = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); //$new_invitation->fill($invitation); $new_invitation->invoice_id = $invoice->id; - $new_invitation->client_contact_id = $this->decodePrimaryKey($invitation['client_contact_id']); + $new_invitation->client_contact_id = $invitation['client_contact_id']; $new_invitation->save(); } } } + + $invoice->load('invitations'); + /* If no invitations have been created, this is our fail safe to maintain state*/ if ($invoice->invitations->count() == 0) { + \Log::error('making invitations'); $invoice->service()->createInvitations(); }