fix: update financial forms to use new formatted amount utilities and add adjustment fields

This commit is contained in:
Ahmed Bouhuolia
2024-12-03 17:53:37 +02:00
parent 542763ddf5
commit 3a19518440
21 changed files with 128 additions and 133 deletions

View File

@@ -1,13 +1,12 @@
// @ts-nocheck
import React, { useMemo } from 'react';
import React from 'react';
import intl from 'react-intl-universal';
import classNames from 'classnames';
import { sumBy } from 'lodash';
import { useFormikContext } from 'formik';
import { CLASSES } from '@/constants/classes';
import { PageFormBigNumber } from '@/components';
import BillFormHeaderFields from './BillFormHeaderFields';
import { useBillTotalFormatted } from './utils';
/**
* Fill form header.
@@ -22,19 +21,10 @@ function BillFormHeader() {
}
function BillFormBigTotal() {
const {
values: { currency_code, entries },
} = useFormikContext();
// Calculate the total due amount of bill entries.
const totalDueAmount = useMemo(() => sumBy(entries, 'amount'), [entries]);
const totalFormatted = useBillTotalFormatted();
return (
<PageFormBigNumber
label={intl.get('due_amount')}
amount={totalDueAmount}
currencyCode={currency_code}
/>
<PageFormBigNumber label={intl.get('due_amount')} amount={totalFormatted} />
);
}

View File

@@ -325,7 +325,7 @@ export const useBillSubtotal = () => {
*/
export const useBillSubtotalFormatted = () => {
const subtotal = useBillSubtotal();
const { values} = useFormikContext();
const { values } = useFormikContext();
return formattedAmount(subtotal, values.currency_code);
};
@@ -336,8 +336,12 @@ export const useBillSubtotalFormatted = () => {
*/
export const useBillDiscountAmount = () => {
const { values } = useFormikContext();
const subtotal = useBillSubtotal();
const discount = toSafeNumber(values.discount);
return toSafeNumber(values.discount);
return values?.discount_type === 'percentage'
? (subtotal * discount) / 100
: discount;
};
/**
@@ -384,7 +388,6 @@ export const useBillTotalTaxAmount = () => {
.filter((entry) => entry.tax_amount)
.sumBy('tax_amount')
.value();
}, [values.entries]);
};

View File

@@ -2,33 +2,23 @@
import React from 'react';
import intl from 'react-intl-universal';
import classNames from 'classnames';
import { useFormikContext } from 'formik';
import { CLASSES } from '@/constants/classes';
import VendorCreditNoteFormHeaderFields from './VendorCreditNoteFormHeaderFields';
import { getEntriesTotal } from '@/containers/Entries/utils';
import { PageFormBigNumber } from '@/components';
import { useVendorCreditTotalFormatted } from './utils';
/**
* Vendor Credit note header.
*/
function VendorCreditNoteFormHeader() {
const { values:{entries ,currency_code} } = useFormikContext();
// Calculate the total amount.
const totalAmount = React.useMemo(
() => getEntriesTotal(entries),
[entries],
);
const totalFormatted = useVendorCreditTotalFormatted();
return (
<div className={classNames(CLASSES.PAGE_FORM_HEADER)}>
<VendorCreditNoteFormHeaderFields />
<PageFormBigNumber
label={intl.get('vendor_credits.label.amount_to_credit')}
amount={totalAmount}
currencyCode={currency_code}
amount={totalFormatted}
/>
</div>
);

View File

@@ -206,8 +206,12 @@ export const useVendorCreditSubtotal = () => {
*/
export const useVendorCreditDiscountAmount = () => {
const { values } = useFormikContext();
const subtotal = useVendorCreditSubtotal();
const discount = toSafeNumber(values.discount);
return toSafeNumber(values.discount);
return values.discount_type === 'percentage'
? (subtotal * discount) / 100
: discount;
};
/**