mirror of
https://github.com/inventree/InvenTree.git
synced 2026-07-17 20:23:50 +00:00
Bulk delete line items (#12391)
* Add bulk-delete mixin for order line items * Add unit tests * Enable frontend support * Add CHANGELOG entry * Add locking control for TransferOrder * Fix playwright tests * Fix playwright tests
This commit is contained in:
@@ -390,7 +390,8 @@ export default function SystemSettings() {
|
||||
keys={[
|
||||
'TRANSFERORDER_ENABLED',
|
||||
'TRANSFERORDER_REFERENCE_PATTERN',
|
||||
'TRANSFERORDER_REQUIRE_RESPONSIBLE'
|
||||
'TRANSFERORDER_REQUIRE_RESPONSIBLE',
|
||||
'TRANSFERORDER_EDIT_COMPLETED_ORDERS'
|
||||
]}
|
||||
/>
|
||||
)
|
||||
|
||||
@@ -69,13 +69,11 @@ export default function TransferOrderDetail() {
|
||||
const orderOpen: boolean =
|
||||
order.status != toStatus.COMPLETE && order.status != toStatus.CANCELLED;
|
||||
|
||||
return orderOpen;
|
||||
// TODO: does this setting make any sense for Transfer Orders???
|
||||
// if (orderOpen) {
|
||||
// return true;
|
||||
// } else {
|
||||
// return globalSettings.isSet('TRANSFERORDER_EDIT_COMPLETED_ORDERS');
|
||||
// }
|
||||
if (orderOpen) {
|
||||
return true;
|
||||
} else {
|
||||
return globalSettings.isSet('TRANSFERORDER_EDIT_COMPLETED_ORDERS');
|
||||
}
|
||||
}, [globalSettings, order.status, toStatus]);
|
||||
|
||||
// for now, only permit editing allocations when line items can be edited
|
||||
|
||||
@@ -179,6 +179,9 @@ export default function ExtraLineItemTable({
|
||||
params: {
|
||||
order: orderId
|
||||
},
|
||||
enableSelection: true,
|
||||
enableBulkDelete: editable && user.hasDeleteRole(role),
|
||||
afterBulkDelete: orderDetailRefresh,
|
||||
defaultSortColumn: 'line',
|
||||
rowActions: rowActions,
|
||||
tableActions: tableActions
|
||||
|
||||
@@ -435,6 +435,9 @@ export function PurchaseOrderLineItemTable({
|
||||
props={{
|
||||
enableSelection: true,
|
||||
enableDownload: true,
|
||||
enableBulkDelete:
|
||||
editable && user.hasDeleteRole(UserRoles.purchase_order),
|
||||
afterBulkDelete: orderDetailRefresh,
|
||||
defaultSortColumn: 'line',
|
||||
params: {
|
||||
...params,
|
||||
|
||||
@@ -274,6 +274,9 @@ export default function ReturnOrderLineItemTable({
|
||||
defaultSortColumn: 'line',
|
||||
enableSelection:
|
||||
inProgress && user.hasChangeRole(UserRoles.return_order),
|
||||
enableBulkDelete:
|
||||
editable && user.hasDeleteRole(UserRoles.return_order),
|
||||
afterBulkDelete: orderDetailRefresh,
|
||||
tableActions: tableActions,
|
||||
tableFilters: tableFilters,
|
||||
rowActions: rowActions,
|
||||
|
||||
@@ -609,6 +609,9 @@ export default function SalesOrderLineItemTable({
|
||||
props={{
|
||||
enableSelection: true,
|
||||
enableDownload: true,
|
||||
enableBulkDelete:
|
||||
editable && user.hasDeleteRole(UserRoles.sales_order),
|
||||
afterBulkDelete: orderDetailRefresh,
|
||||
params: {
|
||||
order: orderId,
|
||||
part_detail: true
|
||||
|
||||
@@ -517,6 +517,9 @@ export default function TransferOrderLineItemTable({
|
||||
props={{
|
||||
enableSelection: true,
|
||||
enableDownload: true,
|
||||
enableBulkDelete:
|
||||
editable && user.hasDeleteRole(UserRoles.transfer_order),
|
||||
afterBulkDelete: orderDetailRefresh,
|
||||
params: {
|
||||
order: orderId,
|
||||
part_detail: true
|
||||
|
||||
@@ -283,7 +283,7 @@ test('Build Order - Build Outputs', async ({ browser }) => {
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Check the "printing" actions for the selected outputs
|
||||
await page.getByRole('checkbox', { name: 'Select all records' }).check();
|
||||
await page.getByRole('checkbox', { name: 'Select all records' }).click();
|
||||
await page
|
||||
.getByRole('tabpanel', { name: 'Incomplete Outputs' })
|
||||
.getByLabel('action-menu-printing-actions')
|
||||
|
||||
@@ -507,7 +507,12 @@ test('Purchase Orders - Receive Items', async ({ browser }) => {
|
||||
await loadTab(page, 'Line Items');
|
||||
|
||||
await page.getByRole('cell', { name: '002.02-PCB' }).waitFor();
|
||||
await page.getByLabel('Select all records').click();
|
||||
|
||||
// Select all line items to receive
|
||||
await page
|
||||
.getByRole('region', { name: 'Line Items', exact: true })
|
||||
.getByLabel('Select all records')
|
||||
.click();
|
||||
await page.waitForTimeout(100);
|
||||
await page.getByLabel('action-button-receive-items').click();
|
||||
|
||||
@@ -619,7 +624,10 @@ test('Purchase Orders - Receive Virtual Items', async ({ browser }) => {
|
||||
await loadTab(page, 'Line Items');
|
||||
await page.getByRole('cell', { name: 'Thumbnail CRM license' }).waitFor();
|
||||
|
||||
await page.getByRole('checkbox', { name: 'Select all records' }).click();
|
||||
await page
|
||||
.getByRole('region', { name: 'Line Items', exact: true })
|
||||
.getByLabel('Select all records')
|
||||
.click();
|
||||
await page
|
||||
.getByRole('button', { name: 'action-button-receive-items' })
|
||||
.click();
|
||||
|
||||
@@ -14,7 +14,10 @@ test('Return Orders - Receive Items', async ({ browser }) => {
|
||||
|
||||
await page.getByRole('cell', { name: 'WID-REV-A' }).first().waitFor();
|
||||
|
||||
await page.getByRole('checkbox', { name: 'Select all records' }).click();
|
||||
await page
|
||||
.getByRole('region', { name: 'Line Items', exact: true })
|
||||
.getByLabel('Select all records')
|
||||
.click();
|
||||
await page.getByRole('button', { name: 'action-button-receive-' }).click();
|
||||
await page.getByRole('banner').getByText('Receive Items').waitFor();
|
||||
await page.getByRole('button', { name: 'Cancel' }).click();
|
||||
|
||||
Reference in New Issue
Block a user