fix(webapp): Disable tax rates from item entries editor table on services do not support tax rates

This commit is contained in:
Ahmed Bouhuolia
2023-10-02 23:27:05 +02:00
parent b1a043f699
commit 69afa07e3b
9 changed files with 65 additions and 21 deletions

View File

@@ -17,11 +17,21 @@ import {
useItemEntriesTableContext, useItemEntriesTableContext,
} from './ItemEntriesTableProvider'; } from './ItemEntriesTableProvider';
import { useUncontrolled } from '@/hooks/useUncontrolled'; import { useUncontrolled } from '@/hooks/useUncontrolled';
import { ItemEntry } from '@/interfaces/ItemEntries';
interface ItemsEntriesTableProps {
initialValue?: ItemEntry;
value?: ItemEntry[];
onChange?: (entries: ItemEntry[]) => void;
taxRates?: any[];
minLinesNumber?: number;
enableTaxRates?: boolean;
}
/** /**
* Items entries table. * Items entries table.
*/ */
function ItemsEntriesTable(props) { function ItemsEntriesTable(props: ItemsEntriesTableProps) {
const { value, initialValue, onChange } = props; const { value, initialValue, onChange } = props;
const [localValue, handleChange] = useUncontrolled({ const [localValue, handleChange] = useUncontrolled({
@@ -119,8 +129,11 @@ ItemsEntriesTable.defaultProps = {
discount: '', discount: '',
}, },
initialEntries: [], initialEntries: [],
taxRates: [],
items: [],
linesNumber: 1, linesNumber: 1,
minLinesNumber: 1, minLinesNumber: 1,
enableTaxRates: true,
}; };
export default ItemsEntriesTable; export default ItemsEntriesTable;

View File

@@ -92,7 +92,7 @@ const LandedCostHeaderCell = () => {
*/ */
export function useEditableItemsEntriesColumns() { export function useEditableItemsEntriesColumns() {
const { featureCan } = useFeatureCan(); const { featureCan } = useFeatureCan();
const { landedCost } = useItemEntriesTableContext(); const { landedCost, enableTaxRates } = useItemEntriesTableContext();
const isProjectsFeatureEnabled = featureCan(Features.Projects); const isProjectsFeatureEnabled = featureCan(Features.Projects);
@@ -132,13 +132,17 @@ export function useEditableItemsEntriesColumns() {
width: 70, width: 70,
align: Align.Right, align: Align.Right,
}, },
{ ...(enableTaxRates
Header: 'Tax rate', ? [
accessor: 'tax_rate_id', {
Cell: TaxRatesSuggestInputCell, Header: 'Tax rate',
disableSortBy: true, accessor: 'tax_rate_id',
width: 110, Cell: TaxRatesSuggestInputCell,
}, disableSortBy: true,
width: 110,
},
]
: []),
{ {
Header: intl.get('discount'), Header: intl.get('discount'),
accessor: 'discount', accessor: 'discount',

View File

@@ -27,8 +27,8 @@ export default function BillFormBody({ defaultBill }) {
meta: { error, touched }, meta: { error, touched },
}) => ( }) => (
<ItemsEntriesTable <ItemsEntriesTable
entries={value} value={value}
onUpdateData={(entries) => { onChange={(entries) => {
setFieldValue('entries', entries); setFieldValue('entries', entries);
}} }}
items={items} items={items}
@@ -37,6 +37,7 @@ export default function BillFormBody({ defaultBill }) {
currencyCode={values.currency_code} currencyCode={values.currency_code}
itemType={ITEM_TYPE.PURCHASABLE} itemType={ITEM_TYPE.PURCHASABLE}
landedCost={true} landedCost={true}
enableTaxRates={false}
/> />
)} )}
</FastField> </FastField>

View File

@@ -22,14 +22,15 @@ export default function VendorCreditNoteItemsEntriesEditor() {
meta: { error, touched }, meta: { error, touched },
}) => ( }) => (
<ItemsEntriesTable <ItemsEntriesTable
entries={value} value={value}
onUpdateData={(entries) => { onChange={(entries) => {
setFieldValue('entries', entries); setFieldValue('entries', entries);
}} }}
items={items} items={items}
errors={error} errors={error}
linesNumber={4} linesNumber={4}
currencyCode={values.currency_code} currencyCode={values.currency_code}
enableTaxRates={false}
/> />
)} )}
</FastField> </FastField>

