mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-09-20 08:21:34 +02:00
Merge pull request #911 from haleksandre/invoice-subtotals
Add custom labelling and style to multiple labels and amount in the subtotals table
This commit is contained in:
commit
31fc4ad59c
@ -975,7 +975,7 @@ class AccountController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$labels = [];
|
$labels = [];
|
||||||
foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms', 'balance_due', 'partial_due'] as $field) {
|
foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms', 'balance_due', 'partial_due', 'subtotal', 'paid_to_date', 'discount'] as $field) {
|
||||||
$labels[$field] = Input::get("labels_{$field}");
|
$labels[$field] = Input::get("labels_{$field}");
|
||||||
}
|
}
|
||||||
$account->invoice_labels = json_encode($labels);
|
$account->invoice_labels = json_encode($labels);
|
||||||
|
File diff suppressed because one or more lines are too long
@ -466,62 +466,62 @@ NINJA.subtotals = function(invoice, hideBalance)
|
|||||||
|
|
||||||
var account = invoice.account;
|
var account = invoice.account;
|
||||||
var data = [];
|
var data = [];
|
||||||
data.push([{text: invoiceLabels.subtotal}, {text: formatMoneyInvoice(invoice.subtotal_amount, invoice)}]);
|
data.push([{text: invoiceLabels.subtotal, style: ['subtotalsLabel', 'subtotalLabel']}, {text: formatMoneyInvoice(invoice.subtotal_amount, invoice), style: ['subtotals', 'subtotal']}]);
|
||||||
|
|
||||||
if (invoice.discount_amount != 0) {
|
if (invoice.discount_amount != 0) {
|
||||||
data.push([{text: invoiceLabels.discount}, {text: formatMoneyInvoice(invoice.discount_amount, invoice)}]);
|
data.push([{text: invoiceLabels.discount , style: ['subtotalsLabel', 'discountLabel']}, {text: formatMoneyInvoice(invoice.discount_amount, invoice), style: ['subtotals', 'discount']}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 == '1') {
|
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 == '1') {
|
||||||
data.push([{text: account.custom_invoice_label1}, {text: formatMoneyInvoice(invoice.custom_value1, invoice)}]);
|
data.push([{text: account.custom_invoice_label1, style: ['subtotalsLabel', 'customTax1Label']}, {text: formatMoneyInvoice(invoice.custom_value1, invoice), style: ['subtotals', 'customTax1']}]);
|
||||||
}
|
}
|
||||||
if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 == '1') {
|
if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 == '1') {
|
||||||
data.push([{text: account.custom_invoice_label2}, {text: formatMoneyInvoice(invoice.custom_value2, invoice)}]);
|
data.push([{text: account.custom_invoice_label2, style: ['subtotalsLabel', 'customTax2Label']}, {text: formatMoneyInvoice(invoice.custom_value2, invoice), style: ['subtotals', 'customTax2']}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var key in invoice.item_taxes) {
|
for (var key in invoice.item_taxes) {
|
||||||
if (invoice.item_taxes.hasOwnProperty(key)) {
|
if (invoice.item_taxes.hasOwnProperty(key)) {
|
||||||
var taxRate = invoice.item_taxes[key];
|
var taxRate = invoice.item_taxes[key];
|
||||||
var taxStr = taxRate.name + ' ' + (taxRate.rate*1).toString() + '%';
|
var taxStr = taxRate.name + ' ' + (taxRate.rate*1).toString() + '%';
|
||||||
data.push([{text: taxStr}, {text: formatMoneyInvoice(taxRate.amount, invoice)}]);
|
data.push([{text: taxStr, style: ['subtotalsLabel', 'taxLabel']}, {text: formatMoneyInvoice(taxRate.amount, invoice), style: ['subtotals', 'tax']}]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (invoice.tax_amount1) {
|
if (invoice.tax_amount1) {
|
||||||
var taxStr = invoice.tax_name1 + ' ' + (invoice.tax_rate1*1).toString() + '%';
|
var taxStr = invoice.tax_name1 + ' ' + (invoice.tax_rate1*1).toString() + '%';
|
||||||
data.push([{text: taxStr}, {text: formatMoneyInvoice(invoice.tax_amount1, invoice)}]);
|
data.push([{text: taxStr, style: ['subtotalsLabel', 'tax1Label']}, {text: formatMoneyInvoice(invoice.tax_amount1, invoice), style: ['subtotals', 'tax1']}]);
|
||||||
}
|
}
|
||||||
if (invoice.tax_amount2) {
|
if (invoice.tax_amount2) {
|
||||||
var taxStr = invoice.tax_name2 + ' ' + (invoice.tax_rate2*1).toString() + '%';
|
var taxStr = invoice.tax_name2 + ' ' + (invoice.tax_rate2*1).toString() + '%';
|
||||||
data.push([{text: taxStr}, {text: formatMoneyInvoice(invoice.tax_amount2, invoice)}]);
|
data.push([{text: taxStr, style: ['subtotalsLabel', 'tax2Label']}, {text: formatMoneyInvoice(invoice.tax_amount2, invoice), style: ['subtotals', 'tax2']}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {
|
||||||
data.push([{text: account.custom_invoice_label1}, {text: formatMoneyInvoice(invoice.custom_value1, invoice)}]);
|
data.push([{text: account.custom_invoice_label1, style: ['subtotalsLabel', 'custom1Label']}, {text: formatMoneyInvoice(invoice.custom_value1, invoice), style: ['subtotals', 'custom1']}]);
|
||||||
}
|
}
|
||||||
if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 != '1') {
|
if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 != '1') {
|
||||||
data.push([{text: account.custom_invoice_label2}, {text: formatMoneyInvoice(invoice.custom_value2, invoice)}]);
|
data.push([{text: account.custom_invoice_label2, style: ['subtotalsLabel', 'custom2Label']}, {text: formatMoneyInvoice(invoice.custom_value2, invoice), style: ['subtotals', 'custom2']}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var paid = invoice.amount - invoice.balance;
|
var paid = invoice.amount - invoice.balance;
|
||||||
if (invoice.account.hide_paid_to_date != '1' || paid) {
|
if (invoice.account.hide_paid_to_date != '1' || paid) {
|
||||||
data.push([{text:invoiceLabels.paid_to_date}, {text:formatMoneyInvoice(paid, invoice)}]);
|
data.push([{text:invoiceLabels.paid_to_date, style: ['subtotalsLabel', 'paidToDateLabel']}, {text:formatMoneyInvoice(paid, invoice), style: ['subtotals', 'paidToDate']}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var isPartial = NINJA.parseFloat(invoice.partial);
|
var isPartial = NINJA.parseFloat(invoice.partial);
|
||||||
|
|
||||||
if (!hideBalance || isPartial) {
|
if (!hideBalance || isPartial) {
|
||||||
data.push([
|
data.push([
|
||||||
{ text: invoiceLabels.balance_due, style: [isPartial ? '' : 'balanceDueLabel'] },
|
{ text: invoiceLabels.balance_due, style: ['subtotalsLabel', isPartial ? '' : 'balanceDueLabel'] },
|
||||||
{ text: formatMoneyInvoice(invoice.total_amount, invoice), style: [isPartial ? '' : 'balanceDue'] }
|
{ text: formatMoneyInvoice(invoice.total_amount, invoice), style: ['subtotals', isPartial ? '' : 'balanceDue'] }
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hideBalance) {
|
if (!hideBalance) {
|
||||||
if (isPartial) {
|
if (isPartial) {
|
||||||
data.push([
|
data.push([
|
||||||
{ text: invoiceLabels.partial_due, style: ['balanceDueLabel'] },
|
{ text: invoiceLabels.partial_due, style: ['subtotalsLabel', 'balanceDueLabel'] },
|
||||||
{ text: formatMoneyInvoice(invoice.balance_amount, invoice), style: ['balanceDue'] }
|
{ text: formatMoneyInvoice(invoice.balance_amount, invoice), style: ['subtotals', 'balanceDue'] }
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -532,8 +532,8 @@ NINJA.subtotals = function(invoice, hideBalance)
|
|||||||
NINJA.subtotalsBalance = function(invoice) {
|
NINJA.subtotalsBalance = function(invoice) {
|
||||||
var isPartial = NINJA.parseFloat(invoice.partial);
|
var isPartial = NINJA.parseFloat(invoice.partial);
|
||||||
return [[
|
return [[
|
||||||
{text: isPartial ? invoiceLabels.partial_due : invoiceLabels.balance_due, style:['balanceDueLabel']},
|
{text: isPartial ? invoiceLabels.partial_due : invoiceLabels.balance_due, style:['subtotalsLabel', 'balanceDueLabel']},
|
||||||
{text: formatMoneyInvoice(invoice.balance_amount, invoice), style:['balanceDue']}
|
{text: formatMoneyInvoice(invoice.balance_amount, invoice), style:['subtotals', 'balanceDue']}
|
||||||
]];
|
]];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,11 +541,11 @@ NINJA.accountDetails = function(invoice) {
|
|||||||
var account = invoice.account;
|
var account = invoice.account;
|
||||||
var data = [
|
var data = [
|
||||||
{text:account.name, style: ['accountName']},
|
{text:account.name, style: ['accountName']},
|
||||||
{text:account.id_number},
|
{text:account.id_number, style: ['idNumber']},
|
||||||
{text:account.vat_number},
|
{text:account.vat_number, style: ['vatNumber']},
|
||||||
{text:account.website},
|
{text:account.website, style: ['website']},
|
||||||
{text:account.work_email},
|
{text:account.work_email, style: ['email']},
|
||||||
{text:account.work_phone}
|
{text:account.work_phone, style: ['phone']}
|
||||||
];
|
];
|
||||||
return NINJA.prepareDataList(data, 'accountDetails');
|
return NINJA.prepareDataList(data, 'accountDetails');
|
||||||
}
|
}
|
||||||
|
@ -208,12 +208,15 @@
|
|||||||
{!! Former::text('labels_description')->label(trans('texts.description')) !!}
|
{!! Former::text('labels_description')->label(trans('texts.description')) !!}
|
||||||
{!! Former::text('labels_unit_cost')->label(trans('texts.unit_cost')) !!}
|
{!! Former::text('labels_unit_cost')->label(trans('texts.unit_cost')) !!}
|
||||||
{!! Former::text('labels_quantity')->label(trans('texts.quantity')) !!}
|
{!! Former::text('labels_quantity')->label(trans('texts.quantity')) !!}
|
||||||
|
{!! Former::text('labels_line_total')->label(trans('texts.line_total')) !!}
|
||||||
|
{!! Former::text('labels_terms')->label(trans('texts.terms')) !!}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{!! Former::text('labels_line_total')->label(trans('texts.line_total')) !!}
|
{!! Former::text('labels_subtotal')->label(trans('texts.subtotal')) !!}
|
||||||
{!! Former::text('labels_terms')->label(trans('texts.terms')) !!}
|
{!! Former::text('labels_discount')->label(trans('texts.discount')) !!}
|
||||||
{!! Former::text('labels_balance_due')->label(trans('texts.balance_due')) !!}
|
{!! Former::text('labels_paid_to_date')->label(trans('texts.paid_to_date')) !!}
|
||||||
{!! Former::text('labels_partial_due')->label(trans('texts.partial_due')) !!}
|
{!! Former::text('labels_balance_due')->label(trans('texts.balance_due')) !!}
|
||||||
|
{!! Former::text('labels_partial_due')->label(trans('texts.partial_due')) !!}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user