mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 07:54:30 -04:00
Document support for quotes, recurring invoices, and cloning
This commit is contained in:
parent
cd8290946e
commit
d328db2f54
@ -204,6 +204,21 @@ class Document extends EntityModel
|
|||||||
$array['preview_url'] = $this->getPreviewUrl();
|
$array['preview_url'] = $this->getPreviewUrl();
|
||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cloneDocument(){
|
||||||
|
$document = Document::createNew($this);
|
||||||
|
$document->path = $this->path;
|
||||||
|
$document->preview = $this->preview;
|
||||||
|
$document->name = $this->name;
|
||||||
|
$document->type = $this->type;
|
||||||
|
$document->disk = $this->disk;
|
||||||
|
$document->hash = $this->hash;
|
||||||
|
$document->size = $this->size;
|
||||||
|
$document->width = $this->width;
|
||||||
|
$document->height = $this->height;
|
||||||
|
|
||||||
|
return $document;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Document::deleted(function ($document) {
|
Document::deleted(function ($document) {
|
||||||
|
@ -403,6 +403,13 @@ class InvoiceRepository extends BaseRepository
|
|||||||
foreach ($document_ids as $document_id){
|
foreach ($document_ids as $document_id){
|
||||||
$document = Document::scope($document_id)->first();
|
$document = Document::scope($document_id)->first();
|
||||||
if($document && !$checkSubPermissions || $document->canEdit()){
|
if($document && !$checkSubPermissions || $document->canEdit()){
|
||||||
|
|
||||||
|
if($document->invoice_id && $document->invoice_id != $invoice->id){
|
||||||
|
// From a clone
|
||||||
|
$document = $document->cloneDocument();
|
||||||
|
$document_ids[] = $document->public_id;// Don't remove this document
|
||||||
|
}
|
||||||
|
|
||||||
$document->invoice_id = $invoice->id;
|
$document->invoice_id = $invoice->id;
|
||||||
$document->save();
|
$document->save();
|
||||||
}
|
}
|
||||||
@ -412,10 +419,13 @@ class InvoiceRepository extends BaseRepository
|
|||||||
if(!in_array($document->public_id, $document_ids)){
|
if(!in_array($document->public_id, $document_ids)){
|
||||||
// Removed
|
// Removed
|
||||||
if(!$checkSubPermissions || $document->canEdit()){
|
if(!$checkSubPermissions || $document->canEdit()){
|
||||||
|
if($document->invoice_id == $invoice->id){
|
||||||
|
// Make sure the document isn't on a clone
|
||||||
$document->delete();
|
$document->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($data['invoice_items'] as $item) {
|
foreach ($data['invoice_items'] as $item) {
|
||||||
$item = (array) $item;
|
$item = (array) $item;
|
||||||
@ -572,6 +582,11 @@ class InvoiceRepository extends BaseRepository
|
|||||||
$clone->invoice_items()->save($cloneItem);
|
$clone->invoice_items()->save($cloneItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($invoice->documents as $document) {
|
||||||
|
$cloneDocument = $document->cloneDocument();
|
||||||
|
$invoice->documents()->save($cloneDocument);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($invoice->invitations as $invitation) {
|
foreach ($invoice->invitations as $invitation) {
|
||||||
$cloneInvitation = Invitation::createNew($invoice);
|
$cloneInvitation = Invitation::createNew($invoice);
|
||||||
$cloneInvitation->contact_id = $invitation->contact_id;
|
$cloneInvitation->contact_id = $invitation->contact_id;
|
||||||
@ -676,6 +691,11 @@ class InvoiceRepository extends BaseRepository
|
|||||||
$invoice->invoice_items()->save($item);
|
$invoice->invoice_items()->save($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($recurInvoice->documents as $recurDocument) {
|
||||||
|
$document = $recurDocument->cloneDocument();
|
||||||
|
$invoice->documents()->save($document);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($recurInvoice->invitations as $recurInvitation) {
|
foreach ($recurInvoice->invitations as $recurInvitation) {
|
||||||
$invitation = Invitation::createNew($recurInvitation);
|
$invitation = Invitation::createNew($recurInvitation);
|
||||||
$invitation->contact_id = $recurInvitation->contact_id;
|
$invitation->contact_id = $recurInvitation->contact_id;
|
||||||
|
@ -271,7 +271,7 @@
|
|||||||
<li role="presentation"><a href="#terms" aria-controls="terms" role="tab" data-toggle="tab">{{ trans("texts.{$entityType}_terms") }}</a></li>
|
<li role="presentation"><a href="#terms" aria-controls="terms" role="tab" data-toggle="tab">{{ trans("texts.{$entityType}_terms") }}</a></li>
|
||||||
<li role="presentation"><a href="#footer" aria-controls="footer" role="tab" data-toggle="tab">{{ trans("texts.{$entityType}_footer") }}</a></li>
|
<li role="presentation"><a href="#footer" aria-controls="footer" role="tab" data-toggle="tab">{{ trans("texts.{$entityType}_footer") }}</a></li>
|
||||||
@if ($account->isPro())
|
@if ($account->isPro())
|
||||||
<li role="presentation"><a href="#attached-documents" aria-controls="attached-documents" role="tab" data-toggle="tab">{{ trans("texts.{$entityType}_documents") }}</a></li>
|
<li role="presentation"><a href="#attached-documents" aria-controls="attached-documents" role="tab" data-toggle="tab">{{ trans("texts.invoice_documents") }}</a></li>
|
||||||
@endif
|
@endif
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user