Refactor tax rate code

This commit is contained in:
Hillel Coren 2017-02-10 09:43:46 +02:00
parent dd23b86a3f
commit e01b61cef5
3 changed files with 24 additions and 41 deletions

View File

@ -219,6 +219,8 @@ class InvoiceController extends BaseController
private static function getViewModel($invoice)
{
$account = Auth::user()->account;
$recurringHelp = '';
$recurringDueDateHelp = '';
$recurringDueDates = [];
@ -282,25 +284,6 @@ class InvoiceController extends BaseController
}
}
// Tax rate $options
$account = Auth::user()->account;
$rates = TaxRate::scope()->orderBy('name')->get();
$options = [];
$defaultTax = false;
foreach ($rates as $rate) {
$name = $rate->name . ' ' . ($rate->rate + 0) . '%';
if ($rate->is_inclusive) {
$name .= ' - ' . trans('texts.inclusive');
}
$options[($rate->is_inclusive ? '1 ' : '0 ') . $rate->rate . ' ' . $rate->name] = $name;
// load default invoice tax
if ($rate->id == $account->default_tax_rate_id) {
$defaultTax = $rate;
}
}
// Check for any taxes which have been deleted
if ($invoice->exists) {
foreach ($invoice->getTaxes() as $key => $rate) {
@ -315,8 +298,8 @@ class InvoiceController extends BaseController
'data' => Input::old('data'),
'account' => Auth::user()->account->load('country'),
'products' => Product::scope()->with('default_tax_rate')->orderBy('product_key')->get(),
'taxRateOptions' => $options,
'defaultTax' => $defaultTax,
'taxRateOptions' => $account->present()->taxRateOptions,
'defaultTax' => $account->default_tax_rate,
'currencies' => Cache::get('currencies'),
'sizes' => Cache::get('sizes'),
'paymentTerms' => Cache::get('paymentTerms'),

View File

@ -93,31 +93,14 @@ class QuoteController extends BaseController
private static function getViewModel()
{
// Tax rate $options
$account = Auth::user()->account;
$rates = TaxRate::scope()->orderBy('name')->get();
$options = [];
$defaultTax = false;
foreach ($rates as $rate) {
$name = $rate->name . ' ' . ($rate->rate + 0) . '%';
if ($rate->is_inclusive) {
$name .= ' - ' . trans('texts.inclusive');
}
$options[($rate->is_inclusive ? '1 ' : '0 ') . $rate->rate . ' ' . $rate->name] = $name;
// load default invoice tax
if ($rate->id == $account->default_tax_rate_id) {
$defaultTax = $rate;
}
}
return [
'entityType' => ENTITY_QUOTE,
'account' => Auth::user()->account,
'account' => $account,
'products' => Product::scope()->orderBy('id')->get(['product_key', 'notes', 'cost', 'qty']),
'taxRateOptions' => $options,
'defaultTax' => $defaultTax,
'taxRateOptions' => $account->present()->taxRateOptions,
'defaultTax' => $account->default_tax_rate,
'countries' => Cache::get('countries'),
'clients' => Client::scope()->with('contacts', 'country')->orderBy('name')->get(),
'taxRates' => TaxRate::scope()->orderBy('name')->get(),

View File

@ -4,6 +4,7 @@ namespace App\Ninja\Presenters;
use Carbon;
use Domain;
use App\Models\TaxRate;
use Laracasts\Presenter\Presenter;
use stdClass;
use Utils;
@ -132,4 +133,20 @@ class AccountPresenter extends Presenter
return $str;
}
public function taxRateOptions()
{
$rates = TaxRate::scope()->orderBy('name')->get();
$options = [];
foreach ($rates as $rate) {
$name = $rate->name . ' ' . ($rate->rate + 0) . '%';
if ($rate->is_inclusive) {
$name .= ' - ' . trans('texts.inclusive');
}
$options[($rate->is_inclusive ? '1 ' : '0 ') . $rate->rate . ' ' . $rate->name] = $name;
}
return $options;
}
}