mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 11:36:44 +00:00
[PUI] Order Currency (#7918)
* Fix purchase order currency * Fix for sales order tables * Fix return order table
This commit is contained in:
parent
d6218b76ff
commit
453dac6d00
@ -46,6 +46,7 @@ import {
|
|||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import useStatusCodes from '../../hooks/UseStatusCodes';
|
import useStatusCodes from '../../hooks/UseStatusCodes';
|
||||||
import { apiUrl } from '../../states/ApiState';
|
import { apiUrl } from '../../states/ApiState';
|
||||||
|
import { useGlobalSettingsState } from '../../states/SettingsState';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
||||||
import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable';
|
import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable';
|
||||||
@ -59,6 +60,7 @@ export default function PurchaseOrderDetail() {
|
|||||||
const { id } = useParams();
|
const { id } = useParams();
|
||||||
|
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
const globalSettings = useGlobalSettingsState();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
instance: order,
|
instance: order,
|
||||||
@ -74,6 +76,14 @@ export default function PurchaseOrderDetail() {
|
|||||||
refetchOnMount: true
|
refetchOnMount: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const orderCurrency = useMemo(() => {
|
||||||
|
return (
|
||||||
|
order.order_currency ||
|
||||||
|
order.supplier_detail?.currency ||
|
||||||
|
globalSettings.getSetting('INVENTREE_DEFAULT_CURRENCY')
|
||||||
|
);
|
||||||
|
}, [order, globalSettings]);
|
||||||
|
|
||||||
const purchaseOrderFields = usePurchaseOrderFields();
|
const purchaseOrderFields = usePurchaseOrderFields();
|
||||||
|
|
||||||
const editPurchaseOrder = useEditApiFormModal({
|
const editPurchaseOrder = useEditApiFormModal({
|
||||||
@ -258,6 +268,7 @@ export default function PurchaseOrderDetail() {
|
|||||||
<Accordion.Panel>
|
<Accordion.Panel>
|
||||||
<PurchaseOrderLineItemTable
|
<PurchaseOrderLineItemTable
|
||||||
order={order}
|
order={order}
|
||||||
|
currency={orderCurrency}
|
||||||
orderId={Number(id)}
|
orderId={Number(id)}
|
||||||
supplierId={Number(order.supplier)}
|
supplierId={Number(order.supplier)}
|
||||||
/>
|
/>
|
||||||
@ -271,6 +282,7 @@ export default function PurchaseOrderDetail() {
|
|||||||
<ExtraLineItemTable
|
<ExtraLineItemTable
|
||||||
endpoint={ApiEndpoints.purchase_order_extra_line_list}
|
endpoint={ApiEndpoints.purchase_order_extra_line_list}
|
||||||
orderId={order.pk}
|
orderId={order.pk}
|
||||||
|
currency={orderCurrency}
|
||||||
role={UserRoles.purchase_order}
|
role={UserRoles.purchase_order}
|
||||||
/>
|
/>
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
|
@ -45,6 +45,7 @@ import {
|
|||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import useStatusCodes from '../../hooks/UseStatusCodes';
|
import useStatusCodes from '../../hooks/UseStatusCodes';
|
||||||
import { apiUrl } from '../../states/ApiState';
|
import { apiUrl } from '../../states/ApiState';
|
||||||
|
import { useGlobalSettingsState } from '../../states/SettingsState';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
||||||
import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable';
|
import ExtraLineItemTable from '../../tables/general/ExtraLineItemTable';
|
||||||
@ -58,6 +59,8 @@ export default function ReturnOrderDetail() {
|
|||||||
|
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
|
||||||
|
const globalSettings = useGlobalSettingsState();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
instance: order,
|
instance: order,
|
||||||
instanceQuery,
|
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(() => {
|
const detailsPanel = useMemo(() => {
|
||||||
if (instanceQuery.isFetching) {
|
if (instanceQuery.isFetching) {
|
||||||
return <Skeleton />;
|
return <Skeleton />;
|
||||||
@ -237,6 +248,7 @@ export default function ReturnOrderDetail() {
|
|||||||
<ReturnOrderLineItemTable
|
<ReturnOrderLineItemTable
|
||||||
orderId={order.pk}
|
orderId={order.pk}
|
||||||
customerId={order.customer}
|
customerId={order.customer}
|
||||||
|
currency={orderCurrency}
|
||||||
/>
|
/>
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
@ -248,6 +260,7 @@ export default function ReturnOrderDetail() {
|
|||||||
<ExtraLineItemTable
|
<ExtraLineItemTable
|
||||||
endpoint={ApiEndpoints.return_order_extra_line_list}
|
endpoint={ApiEndpoints.return_order_extra_line_list}
|
||||||
orderId={order.pk}
|
orderId={order.pk}
|
||||||
|
currency={orderCurrency}
|
||||||
role={UserRoles.return_order}
|
role={UserRoles.return_order}
|
||||||
/>
|
/>
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
|
@ -48,6 +48,7 @@ import {
|
|||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import useStatusCodes from '../../hooks/UseStatusCodes';
|
import useStatusCodes from '../../hooks/UseStatusCodes';
|
||||||
import { apiUrl } from '../../states/ApiState';
|
import { apiUrl } from '../../states/ApiState';
|
||||||
|
import { useGlobalSettingsState } from '../../states/SettingsState';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { BuildOrderTable } from '../../tables/build/BuildOrderTable';
|
import { BuildOrderTable } from '../../tables/build/BuildOrderTable';
|
||||||
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
||||||
@ -64,6 +65,8 @@ export default function SalesOrderDetail() {
|
|||||||
|
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
|
|
||||||
|
const globalSettings = useGlobalSettingsState();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
instance: order,
|
instance: order,
|
||||||
instanceQuery,
|
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(() => {
|
const detailsPanel = useMemo(() => {
|
||||||
if (instanceQuery.isFetching) {
|
if (instanceQuery.isFetching) {
|
||||||
return <Skeleton />;
|
return <Skeleton />;
|
||||||
@ -271,6 +282,7 @@ export default function SalesOrderDetail() {
|
|||||||
<Accordion.Panel>
|
<Accordion.Panel>
|
||||||
<SalesOrderLineItemTable
|
<SalesOrderLineItemTable
|
||||||
orderId={order.pk}
|
orderId={order.pk}
|
||||||
|
currency={orderCurrency}
|
||||||
customerId={order.customer}
|
customerId={order.customer}
|
||||||
editable={
|
editable={
|
||||||
order.status != soStatus.COMPLETE &&
|
order.status != soStatus.COMPLETE &&
|
||||||
@ -287,6 +299,7 @@ export default function SalesOrderDetail() {
|
|||||||
<ExtraLineItemTable
|
<ExtraLineItemTable
|
||||||
endpoint={ApiEndpoints.sales_order_extra_line_list}
|
endpoint={ApiEndpoints.sales_order_extra_line_list}
|
||||||
orderId={order.pk}
|
orderId={order.pk}
|
||||||
|
currency={orderCurrency}
|
||||||
role={UserRoles.sales_order}
|
role={UserRoles.sales_order}
|
||||||
/>
|
/>
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
|
@ -2,10 +2,8 @@ import { t } from '@lingui/macro';
|
|||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { AddItemButton } from '../../components/buttons/AddItemButton';
|
import { AddItemButton } from '../../components/buttons/AddItemButton';
|
||||||
import { ApiFormFieldSet } from '../../components/forms/fields/ApiFormField';
|
|
||||||
import { formatCurrency } from '../../defaults/formatters';
|
import { formatCurrency } from '../../defaults/formatters';
|
||||||
import { ApiEndpoints } from '../../enums/ApiEndpoints';
|
import { ApiEndpoints } from '../../enums/ApiEndpoints';
|
||||||
import { ModelType } from '../../enums/ModelType';
|
|
||||||
import { UserRoles } from '../../enums/Roles';
|
import { UserRoles } from '../../enums/Roles';
|
||||||
import { extraLineItemFields } from '../../forms/CommonForms';
|
import { extraLineItemFields } from '../../forms/CommonForms';
|
||||||
import {
|
import {
|
||||||
@ -28,10 +26,12 @@ import {
|
|||||||
export default function ExtraLineItemTable({
|
export default function ExtraLineItemTable({
|
||||||
endpoint,
|
endpoint,
|
||||||
orderId,
|
orderId,
|
||||||
|
currency,
|
||||||
role
|
role
|
||||||
}: {
|
}: {
|
||||||
endpoint: ApiEndpoints;
|
endpoint: ApiEndpoints;
|
||||||
orderId: number;
|
orderId: number;
|
||||||
|
currency: string;
|
||||||
role: UserRoles;
|
role: UserRoles;
|
||||||
}) {
|
}) {
|
||||||
const table = useTable('extra-line-item');
|
const table = useTable('extra-line-item');
|
||||||
@ -84,7 +84,10 @@ export default function ExtraLineItemTable({
|
|||||||
url: endpoint,
|
url: endpoint,
|
||||||
title: t`Add Line Item`,
|
title: t`Add Line Item`,
|
||||||
fields: extraLineItemFields(),
|
fields: extraLineItemFields(),
|
||||||
initialData: initialData,
|
initialData: {
|
||||||
|
...initialData,
|
||||||
|
price_currency: currency
|
||||||
|
},
|
||||||
table: table
|
table: table
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -49,11 +49,13 @@ import { TableHoverCard } from '../TableHoverCard';
|
|||||||
export function PurchaseOrderLineItemTable({
|
export function PurchaseOrderLineItemTable({
|
||||||
order,
|
order,
|
||||||
orderId,
|
orderId,
|
||||||
|
currency,
|
||||||
supplierId,
|
supplierId,
|
||||||
params
|
params
|
||||||
}: {
|
}: {
|
||||||
order: any;
|
order: any;
|
||||||
orderId: number;
|
orderId: number;
|
||||||
|
currency: string;
|
||||||
supplierId?: number;
|
supplierId?: number;
|
||||||
params?: any;
|
params?: any;
|
||||||
}) {
|
}) {
|
||||||
@ -247,7 +249,10 @@ export function PurchaseOrderLineItemTable({
|
|||||||
url: ApiEndpoints.purchase_order_line_list,
|
url: ApiEndpoints.purchase_order_line_list,
|
||||||
title: t`Add Line Item`,
|
title: t`Add Line Item`,
|
||||||
fields: addPurchaseOrderFields,
|
fields: addPurchaseOrderFields,
|
||||||
initialData: initialData,
|
initialData: {
|
||||||
|
...initialData,
|
||||||
|
purchase_price_currency: currency
|
||||||
|
},
|
||||||
table: table
|
table: table
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -31,10 +31,12 @@ import { RowDeleteAction, RowEditAction } from '../RowActions';
|
|||||||
|
|
||||||
export default function ReturnOrderLineItemTable({
|
export default function ReturnOrderLineItemTable({
|
||||||
orderId,
|
orderId,
|
||||||
customerId
|
customerId,
|
||||||
|
currency
|
||||||
}: {
|
}: {
|
||||||
orderId: number;
|
orderId: number;
|
||||||
customerId: number;
|
customerId: number;
|
||||||
|
currency: string;
|
||||||
}) {
|
}) {
|
||||||
const table = useTable('return-order-line-item');
|
const table = useTable('return-order-line-item');
|
||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
@ -57,7 +59,8 @@ export default function ReturnOrderLineItemTable({
|
|||||||
title: t`Add Line Item`,
|
title: t`Add Line Item`,
|
||||||
fields: newLineFields,
|
fields: newLineFields,
|
||||||
initialData: {
|
initialData: {
|
||||||
order: orderId
|
order: orderId,
|
||||||
|
price_currency: currency
|
||||||
},
|
},
|
||||||
table: table
|
table: table
|
||||||
});
|
});
|
||||||
|
@ -35,10 +35,12 @@ import { TableHoverCard } from '../TableHoverCard';
|
|||||||
|
|
||||||
export default function SalesOrderLineItemTable({
|
export default function SalesOrderLineItemTable({
|
||||||
orderId,
|
orderId,
|
||||||
|
currency,
|
||||||
customerId,
|
customerId,
|
||||||
editable
|
editable
|
||||||
}: {
|
}: {
|
||||||
orderId: number;
|
orderId: number;
|
||||||
|
currency: string;
|
||||||
customerId: number;
|
customerId: number;
|
||||||
editable: boolean;
|
editable: boolean;
|
||||||
}) {
|
}) {
|
||||||
@ -191,7 +193,10 @@ export default function SalesOrderLineItemTable({
|
|||||||
url: ApiEndpoints.sales_order_line_list,
|
url: ApiEndpoints.sales_order_line_list,
|
||||||
title: t`Add Line Item`,
|
title: t`Add Line Item`,
|
||||||
fields: createLineFields,
|
fields: createLineFields,
|
||||||
initialData: initialData,
|
initialData: {
|
||||||
|
...initialData,
|
||||||
|
sale_price_currency: currency
|
||||||
|
},
|
||||||
table: table
|
table: table
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user