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,
} from './ItemEntriesTableProvider';
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.
*/
function ItemsEntriesTable(props) {
function ItemsEntriesTable(props: ItemsEntriesTableProps) {
const { value, initialValue, onChange } = props;
const [localValue, handleChange] = useUncontrolled({
@@ -119,8 +129,11 @@ ItemsEntriesTable.defaultProps = {
discount: '',
},
initialEntries: [],
taxRates: [],
items: [],
linesNumber: 1,
minLinesNumber: 1,
enableTaxRates: true,
};
export default ItemsEntriesTable;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -31,6 +31,15 @@ export const defaultEstimateEntry = {
amount: '',
};
const defaultEstimateEntryReq = {
index: 0,
item_id: '',
rate: '',
discount: '',
quantity: '',
description: '',
};
export const defaultEstimate = {
customer_id: '',
estimate_date: moment(new Date()).format('YYYY-MM-DD'),
@@ -148,7 +157,9 @@ export const transfromsFormValuesToRequest = (values) => {
...(values.estimate_number_manually && {
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 },
}) => (
<ItemsEntriesTable
entries={value}
onUpdateData={(entries) => {
value={value}
onChange={(entries) => {
setFieldValue('entries', entries);
}}
items={items}
errors={error}
linesNumber={4}
currencyCode={values.currency_code}
enableTaxRates={false}
/>
)}
</FastField>

View File

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