mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Allocated stock table fix (#7636)
* Expose batch code field to StockItemSerializerBrief * Expose more fields to PartBriefSerializer * Additional export fields to BuildItemSerializer * Bump API version * Fix playwright test
This commit is contained in:
parent
0db280ad74
commit
750e6d81fa
@ -1,12 +1,17 @@
|
|||||||
"""InvenTree API version information."""
|
"""InvenTree API version information."""
|
||||||
|
|
||||||
# InvenTree API version
|
# InvenTree API version
|
||||||
INVENTREE_API_VERSION = 220
|
INVENTREE_API_VERSION = 221
|
||||||
|
|
||||||
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
|
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
|
||||||
|
|
||||||
|
|
||||||
INVENTREE_API_TEXT = """
|
INVENTREE_API_TEXT = """
|
||||||
|
v221 - 2024-07-13 : https://github.com/inventree/InvenTree/pull/7636
|
||||||
|
- Adds missing fields from StockItemBriefSerializer
|
||||||
|
- Adds missing fields from PartBriefSerializer
|
||||||
|
- Adds extra exportable fields to BuildItemSerializer
|
||||||
|
|
||||||
v220 - 2024-07-11 : https://github.com/inventree/InvenTree/pull/7585
|
v220 - 2024-07-11 : https://github.com/inventree/InvenTree/pull/7585
|
||||||
- Adds "revision_of" field to Part serializer
|
- Adds "revision_of" field to Part serializer
|
||||||
- Adds new API filters for "revision" status
|
- Adds new API filters for "revision" status
|
||||||
|
@ -1072,6 +1072,8 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||||||
'part_name',
|
'part_name',
|
||||||
'part_ipn',
|
'part_ipn',
|
||||||
'available_quantity',
|
'available_quantity',
|
||||||
|
'item_batch_code',
|
||||||
|
'item_serial',
|
||||||
]
|
]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -1103,6 +1105,8 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||||||
'part_name',
|
'part_name',
|
||||||
'part_ipn',
|
'part_ipn',
|
||||||
'available_quantity',
|
'available_quantity',
|
||||||
|
'item_batch_code',
|
||||||
|
'item_serial_number',
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -1138,6 +1142,9 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||||||
part_name = serializers.CharField(source='stock_item.part.name', label=_('Part Name'), read_only=True)
|
part_name = serializers.CharField(source='stock_item.part.name', label=_('Part Name'), read_only=True)
|
||||||
part_ipn = serializers.CharField(source='stock_item.part.IPN', label=_('Part IPN'), read_only=True)
|
part_ipn = serializers.CharField(source='stock_item.part.IPN', label=_('Part IPN'), read_only=True)
|
||||||
|
|
||||||
|
item_batch_code = serializers.CharField(source='stock_item.batch', label=_('Batch Code'), read_only=True)
|
||||||
|
item_serial_number = serializers.CharField(source='stock_item.serial', label=_('Serial Number'), read_only=True)
|
||||||
|
|
||||||
# Annotated fields
|
# Annotated fields
|
||||||
build = serializers.PrimaryKeyRelatedField(source='build_line.build', many=False, read_only=True)
|
build = serializers.PrimaryKeyRelatedField(source='build_line.build', many=False, read_only=True)
|
||||||
|
|
||||||
|
@ -309,7 +309,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
'image',
|
'image',
|
||||||
'thumbnail',
|
'thumbnail',
|
||||||
'active',
|
'active',
|
||||||
|
'locked',
|
||||||
'assembly',
|
'assembly',
|
||||||
|
'component',
|
||||||
'is_template',
|
'is_template',
|
||||||
'purchaseable',
|
'purchaseable',
|
||||||
'salable',
|
'salable',
|
||||||
|
@ -306,6 +306,7 @@ class StockItemSerializerBrief(
|
|||||||
'location',
|
'location',
|
||||||
'quantity',
|
'quantity',
|
||||||
'serial',
|
'serial',
|
||||||
|
'batch',
|
||||||
'supplier_part',
|
'supplier_part',
|
||||||
'barcode_hash',
|
'barcode_hash',
|
||||||
]
|
]
|
||||||
|
@ -57,7 +57,6 @@ import {
|
|||||||
useEditApiFormModal
|
useEditApiFormModal
|
||||||
} from '../../hooks/UseForm';
|
} from '../../hooks/UseForm';
|
||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import { apiUrl } from '../../states/ApiState';
|
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
||||||
import InstalledItemsTable from '../../tables/stock/InstalledItemsTable';
|
import InstalledItemsTable from '../../tables/stock/InstalledItemsTable';
|
||||||
|
@ -2,6 +2,7 @@ import { t } from '@lingui/macro';
|
|||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
|
|
||||||
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 {
|
import {
|
||||||
useDeleteApiFormModal,
|
useDeleteApiFormModal,
|
||||||
@ -58,6 +59,13 @@ export default function BuildAllocatedStockTable({
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
switchable: false
|
switchable: false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
accessor: 'serial',
|
||||||
|
title: t`Serial Number`,
|
||||||
|
sortable: false,
|
||||||
|
switchable: true,
|
||||||
|
render: (record: any) => record?.stock_item_detail?.serial
|
||||||
|
},
|
||||||
{
|
{
|
||||||
accessor: 'batch',
|
accessor: 'batch',
|
||||||
title: t`Batch Code`,
|
title: t`Batch Code`,
|
||||||
@ -150,7 +158,9 @@ export default function BuildAllocatedStockTable({
|
|||||||
enableDownload: true,
|
enableDownload: true,
|
||||||
enableSelection: true,
|
enableSelection: true,
|
||||||
rowActions: rowActions,
|
rowActions: rowActions,
|
||||||
tableFilters: tableFilters
|
tableFilters: tableFilters,
|
||||||
|
modelField: 'stock_item',
|
||||||
|
modelType: ModelType.stockitem
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
@ -19,10 +19,10 @@ test('PUI - Pages - Build Order', async ({ page }) => {
|
|||||||
await page.getByRole('tab', { name: 'Allocated Stock' }).click();
|
await page.getByRole('tab', { name: 'Allocated Stock' }).click();
|
||||||
|
|
||||||
// Check for expected text in the table
|
// Check for expected text in the table
|
||||||
await page.getByText('R_10R_0402_1%').click();
|
await page.getByText('R_10R_0402_1%').waitFor();
|
||||||
await page
|
await page
|
||||||
.getByRole('cell', { name: 'R38, R39, R40, R41, R42, R43' })
|
.getByRole('cell', { name: 'R38, R39, R40, R41, R42, R43' })
|
||||||
.click();
|
.waitFor();
|
||||||
|
|
||||||
// Click through to the "parent" build
|
// Click through to the "parent" build
|
||||||
await page.getByRole('tab', { name: 'Build Details' }).click();
|
await page.getByRole('tab', { name: 'Build Details' }).click();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user