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:
parent
d363c408f8
commit
138aa01d7e
@ -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") }}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
}
|
}
|
||||||
|
@ -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'),
|
||||||
|
@ -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."""
|
||||||
|
@ -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: {
|
||||||
|
@ -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'
|
||||||
]}
|
]}
|
||||||
|
@ -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();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user