mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Added support for saving and showing 0% tax rates
This commit is contained in:
parent
b362380615
commit
fa371d2a77
@ -244,7 +244,7 @@ class InvoiceRepository
|
|||||||
$invoice->po_number = trim($data['po_number']);
|
$invoice->po_number = trim($data['po_number']);
|
||||||
$invoice->invoice_design_id = $data['invoice_design_id'];
|
$invoice->invoice_design_id = $data['invoice_design_id'];
|
||||||
|
|
||||||
if (isset($data['tax_name']) && isset($data['tax_rate']) && Utils::parseFloat($data['tax_rate']) > 0) {
|
if (isset($data['tax_name']) && isset($data['tax_rate']) && $data['tax_name']) {
|
||||||
$invoice->tax_rate = Utils::parseFloat($data['tax_rate']);
|
$invoice->tax_rate = Utils::parseFloat($data['tax_rate']);
|
||||||
$invoice->tax_name = trim($data['tax_name']);
|
$invoice->tax_name = trim($data['tax_name']);
|
||||||
} else {
|
} else {
|
||||||
@ -345,7 +345,7 @@ class InvoiceRepository
|
|||||||
$invoiceItem->qty = Utils::parseFloat($item->qty);
|
$invoiceItem->qty = Utils::parseFloat($item->qty);
|
||||||
$invoiceItem->tax_rate = 0;
|
$invoiceItem->tax_rate = 0;
|
||||||
|
|
||||||
if (isset($item->tax_rate) && Utils::parseFloat($item->tax_rate) > 0) {
|
if (isset($item->tax_rate) && isset($item->tax_name) && $item->tax_name) {
|
||||||
$invoiceItem->tax_rate = Utils::parseFloat($item->tax_rate);
|
$invoiceItem->tax_rate = Utils::parseFloat($item->tax_rate);
|
||||||
$invoiceItem->tax_name = trim($item->tax_name);
|
$invoiceItem->tax_name = trim($item->tax_name);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ class TaxRateRepository
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($record->name) || !Utils::parseFloat($record->rate) || !trim($record->name)) {
|
if (!isset($record->name) || !trim($record->name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -920,8 +920,10 @@
|
|||||||
var taxRate = new TaxRateModel();
|
var taxRate = new TaxRateModel();
|
||||||
taxRate.name(name);
|
taxRate.name(name);
|
||||||
taxRate.rate(parseFloat(rate));
|
taxRate.rate(parseFloat(rate));
|
||||||
if (parseFloat(rate) > 0) taxRate.is_deleted(true);
|
if (name) {
|
||||||
|
taxRate.is_deleted(true);
|
||||||
self.tax_rates.push(taxRate);
|
self.tax_rates.push(taxRate);
|
||||||
|
}
|
||||||
return taxRate;
|
return taxRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2906,3 +2906,6 @@ table.table thead .sorting_asc:after { content: '' !important }
|
|||||||
table.table thead .sorting_desc:after { content: '' !important}
|
table.table thead .sorting_desc:after { content: '' !important}
|
||||||
table.table thead .sorting_asc_disabled:after { content: '' !important }
|
table.table thead .sorting_asc_disabled:after { content: '' !important }
|
||||||
table.table thead .sorting_desc_disabled:after { content: '' !important }
|
table.table thead .sorting_desc_disabled:after { content: '' !important }
|
||||||
|
|
||||||
|
/* Prevent modal from shifting page a bit - https://github.com/twbs/bootstrap/issues/9886 */
|
||||||
|
body.modal-open { overflow:inherit; padding-right:inherit !important; }
|
@ -32262,7 +32262,7 @@ function displaySubtotals(doc, layout, invoice, y, rightAlignTitleX)
|
|||||||
data.push({'custom_invoice_label2': formatMoney(invoice.custom_value2, invoice.client.currency_id) })
|
data.push({'custom_invoice_label2': formatMoney(invoice.custom_value2, invoice.client.currency_id) })
|
||||||
}
|
}
|
||||||
|
|
||||||
data.push({'tax': invoice.tax_amount > 0 ? formatMoney(invoice.tax_amount, invoice.client.currency_id) : false});
|
data.push({'tax': (invoice.tax && invoice.tax.name) || invoice.tax_name ? formatMoney(invoice.tax_amount, invoice.client.currency_id) : false});
|
||||||
|
|
||||||
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
||||||
data.push({'custom_invoice_label1': formatMoney(invoice.custom_value1, invoice.client.currency_id) })
|
data.push({'custom_invoice_label1': formatMoney(invoice.custom_value1, invoice.client.currency_id) })
|
||||||
@ -32355,8 +32355,11 @@ function displayGrid(doc, invoice, data, x, y, layout, options) {
|
|||||||
|
|
||||||
if (key.substring(0, 6) === 'custom') {
|
if (key.substring(0, 6) === 'custom') {
|
||||||
key = invoice.account[key];
|
key = invoice.account[key];
|
||||||
} else if (key === 'tax' && invoice.tax_rate) {
|
} else if (key === 'tax' && invoice.tax_name) {
|
||||||
key = invoiceLabels[key] + ' ' + (invoice.tax_rate*1).toString() + '%';
|
key = invoice.tax_name + ' ' + (invoice.tax_rate*1).toString() + '%';
|
||||||
|
if (invoice.tax_name.toLowerCase().indexOf(invoiceLabels['tax'].toLowerCase()) == -1) {
|
||||||
|
key = invoiceLabels['tax'] + ': ' + key;
|
||||||
|
}
|
||||||
} else if (key === 'discount' && NINJA.parseFloat(invoice.discount) && !parseInt(invoice.is_amount_discount)) {
|
} else if (key === 'discount' && NINJA.parseFloat(invoice.discount) && !parseInt(invoice.is_amount_discount)) {
|
||||||
key = invoiceLabels[key] + ' ' + parseFloat(invoice.discount) + '%';
|
key = invoiceLabels[key] + ' ' + parseFloat(invoice.discount) + '%';
|
||||||
} else {
|
} else {
|
||||||
@ -32424,7 +32427,7 @@ function calculateAmounts(invoice) {
|
|||||||
total += lineTotal;
|
total += lineTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.tax && item.tax.rate > 0) || (item.tax_rate && parseFloat(item.tax_rate) > 0)) {
|
if ((item.tax && item.tax.name) || item.tax_name) {
|
||||||
hasTaxes = true;
|
hasTaxes = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -798,3 +798,6 @@ table.table thead .sorting_asc:after { content: '' !important }
|
|||||||
table.table thead .sorting_desc:after { content: '' !important}
|
table.table thead .sorting_desc:after { content: '' !important}
|
||||||
table.table thead .sorting_asc_disabled:after { content: '' !important }
|
table.table thead .sorting_asc_disabled:after { content: '' !important }
|
||||||
table.table thead .sorting_desc_disabled:after { content: '' !important }
|
table.table thead .sorting_desc_disabled:after { content: '' !important }
|
||||||
|
|
||||||
|
/* Prevent modal from shifting page a bit - https://github.com/twbs/bootstrap/issues/9886 */
|
||||||
|
body.modal-open { overflow:inherit; padding-right:inherit !important; }
|
@ -739,7 +739,7 @@ function displaySubtotals(doc, layout, invoice, y, rightAlignTitleX)
|
|||||||
data.push({'custom_invoice_label2': formatMoney(invoice.custom_value2, invoice.client.currency_id) })
|
data.push({'custom_invoice_label2': formatMoney(invoice.custom_value2, invoice.client.currency_id) })
|
||||||
}
|
}
|
||||||
|
|
||||||
data.push({'tax': invoice.tax_amount > 0 ? formatMoney(invoice.tax_amount, invoice.client.currency_id) : false});
|
data.push({'tax': (invoice.tax && invoice.tax.name) || invoice.tax_name ? formatMoney(invoice.tax_amount, invoice.client.currency_id) : false});
|
||||||
|
|
||||||
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
||||||
data.push({'custom_invoice_label1': formatMoney(invoice.custom_value1, invoice.client.currency_id) })
|
data.push({'custom_invoice_label1': formatMoney(invoice.custom_value1, invoice.client.currency_id) })
|
||||||
@ -832,8 +832,11 @@ function displayGrid(doc, invoice, data, x, y, layout, options) {
|
|||||||
|
|
||||||
if (key.substring(0, 6) === 'custom') {
|
if (key.substring(0, 6) === 'custom') {
|
||||||
key = invoice.account[key];
|
key = invoice.account[key];
|
||||||
} else if (key === 'tax' && invoice.tax_rate) {
|
} else if (key === 'tax' && invoice.tax_name) {
|
||||||
key = invoiceLabels[key] + ' ' + (invoice.tax_rate*1).toString() + '%';
|
key = invoice.tax_name + ' ' + (invoice.tax_rate*1).toString() + '%';
|
||||||
|
if (invoice.tax_name.toLowerCase().indexOf(invoiceLabels['tax'].toLowerCase()) == -1) {
|
||||||
|
key = invoiceLabels['tax'] + ': ' + key;
|
||||||
|
}
|
||||||
} else if (key === 'discount' && NINJA.parseFloat(invoice.discount) && !parseInt(invoice.is_amount_discount)) {
|
} else if (key === 'discount' && NINJA.parseFloat(invoice.discount) && !parseInt(invoice.is_amount_discount)) {
|
||||||
key = invoiceLabels[key] + ' ' + parseFloat(invoice.discount) + '%';
|
key = invoiceLabels[key] + ' ' + parseFloat(invoice.discount) + '%';
|
||||||
} else {
|
} else {
|
||||||
@ -901,7 +904,7 @@ function calculateAmounts(invoice) {
|
|||||||
total += lineTotal;
|
total += lineTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.tax && item.tax.rate > 0) || (item.tax_rate && parseFloat(item.tax_rate) > 0)) {
|
if ((item.tax && item.tax.name) || item.tax_name) {
|
||||||
hasTaxes = true;
|
hasTaxes = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user