diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferEditorField.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferEditorField.js
index 8f24bbcee..e023afa01 100644
--- a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferEditorField.js
+++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferEditorField.js
@@ -7,15 +7,18 @@ import WarehouseTransferFormEntriesTable from './WarehouseTransferFormEntriesTab
import {
entriesFieldShouldUpdate,
defaultWarehouseTransferEntry,
+ useWatchItemsCostSetCostEntries
} from './utils';
-
/**
* Warehouse transafer editor field.
*/
export default function WarehouseTransferEditorField() {
const { items } = useWarehouseTransferFormContext();
+ // Watches inventory items cost and sets cost to form entries.
+ useWatchItemsCostSetCostEntries();
+
return (
{
- const itemsIds = values.entries
+ const { date } = values;
+ const itemsIds = chain(values.entries)
.filter((e) => e.item_id)
- .map((e) => e.item_id);
+ .map((e) => e.item_id)
+ .uniq()
+ .value();
- setItemCostQuery({
- date: values.date,
- itemsIds,
- });
+ setItemCostQuery({ date, itemsIds });
};
return ;
}
diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/utils.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/utils.js
index 37a58b62c..a652f2145 100644
--- a/src/containers/WarehouseTransfers/WarehouseTransferForm/utils.js
+++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/utils.js
@@ -2,10 +2,13 @@ import React from 'react';
import moment from 'moment';
import intl from 'react-intl-universal';
import { Intent } from '@blueprintjs/core';
-import { omit } from 'lodash';
+import { keyBy, omit } from 'lodash';
import { useFormikContext } from 'formik';
import * as R from 'ramda';
+import { useWatch } from 'hooks/utils';
+import { useWarehouseTransferFormContext } from './WarehouseTransferFormProvider';
+
import { AppToaster } from 'components';
import {
orderingLinesIndexes,
@@ -119,6 +122,7 @@ export function transformValueToRequest(values) {
'warehouses',
'destination_warehouse',
'source_warehouse',
+ 'cost',
]),
})),
};
@@ -178,3 +182,39 @@ export const deleteTableRow = R.curry((rowIndex, defaultEntry, rows) => {
updateRemoveLineByIndex(rowIndex),
)(rows);
});
+
+/**
+ * Watches the inventory items cost and sets the cost to form entries.
+ */
+export function useWatchItemsCostSetCostEntries() {
+ const { isItemsCostSuccess, inventoryItemsCost } =
+ useWarehouseTransferFormContext();
+
+ const {
+ setFieldValue,
+ values: { entries },
+ } = useFormikContext();
+
+ // Transformes items cost map by item id.
+ const itemsCostByItemId = React.useMemo(
+ () => keyBy(inventoryItemsCost, 'item_id'),
+ [inventoryItemsCost],
+ );
+
+ // Observes the inventory items cost and set form entries with cost.
+ useWatch(() => {
+ if (!isItemsCostSuccess) return;
+
+ const newEntries = entries.map((entry) => {
+ const costEntry = itemsCostByItemId[entry.item_id];
+
+ return entry.item_id
+ ? {
+ ...entry,
+ cost: costEntry?.average,
+ }
+ : entry;
+ });
+ setFieldValue('entries', newEntries);
+ }, inventoryItemsCost);
+}
diff --git a/src/containers/WarehouseTransfers/utils.js b/src/containers/WarehouseTransfers/utils.js
index e64fe3d41..f25e663a2 100644
--- a/src/containers/WarehouseTransfers/utils.js
+++ b/src/containers/WarehouseTransfers/utils.js
@@ -98,7 +98,7 @@ export const useWarehouseTransferTableColumns = () => {
disableSortBy: true,
Cell: SourceWarehouseAccessorCell,
align: 'right',
- width: 120,
+ width: 100,
},
{
id: 'destination_warehouse',
@@ -107,7 +107,7 @@ export const useWarehouseTransferTableColumns = () => {
Cell: DistentionWarehouseAccessorCell,
disableSortBy: true,
align: 'right',
- width: 120,
+ width: 100,
},
{
Header: intl.get('warehouse_transfer.column.transfer_quantity'),
@@ -120,10 +120,9 @@ export const useWarehouseTransferTableColumns = () => {
{
Header: intl.get('warehouse_transfer.column.cost_price'),
accessor: 'cost',
- Cell: MoneyFieldCell,
disableSortBy: true,
align: 'right',
- width: 100,
+ width: 80,
},
{
Header: '',
@@ -136,4 +135,4 @@ export const useWarehouseTransferTableColumns = () => {
],
[],
);
-};
+};
\ No newline at end of file