mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Create invitations when importing data
This commit is contained in:
parent
1debb52997
commit
9d60b1468c
@ -680,6 +680,46 @@ class InvoiceRepository extends BaseRepository
|
|||||||
$invoice->invoice_items()->save($invoiceItem);
|
$invoice->invoice_items()->save($invoiceItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$invoice = $this->saveInvitations($invoice);
|
||||||
|
|
||||||
|
return $invoice;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function saveInvitations($invoice)
|
||||||
|
{
|
||||||
|
$client = $invoice->client;
|
||||||
|
$client->load('contacts');
|
||||||
|
$sendInvoiceIds = [];
|
||||||
|
|
||||||
|
foreach ($client->contacts as $contact) {
|
||||||
|
if ($contact->send_invoice) {
|
||||||
|
$sendInvoiceIds[] = $contact->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if no contacts are selected auto-select the first to enusre there's an invitation
|
||||||
|
if (! count($sendInvoiceIds)) {
|
||||||
|
$sendInvoiceIds[] = $client->contacts[0]->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($client->contacts as $contact) {
|
||||||
|
$invitation = Invitation::scope()->whereContactId($contact->id)->whereInvoiceId($invoice->id)->first();
|
||||||
|
|
||||||
|
if (in_array($contact->id, $sendInvoiceIds) && ! $invitation) {
|
||||||
|
$invitation = Invitation::createNew();
|
||||||
|
$invitation->invoice_id = $invoice->id;
|
||||||
|
$invitation->contact_id = $contact->id;
|
||||||
|
$invitation->invitation_key = str_random(RANDOM_KEY_LENGTH);
|
||||||
|
$invitation->save();
|
||||||
|
} elseif (! in_array($contact->id, $sendInvoiceIds) && $invitation) {
|
||||||
|
$invitation->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($invoice->is_public && ! $invoice->areInvitationsSent()) {
|
||||||
|
$invoice->markInvitationsSent();
|
||||||
|
}
|
||||||
|
|
||||||
return $invoice;
|
return $invoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,42 +81,7 @@ class InvoiceService extends BaseService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$invoice = $this->invoiceRepo->save($data, $invoice);
|
return $this->invoiceRepo->save($data, $invoice);
|
||||||
|
|
||||||
$client = $invoice->client;
|
|
||||||
$client->load('contacts');
|
|
||||||
$sendInvoiceIds = [];
|
|
||||||
|
|
||||||
foreach ($client->contacts as $contact) {
|
|
||||||
if ($contact->send_invoice) {
|
|
||||||
$sendInvoiceIds[] = $contact->id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if no contacts are selected auto-select the first to enusre there's an invitation
|
|
||||||
if (! count($sendInvoiceIds)) {
|
|
||||||
$sendInvoiceIds[] = $client->contacts[0]->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($client->contacts as $contact) {
|
|
||||||
$invitation = Invitation::scope()->whereContactId($contact->id)->whereInvoiceId($invoice->id)->first();
|
|
||||||
|
|
||||||
if (in_array($contact->id, $sendInvoiceIds) && ! $invitation) {
|
|
||||||
$invitation = Invitation::createNew();
|
|
||||||
$invitation->invoice_id = $invoice->id;
|
|
||||||
$invitation->contact_id = $contact->id;
|
|
||||||
$invitation->invitation_key = str_random(RANDOM_KEY_LENGTH);
|
|
||||||
$invitation->save();
|
|
||||||
} elseif (! in_array($contact->id, $sendInvoiceIds) && $invitation) {
|
|
||||||
$invitation->delete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($invoice->is_public && ! $invoice->areInvitationsSent()) {
|
|
||||||
$invoice->markInvitationsSent();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $invoice;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user