Invoice to Quote factory

This commit is contained in:
David Bomba 2019-04-23 22:22:13 +10:00
parent 18d2284a8e
commit 13e859bcea
6 changed files with 94 additions and 3 deletions

View File

@ -46,6 +46,7 @@ class ClientSettings extends BaseSettings
public $custom_taxes1;
public $custom_taxes2;
public $lock_sent_invoices;
public $auto_bill;
/**
* settings which which are unique to client settings

View File

@ -18,7 +18,8 @@ class CloneInvoiceFactory
$clone_invoice->balance = $invoice->amount;
$clone_invoice->settings = $invoice->settings;
$clone_invoice->line_items = $invoice->line_items;
$clone_invoice->backup = null;
return $clone_invoice;
}

View File

@ -0,0 +1,52 @@
<?php
namespace App\Factory;
use App\Models\Invoice;
use App\Models\Quote;
class CloneInvoiceToQuoteFactory
{
public static function create(Invoice $invoice, $user_id) : ?Quote
{
$quote = new Quote();
$quote->client_id = $invoice->client_id;
$quote->user_id = $user_id;
$quote->company_id = $invoice->company_id;
$quote->discount = $invoice->discount;
$quote->is_amount_discount = $invoice->is_amount_discount;
$quote->po_number = $invoice->po_number;
$quote->is_deleted = false;
$quote->backup = null;
$quote->footer = $invoice->footer;
$quote->public_notes = $invoice->public_notes;
$quote->private_notes = $invoice->private_notes;
$quote->terms = $invoice->terms;
$quote->tax_name1 = $invoice->tax_name1;
$quote->tax_rate1 = $invoice->tax_rate1;
$quote->tax_name2 = $invoice->tax_name2;
$quote->tax_rate2 = $invoice->tax_rate2;
$quote->custom_value1 = $invoice->custom_value1;
$quote->custom_value2 = $invoice->custom_value2;
$quote->custom_value3 = $invoice->custom_value3;
$quote->custom_value4 = $invoice->custom_value4;
$quote->amount = $invoice->amount;
$quote->balance = $invoice->balance;
$quote->partial = $invoice->partial;
$quote->partial_due_date = $invoice->partial_due_date;
$quote->last_viewed = $invoice->last_viewed;
$quote->status_id = Quote::STATUS_DRAFT;
$quote->quote_number = '';
$quote->quote_date = null;
$quote->due_date = null;
$quote->partial_due_date = null;
$quote->balance = $invoice->amount;
$quote->settings = $invoice->settings;
$quote->line_items = $invoice->line_items;
return $quote;
}
}

View File

@ -15,7 +15,6 @@ class Quote extends BaseModel
const STATUS_DRAFT = 1;
const STATUS_SENT = 2;
const STATUS_VIEWED = 3;
const STATUS_APPROVED = 4;
const STATUS_OVERDUE = -1;

View File

@ -0,0 +1,38 @@
<?php
namespace App\Models;
use App\Models\Filterable;
use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class RecurringInvoice extends BaseModel
{
use MakesHash;
use SoftDeletes;
use Filterable;
protected $guarded = [
'id',
];
protected $casts = [
'settings' => 'object'
];
public function company()
{
return $this->belongsTo(Company::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function invitations()
{
$this->morphMany(Invitation::class, 'inviteable');
}
}

View File

@ -456,7 +456,7 @@ class CreateUsersTable extends Migration
$t->unsignedInteger('client_id')->index();
$t->unsignedInteger('user_id');
$t->unsignedInteger('company_id')->index();
$t->unsignedInteger('quote_status_id');
$t->unsignedInteger('status_id');
$t->string('quote_number');
$t->float('discount');