diff --git a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx index fb1ec9a21c..7f9ab3cd53 100644 --- a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx +++ b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx @@ -46,6 +46,7 @@ import { import { useInstance } from '../../hooks/UseInstance'; import useStatusCodes from '../../hooks/UseStatusCodes'; import { apiUrl } from '../../states/ApiState'; +import { useGlobalSettingsState } from '../../states/SettingsState'; import { useUserState } from '../../states/UserState'; import { AttachmentTable } from '../../tables/general/AttachmentTable'; import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable'; @@ -59,6 +60,7 @@ export default function PurchaseOrderDetail() { const { id } = useParams(); const user = useUserState(); + const globalSettings = useGlobalSettingsState(); const { instance: order, @@ -74,6 +76,14 @@ export default function PurchaseOrderDetail() { refetchOnMount: true }); + const orderCurrency = useMemo(() => { + return ( + order.order_currency || + order.supplier_detail?.currency || + globalSettings.getSetting('INVENTREE_DEFAULT_CURRENCY') + ); + }, [order, globalSettings]); + const purchaseOrderFields = usePurchaseOrderFields(); const editPurchaseOrder = useEditApiFormModal({ @@ -258,6 +268,7 @@ export default function PurchaseOrderDetail() { @@ -271,6 +282,7 @@ export default function PurchaseOrderDetail() { diff --git a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx index 53876e641c..b695521750 100644 --- a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx +++ b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx @@ -45,6 +45,7 @@ import { import { useInstance } from '../../hooks/UseInstance'; import useStatusCodes from '../../hooks/UseStatusCodes'; import { apiUrl } from '../../states/ApiState'; +import { useGlobalSettingsState } from '../../states/SettingsState'; import { useUserState } from '../../states/UserState'; import { AttachmentTable } from '../../tables/general/AttachmentTable'; import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable'; @@ -58,6 +59,8 @@ export default function ReturnOrderDetail() { const user = useUserState(); + const globalSettings = useGlobalSettingsState(); + const { instance: order, instanceQuery, @@ -71,6 +74,14 @@ export default function ReturnOrderDetail() { } }); + const orderCurrency = useMemo(() => { + return ( + order.order_currency || + order.customer_detail?.currency || + globalSettings.getSetting('INVENTREE_DEFAULT_CURRENCY') + ); + }, [order, globalSettings]); + const detailsPanel = useMemo(() => { if (instanceQuery.isFetching) { return ; @@ -237,6 +248,7 @@ export default function ReturnOrderDetail() { @@ -248,6 +260,7 @@ export default function ReturnOrderDetail() { diff --git a/src/frontend/src/pages/sales/SalesOrderDetail.tsx b/src/frontend/src/pages/sales/SalesOrderDetail.tsx index 4cdcc186cb..db6dd1ab63 100644 --- a/src/frontend/src/pages/sales/SalesOrderDetail.tsx +++ b/src/frontend/src/pages/sales/SalesOrderDetail.tsx @@ -48,6 +48,7 @@ import { import { useInstance } from '../../hooks/UseInstance'; import useStatusCodes from '../../hooks/UseStatusCodes'; import { apiUrl } from '../../states/ApiState'; +import { useGlobalSettingsState } from '../../states/SettingsState'; import { useUserState } from '../../states/UserState'; import { BuildOrderTable } from '../../tables/build/BuildOrderTable'; import { AttachmentTable } from '../../tables/general/AttachmentTable'; @@ -64,6 +65,8 @@ export default function SalesOrderDetail() { const user = useUserState(); + const globalSettings = useGlobalSettingsState(); + const { instance: order, instanceQuery, @@ -77,6 +80,14 @@ export default function SalesOrderDetail() { } }); + const orderCurrency = useMemo(() => { + return ( + order.order_currency || + order.customer_detail?.currency || + globalSettings.getSetting('INVENTREE_DEFAULT_CURRENCY') + ); + }, [order, globalSettings]); + const detailsPanel = useMemo(() => { if (instanceQuery.isFetching) { return ; @@ -271,6 +282,7 @@ export default function SalesOrderDetail() { diff --git a/src/frontend/src/tables/general/ExtraLineItemTable.tsx b/src/frontend/src/tables/general/ExtraLineItemTable.tsx index 8eee2b2663..a1befeb168 100644 --- a/src/frontend/src/tables/general/ExtraLineItemTable.tsx +++ b/src/frontend/src/tables/general/ExtraLineItemTable.tsx @@ -2,10 +2,8 @@ import { t } from '@lingui/macro'; import { useCallback, useMemo, useState } from 'react'; import { AddItemButton } from '../../components/buttons/AddItemButton'; -import { ApiFormFieldSet } from '../../components/forms/fields/ApiFormField'; import { formatCurrency } from '../../defaults/formatters'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; -import { ModelType } from '../../enums/ModelType'; import { UserRoles } from '../../enums/Roles'; import { extraLineItemFields } from '../../forms/CommonForms'; import { @@ -28,10 +26,12 @@ import { export default function ExtraLineItemTable({ endpoint, orderId, + currency, role }: { endpoint: ApiEndpoints; orderId: number; + currency: string; role: UserRoles; }) { const table = useTable('extra-line-item'); @@ -84,7 +84,10 @@ export default function ExtraLineItemTable({ url: endpoint, title: t`Add Line Item`, fields: extraLineItemFields(), - initialData: initialData, + initialData: { + ...initialData, + price_currency: currency + }, table: table }); diff --git a/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx b/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx index 2e3312491c..415d862899 100644 --- a/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx +++ b/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx @@ -49,11 +49,13 @@ import { TableHoverCard } from '../TableHoverCard'; export function PurchaseOrderLineItemTable({ order, orderId, + currency, supplierId, params }: { order: any; orderId: number; + currency: string; supplierId?: number; params?: any; }) { @@ -247,7 +249,10 @@ export function PurchaseOrderLineItemTable({ url: ApiEndpoints.purchase_order_line_list, title: t`Add Line Item`, fields: addPurchaseOrderFields, - initialData: initialData, + initialData: { + ...initialData, + purchase_price_currency: currency + }, table: table }); diff --git a/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx b/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx index de93a2945f..6b0c7f9b6b 100644 --- a/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx +++ b/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx @@ -31,10 +31,12 @@ import { RowDeleteAction, RowEditAction } from '../RowActions'; export default function ReturnOrderLineItemTable({ orderId, - customerId + customerId, + currency }: { orderId: number; customerId: number; + currency: string; }) { const table = useTable('return-order-line-item'); const user = useUserState(); @@ -57,7 +59,8 @@ export default function ReturnOrderLineItemTable({ title: t`Add Line Item`, fields: newLineFields, initialData: { - order: orderId + order: orderId, + price_currency: currency }, table: table }); diff --git a/src/frontend/src/tables/sales/SalesOrderLineItemTable.tsx b/src/frontend/src/tables/sales/SalesOrderLineItemTable.tsx index d4dad568e0..a1c20485c3 100644 --- a/src/frontend/src/tables/sales/SalesOrderLineItemTable.tsx +++ b/src/frontend/src/tables/sales/SalesOrderLineItemTable.tsx @@ -35,10 +35,12 @@ import { TableHoverCard } from '../TableHoverCard'; export default function SalesOrderLineItemTable({ orderId, + currency, customerId, editable }: { orderId: number; + currency: string; customerId: number; editable: boolean; }) { @@ -191,7 +193,10 @@ export default function SalesOrderLineItemTable({ url: ApiEndpoints.sales_order_line_list, title: t`Add Line Item`, fields: createLineFields, - initialData: initialData, + initialData: { + ...initialData, + sale_price_currency: currency + }, table: table });