mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 23:00:34 +00:00
fix: Expense amounts should not be rounded
This commit is contained in:
@@ -2,6 +2,8 @@ import { Model } from 'objection';
|
|||||||
import TenantModel from 'models/TenantModel';
|
import TenantModel from 'models/TenantModel';
|
||||||
|
|
||||||
export default class ExpenseCategory extends TenantModel {
|
export default class ExpenseCategory extends TenantModel {
|
||||||
|
amount: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table name
|
* Table name
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import { Transformer } from '@/lib/Transformer/Transformer';
|
||||||
|
import { ExpenseCategory } from '@/models';
|
||||||
|
import { formatNumber } from '@/utils';
|
||||||
|
|
||||||
|
export class ExpenseCategoryTransformer extends Transformer {
|
||||||
|
/**
|
||||||
|
* Include these attributes to expense object.
|
||||||
|
* @returns {Array}
|
||||||
|
*/
|
||||||
|
public includeAttributes = (): string[] => {
|
||||||
|
return ['amountFormatted'];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the formatted amount.
|
||||||
|
* @param {ExpenseCategory} category
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
protected amountFormatted(category: ExpenseCategory) {
|
||||||
|
return formatNumber(category.amount, {
|
||||||
|
currencyCode: this.context.currencyCode,
|
||||||
|
money: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Transformer } from '@/lib/Transformer/Transformer';
|
import { Transformer } from '@/lib/Transformer/Transformer';
|
||||||
import { formatNumber } from 'utils';
|
import { formatNumber } from 'utils';
|
||||||
import { IExpense } from '@/interfaces';
|
import { IExpense } from '@/interfaces';
|
||||||
|
import { ExpenseCategoryTransformer } from './ExpenseCategoryTransformer';
|
||||||
|
|
||||||
export class ExpenseTransfromer extends Transformer {
|
export class ExpenseTransfromer extends Transformer {
|
||||||
/**
|
/**
|
||||||
@@ -12,7 +13,8 @@ export class ExpenseTransfromer extends Transformer {
|
|||||||
'formattedAmount',
|
'formattedAmount',
|
||||||
'formattedLandedCostAmount',
|
'formattedLandedCostAmount',
|
||||||
'formattedAllocatedCostAmount',
|
'formattedAllocatedCostAmount',
|
||||||
'formattedDate'
|
'formattedDate',
|
||||||
|
'categories',
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -56,5 +58,16 @@ export class ExpenseTransfromer extends Transformer {
|
|||||||
*/
|
*/
|
||||||
protected formattedDate = (expense: IExpense): string => {
|
protected formattedDate = (expense: IExpense): string => {
|
||||||
return this.formatDate(expense.paymentDate);
|
return this.formatDate(expense.paymentDate);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the transformed expense categories.
|
||||||
|
* @param {IExpense} expense
|
||||||
|
* @returns {}
|
||||||
|
*/
|
||||||
|
protected categories = (expense: IExpense) => {
|
||||||
|
return this.item(expense.categories, new ExpenseCategoryTransformer(), {
|
||||||
|
currencyCode: expense.currencyCode,
|
||||||
|
});
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
TotalLineTextStyle,
|
TotalLineTextStyle,
|
||||||
} from '@/components';
|
} from '@/components';
|
||||||
import { useExpenseDrawerContext } from './ExpenseDrawerProvider';
|
import { useExpenseDrawerContext } from './ExpenseDrawerProvider';
|
||||||
import { FormatNumber, TotalLine } from '@/components';
|
import { TotalLine } from '@/components';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Footer details of expense readonly details.
|
* Footer details of expense readonly details.
|
||||||
@@ -22,12 +22,12 @@ export default function ExpenseDrawerFooter() {
|
|||||||
<ExpenseTotalLines labelColWidth={'180px'} amountColWidth={'180px'}>
|
<ExpenseTotalLines labelColWidth={'180px'} amountColWidth={'180px'}>
|
||||||
<TotalLine
|
<TotalLine
|
||||||
title={<T id={'expense.details.subtotal'} />}
|
title={<T id={'expense.details.subtotal'} />}
|
||||||
value={<FormatNumber value={expense.total_amount} />}
|
value={expense.formatted_amount}
|
||||||
borderStyle={TotalLineBorderStyle.SingleDark}
|
borderStyle={TotalLineBorderStyle.SingleDark}
|
||||||
/>
|
/>
|
||||||
<TotalLine
|
<TotalLine
|
||||||
title={<T id={'expense.details.total'} />}
|
title={<T id={'expense.details.total'} />}
|
||||||
value={<FormatNumber value={expense.formatted_amount} />}
|
value={expense.formatted_amount}
|
||||||
borderStyle={TotalLineBorderStyle.DoubleDark}
|
borderStyle={TotalLineBorderStyle.DoubleDark}
|
||||||
textStyle={TotalLineTextStyle.Bold}
|
textStyle={TotalLineTextStyle.Bold}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ export const useExpenseReadEntriesColumns = () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Header: intl.get('amount'),
|
Header: intl.get('amount'),
|
||||||
accessor: 'amount',
|
accessor: 'amount_formatted',
|
||||||
Cell: FormatNumberCell,
|
|
||||||
width: getColumnWidth(categories, 'amount', {
|
width: getColumnWidth(categories, 'amount', {
|
||||||
minWidth: 60,
|
minWidth: 60,
|
||||||
magicSpacing: 5,
|
magicSpacing: 5,
|
||||||
|
|||||||
Reference in New Issue
Block a user