[PUI] Order Currency (#7918)

* Fix purchase order currency

* Fix for sales order tables

* Fix return order table
This commit is contained in:
Oliver 2024-08-19 16:52:46 +10:00 committed by GitHub
parent d6218b76ff
commit 453dac6d00
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 61 additions and 7 deletions

View File

@ -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() {
<Accordion.Panel>
<PurchaseOrderLineItemTable
order={order}
currency={orderCurrency}
orderId={Number(id)}
supplierId={Number(order.supplier)}
/>
@ -271,6 +282,7 @@ export default function PurchaseOrderDetail() {
<ExtraLineItemTable
endpoint={ApiEndpoints.purchase_order_extra_line_list}
orderId={order.pk}
currency={orderCurrency}
role={UserRoles.purchase_order}
/>
</Accordion.Panel>

View File

@ -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 <Skeleton />;
@ -237,6 +248,7 @@ export default function ReturnOrderDetail() {
<ReturnOrderLineItemTable
orderId={order.pk}
customerId={order.customer}
currency={orderCurrency}
/>
</Accordion.Panel>
</Accordion.Item>
@ -248,6 +260,7 @@ export default function ReturnOrderDetail() {
<ExtraLineItemTable
endpoint={ApiEndpoints.return_order_extra_line_list}
orderId={order.pk}
currency={orderCurrency}
role={UserRoles.return_order}
/>
</Accordion.Panel>

View File

@ -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 <Skeleton />;
@ -271,6 +282,7 @@ export default function SalesOrderDetail() {
<Accordion.Panel>
<SalesOrderLineItemTable
orderId={order.pk}
currency={orderCurrency}
customerId={order.customer}
editable={
order.status != soStatus.COMPLETE &&
@ -287,6 +299,7 @@ export default function SalesOrderDetail() {
<ExtraLineItemTable
endpoint={ApiEndpoints.sales_order_extra_line_list}
orderId={order.pk}
currency={orderCurrency}
role={UserRoles.sales_order}
/>
</Accordion.Panel>

View File

@ -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
});

View File

@ -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
});

View File

@ -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
});

View File

@ -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
});