View File

@@ -26,14 +26,15 @@ export default function CreditNoteItemsEntriesEditorField() {
meta: { error, touched }, meta: { error, touched },
}) => ( }) => (
<ItemsEntriesTable <ItemsEntriesTable
entries={value} value={value}
onUpdateData={(entries) => { onChange={(entries) => {
setFieldValue('entries', entries); setFieldValue('entries', entries);
}} }}
items={items} items={items}
errors={error} errors={error}
linesNumber={4} linesNumber={4}
currencyCode={values.currency_code} currencyCode={values.currency_code}
enableTaxRates={false}
/> />
)} )}
</FastField> </FastField>

View File

@@ -26,14 +26,15 @@ export default function EstimateFormItemsEntriesField() {
meta: { error, touched }, meta: { error, touched },
}) => ( }) => (
<ItemsEntriesTable <ItemsEntriesTable
entries={value} value={value}
onUpdateData={(entries) => { onChange={(entries) => {
setFieldValue('entries', entries); setFieldValue('entries', entries);
}} }}
items={items} items={items}
errors={error} errors={error}
linesNumber={4} linesNumber={4}
currencyCode={values.currency_code} currencyCode={values.currency_code}
enableTaxRates={false}
/> />
)} )}
</FastField> </FastField>

View File

@@ -31,6 +31,15 @@ export const defaultEstimateEntry = {
amount: '', amount: '',
}; };
const defaultEstimateEntryReq = {
index: 0,
item_id: '',
rate: '',
discount: '',
quantity: '',
description: '',
};
export const defaultEstimate = { export const defaultEstimate = {
customer_id: '', customer_id: '',
estimate_date: moment(new Date()).format('YYYY-MM-DD'), estimate_date: moment(new Date()).format('YYYY-MM-DD'),
@@ -148,7 +157,9 @@ export const transfromsFormValuesToRequest = (values) => {
...(values.estimate_number_manually && { ...(values.estimate_number_manually && {
estimate_number: values.estimate_number, estimate_number: values.estimate_number,
}), }),
entries: entries.map((entry) => ({ ...omit(entry, ['amount']) })), entries: entries.map((entry) => ({
...transformToForm(entry, defaultEstimateEntryReq),
})),
}; };
}; };

View File

@@ -19,14 +19,15 @@ export default function ReceiptItemsEntriesEditor({ defaultReceipt }) {
meta: { error, touched }, meta: { error, touched },
}) => ( }) => (
<ItemsEntriesTable <ItemsEntriesTable
entries={value} value={value}
onUpdateData={(entries) => { onChange={(entries) => {
setFieldValue('entries', entries); setFieldValue('entries', entries);
}} }}
items={items} items={items}
errors={error} errors={error}
linesNumber={4} linesNumber={4}
currencyCode={values.currency_code} currencyCode={values.currency_code}
enableTaxRates={false}
/> />
)} )}
</FastField> </FastField>

View File

@@ -32,6 +32,15 @@ export const defaultReceiptEntry = {
amount: '', amount: '',
}; };
const defaultReceiptEntryReq = {
index: 0,
item_id: '',
rate: '',
discount: '',
quantity: '',
description: '',
};
export const defaultReceipt = { export const defaultReceipt = {
customer_id: '', customer_id: '',
deposit_account_id: '', deposit_account_id: '',
@@ -140,7 +149,9 @@ export const transformFormValuesToRequest = (values) => {
...(values.receipt_number_manually && { ...(values.receipt_number_manually && {
receipt_number: values.receipt_number, receipt_number: values.receipt_number,
}), }),
entries: entries.map((entry) => ({ ...omit(entry, ['amount']) })), entries: entries.map((entry) => ({
...transformToForm(entry, defaultReceiptEntryReq),
})),
closed: false, closed: false,
}; };
}; };