2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-28 03:26:45 +00:00

Support for searching sales order shipments (#8992)

Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
This commit is contained in:
Dean 2025-02-04 01:13:52 +13:00 committed by GitHub
parent d363c408f8
commit 138aa01d7e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 51 additions and 0 deletions

View File

@ -53,6 +53,7 @@ Customize settings for search results:
{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS") }} {{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS") }}
{{ usersetting("SEARCH_PREVIEW_SHOW_SALES_ORDERS") }} {{ usersetting("SEARCH_PREVIEW_SHOW_SALES_ORDERS") }}
{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS") }} {{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS") }}
{{ usersetting("SEARCH_PREVIEW_SHOW_SALES_ORDER_SHIPMENTS") }}
{{ usersetting("SEARCH_PREVIEW_SHOW_RETURN_ORDERS") }} {{ usersetting("SEARCH_PREVIEW_SHOW_RETURN_ORDERS") }}
{{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS") }} {{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS") }}

View File

@ -511,6 +511,7 @@ class APISearchView(GenericAPIView):
'purchaseorder': order.api.PurchaseOrderList, 'purchaseorder': order.api.PurchaseOrderList,
'returnorder': order.api.ReturnOrderList, 'returnorder': order.api.ReturnOrderList,
'salesorder': order.api.SalesOrderList, 'salesorder': order.api.SalesOrderList,
'salesordershipment': order.api.SalesOrderShipmentList,
'stockitem': stock.api.StockList, 'stockitem': stock.api.StockList,
'stocklocation': stock.api.StockLocationList, 'stocklocation': stock.api.StockLocationList,
} }

View File

@ -127,6 +127,12 @@ USER_SETTINGS: dict[str, InvenTreeSettingsKeyType] = {
'validator': bool, 'validator': bool,
'default': True, 'default': True,
}, },
'SEARCH_PREVIEW_SHOW_SALES_ORDER_SHIPMENTS': {
'name': _('Search Sales Order Shipments'),
'description': _('Display sales order shipments in search preview window'),
'default': True,
'validator': bool,
},
'SEARCH_PREVIEW_SHOW_RETURN_ORDERS': { 'SEARCH_PREVIEW_SHOW_RETURN_ORDERS': {
'name': _('Search Return Orders'), 'name': _('Search Return Orders'),
'description': _('Display return orders in search preview window'), 'description': _('Display return orders in search preview window'),

View File

@ -1270,6 +1270,13 @@ class SalesOrderShipmentList(SalesOrderShipmentMixin, ListCreateAPI):
filter_backends = SEARCH_ORDER_FILTER_ALIAS filter_backends = SEARCH_ORDER_FILTER_ALIAS
ordering_fields = ['reference', 'delivery_date', 'shipment_date', 'allocated_items'] ordering_fields = ['reference', 'delivery_date', 'shipment_date', 'allocated_items']
search_fields = [
'order__reference',
'reference',
'tracking_number',
'invoice_number',
]
class SalesOrderShipmentDetail(SalesOrderShipmentMixin, RetrieveUpdateDestroyAPI): class SalesOrderShipmentDetail(SalesOrderShipmentMixin, RetrieveUpdateDestroyAPI):
"""API detail endpooint for SalesOrderShipment model.""" """API detail endpooint for SalesOrderShipment model."""

View File

@ -247,6 +247,13 @@ export function SearchDrawer({
user.hasViewRole(UserRoles.sales_order) && user.hasViewRole(UserRoles.sales_order) &&
userSettings.isSet('SEARCH_PREVIEW_SHOW_SALES_ORDERS') userSettings.isSet('SEARCH_PREVIEW_SHOW_SALES_ORDERS')
}, },
{
model: ModelType.salesordershipment,
parameters: {},
enabled:
user.hasViewRole(UserRoles.sales_order) &&
userSettings.isSet('SEARCH_PREVIEW_SHOW_SALES_ORDER_SHIPMENTS')
},
{ {
model: ModelType.returnorder, model: ModelType.returnorder,
parameters: { parameters: {

View File

@ -84,6 +84,7 @@ export default function UserSettings() {
'SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS', 'SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS',
'SEARCH_PREVIEW_SHOW_SALES_ORDERS', 'SEARCH_PREVIEW_SHOW_SALES_ORDERS',
'SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS', 'SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS',
'SEARCH_PREVIEW_SHOW_SALES_ORDER_SHIPMENTS',
'SEARCH_PREVIEW_SHOW_RETURN_ORDERS', 'SEARCH_PREVIEW_SHOW_RETURN_ORDERS',
'SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS' 'SEARCH_PREVIEW_EXCLUDE_INACTIVE_RETURN_ORDERS'
]} ]}

View File

@ -180,4 +180,32 @@ test('Sales Orders - Shipments', async ({ page }) => {
await page.getByLabel('related-field-stock_item').click(); await page.getByLabel('related-field-stock_item').click();
await page.getByText('Quantity: 42').click(); await page.getByText('Quantity: 42').click();
await page.getByRole('button', { name: 'Cancel' }).click(); await page.getByRole('button', { name: 'Cancel' }).click();
// Search for shipment by tracking number
await page.getByLabel('open-search').click();
await page.getByLabel('global-search-input').clear();
await page.waitForTimeout(250);
await page.getByLabel('global-search-input').fill('TRK-002');
await page.waitForTimeout(250);
await page
.getByText(/SO0009/)
.first()
.click();
// Search for shipment by invoice number
await page.getByLabel('open-search').click();
await page.getByLabel('global-search-input').clear();
await page.waitForTimeout(250);
await page.getByLabel('global-search-input').fill('INV-123');
await page.waitForTimeout(250);
await page
.getByText(/SO0025/)
.first()
.click();
}); });