fix: Expense amounts should not be rounded

This commit is contained in:
Ahmed Bouhuolia
2024-01-26 23:46:45 +02:00
parent 21eb88ef53
commit de5920f910
5 changed files with 46 additions and 7 deletions

View File

@@ -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
*/ */

View File

@@ -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,
});
}
}

View File

@@ -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,
});
};
} }

View File

@@ -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}
/> />

View File

@@ -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,