mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	Support for searching sales order shipments (#8992)
Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
This commit is contained in:
		| @@ -53,6 +53,7 @@ Customize settings for search results: | ||||
| {{ usersetting("SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS") }} | ||||
| {{ usersetting("SEARCH_PREVIEW_SHOW_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_EXCLUDE_INACTIVE_RETURN_ORDERS") }} | ||||
|  | ||||
|   | ||||
| @@ -511,6 +511,7 @@ class APISearchView(GenericAPIView): | ||||
|             'purchaseorder': order.api.PurchaseOrderList, | ||||
|             'returnorder': order.api.ReturnOrderList, | ||||
|             'salesorder': order.api.SalesOrderList, | ||||
|             'salesordershipment': order.api.SalesOrderShipmentList, | ||||
|             'stockitem': stock.api.StockList, | ||||
|             'stocklocation': stock.api.StockLocationList, | ||||
|         } | ||||
|   | ||||
| @@ -127,6 +127,12 @@ USER_SETTINGS: dict[str, InvenTreeSettingsKeyType] = { | ||||
|         'validator': bool, | ||||
|         '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': { | ||||
|         'name': _('Search Return Orders'), | ||||
|         'description': _('Display return orders in search preview window'), | ||||
|   | ||||
| @@ -1270,6 +1270,13 @@ class SalesOrderShipmentList(SalesOrderShipmentMixin, ListCreateAPI): | ||||
|     filter_backends = SEARCH_ORDER_FILTER_ALIAS | ||||
|     ordering_fields = ['reference', 'delivery_date', 'shipment_date', 'allocated_items'] | ||||
|  | ||||
|     search_fields = [ | ||||
|         'order__reference', | ||||
|         'reference', | ||||
|         'tracking_number', | ||||
|         'invoice_number', | ||||
|     ] | ||||
|  | ||||
|  | ||||
| class SalesOrderShipmentDetail(SalesOrderShipmentMixin, RetrieveUpdateDestroyAPI): | ||||
|     """API detail endpooint for SalesOrderShipment model.""" | ||||
|   | ||||
| @@ -247,6 +247,13 @@ export function SearchDrawer({ | ||||
|           user.hasViewRole(UserRoles.sales_order) && | ||||
|           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, | ||||
|         parameters: { | ||||
|   | ||||
| @@ -84,6 +84,7 @@ export default function UserSettings() { | ||||
|               'SEARCH_PREVIEW_EXCLUDE_INACTIVE_PURCHASE_ORDERS', | ||||
|               'SEARCH_PREVIEW_SHOW_SALES_ORDERS', | ||||
|               'SEARCH_PREVIEW_EXCLUDE_INACTIVE_SALES_ORDERS', | ||||
|               'SEARCH_PREVIEW_SHOW_SALES_ORDER_SHIPMENTS', | ||||
|               'SEARCH_PREVIEW_SHOW_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.getByText('Quantity: 42').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(); | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user