mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 05:26:47 +00:00
Pop to the previous context if the stock item is "bad"
This commit is contained in:
parent
0b3e716827
commit
faf8e45138
@ -66,7 +66,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
||||
context,
|
||||
L10().editCategory,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().categoryUpdated, success: true);
|
||||
}
|
||||
);
|
||||
@ -79,11 +79,11 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
||||
|
||||
@override
|
||||
Future<void> onBuild(BuildContext context) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
|
||||
int pk = category?.pk ?? -1;
|
||||
|
||||
@ -234,7 +234,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -64,7 +64,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await company.reload();
|
||||
|
||||
if (company.isSupplier) {
|
||||
@ -78,7 +78,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
||||
context,
|
||||
L10().companyEdit,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().companyUpdated, success: true);
|
||||
}
|
||||
);
|
||||
|
@ -88,7 +88,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
context,
|
||||
L10().editLocation,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().locationUpdated, success: true);
|
||||
}
|
||||
);
|
||||
@ -109,11 +109,11 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
||||
|
||||
@override
|
||||
Future<void> onBuild(BuildContext context) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
|
||||
int pk = location?.pk ?? -1;
|
||||
|
||||
@ -385,8 +385,8 @@ List<Widget> detailTiles() {
|
||||
MaterialPageRoute(builder: (context) =>
|
||||
InvenTreeQRView(
|
||||
StockLocationScanInItemsHandler(_loc)))
|
||||
).then((context) {
|
||||
refresh();
|
||||
).then((value) {
|
||||
refresh(context);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -72,11 +72,11 @@ class _PartAttachmentDisplayState extends RefreshableState<PartAttachmentsWidget
|
||||
showSnackIcon(L10().uploadFailed, success: false);
|
||||
}
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
|
||||
await InvenTreePartAttachment().list(
|
||||
filters: {
|
||||
|
@ -77,7 +77,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||
|
||||
@override
|
||||
Future<void> onBuild(BuildContext context) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
|
||||
setState(() {
|
||||
|
||||
@ -85,7 +85,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await part.reload();
|
||||
await part.getTestTemplates();
|
||||
}
|
||||
@ -94,7 +94,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||
|
||||
if (InvenTreeAPI().checkPermission("part", "view")) {
|
||||
await part.update(values: {"starred": "${!part.starred}"});
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||
context,
|
||||
L10().editPart,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().partEdited, success: true);
|
||||
}
|
||||
);
|
||||
@ -130,7 +130,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||
builder: (context) => PartImageWidget(part)
|
||||
)
|
||||
).then((value) {
|
||||
refresh();
|
||||
refresh(context);
|
||||
});
|
||||
}),
|
||||
),
|
||||
|
@ -32,7 +32,7 @@ class _PartImageState extends RefreshableState<PartImageWidget> {
|
||||
final InvenTreePart part;
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await part.reload();
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class _PartImageState extends RefreshableState<PartImageWidget> {
|
||||
showSnackIcon(L10().uploadFailed, success: false);
|
||||
}
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -26,7 +26,7 @@ class _PartNotesState extends RefreshableState<PartNotesWidget> {
|
||||
final InvenTreePart part;
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await part.reload();
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ class _PartNotesState extends RefreshableState<PartNotesWidget> {
|
||||
}
|
||||
},
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await order.reload();
|
||||
|
||||
lines = await order.getLineItems();
|
||||
@ -82,7 +82,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
context,
|
||||
L10().purchaseOrderEdit,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().purchaseOrderUpdated, success: true);
|
||||
}
|
||||
);
|
||||
@ -218,7 +218,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
icon: FontAwesomeIcons.signInAlt,
|
||||
onSuccess: (data) async {
|
||||
showSnackIcon(L10().receivedItem, success: true);
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -41,21 +41,21 @@ abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
|
||||
|
||||
// Function called after the widget is first build
|
||||
Future<void> onBuild(BuildContext context) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
// Function to request data for this page
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
return;
|
||||
}
|
||||
|
||||
Future<void> refresh() async {
|
||||
Future<void> refresh(BuildContext context) async {
|
||||
|
||||
setState(() {
|
||||
loading = true;
|
||||
});
|
||||
|
||||
await request();
|
||||
await request(context);
|
||||
|
||||
setState(() {
|
||||
loading = false;
|
||||
@ -100,7 +100,9 @@ abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
|
||||
body: Builder(
|
||||
builder: (BuildContext context) {
|
||||
return RefreshIndicator(
|
||||
onRefresh: refresh,
|
||||
onRefresh: () async {
|
||||
refresh(context);
|
||||
},
|
||||
child: getBody(context)
|
||||
);
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ import "package:inventree/l10.dart";
|
||||
import "package:inventree/helpers.dart";
|
||||
import "package:inventree/api.dart";
|
||||
import "package:inventree/api_form.dart";
|
||||
import 'package:one_context/one_context.dart';
|
||||
|
||||
|
||||
class StockDetailWidget extends StatefulWidget {
|
||||
@ -96,13 +97,20 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
|
||||
// Load part data if not already loaded
|
||||
if (part == null) {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
await item.reload();
|
||||
Future<void> request(BuildContext context) async {
|
||||
|
||||
final bool result = await item.reload();
|
||||
|
||||
// Could not load this stock item for some reason
|
||||
// Perhaps it has been depleted?
|
||||
if (!result || item.pk == -1) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
|
||||
// Request part information
|
||||
part = await InvenTreePart().get(item.partId) as InvenTreePart?;
|
||||
@ -244,7 +252,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
L10().editItem,
|
||||
fields: fields,
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
showSnackIcon(L10().stockItemUpdated, success: true);
|
||||
}
|
||||
);
|
||||
@ -261,7 +269,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
|
||||
_stockUpdateMessage(result);
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
Future <void> _addStockDialog() async {
|
||||
@ -293,7 +301,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
icon: FontAwesomeIcons.plusCircle,
|
||||
onSuccess: (data) async {
|
||||
_stockUpdateMessage(true);
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
|
||||
@ -340,7 +348,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
|
||||
_stockUpdateMessage(result);
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
|
||||
}
|
||||
|
||||
@ -372,7 +380,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
icon: FontAwesomeIcons.minusCircle,
|
||||
onSuccess: (data) async {
|
||||
_stockUpdateMessage(true);
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
|
||||
@ -413,7 +421,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
|
||||
_stockUpdateMessage(result);
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
Future <void> _countStockDialog() async {
|
||||
@ -445,7 +453,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
icon: FontAwesomeIcons.clipboardCheck,
|
||||
onSuccess: (data) async {
|
||||
_stockUpdateMessage(true);
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
|
||||
@ -494,7 +502,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
);
|
||||
}
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
|
||||
|
||||
@ -509,7 +517,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
|
||||
var result = await item.transferStock(context, locationId, quantity: quantity, notes: notes);
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
|
||||
if (result) {
|
||||
showSnackIcon(L10().stockItemTransferred, success: true);
|
||||
@ -549,7 +557,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
icon: FontAwesomeIcons.dolly,
|
||||
onSuccess: (data) async {
|
||||
_stockUpdateMessage(true);
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
|
||||
@ -801,7 +809,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
MaterialPageRoute(
|
||||
builder: (context) => StockItemTestResultsWidget(item))
|
||||
).then((context) {
|
||||
refresh();
|
||||
refresh(context);
|
||||
});
|
||||
}
|
||||
)
|
||||
@ -928,7 +936,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => InvenTreeQRView(StockItemScanIntoLocationHandler(item)))
|
||||
).then((context) {
|
||||
refresh();
|
||||
refresh(context);
|
||||
});
|
||||
},
|
||||
)
|
||||
@ -958,7 +966,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
icon: Icons.qr_code,
|
||||
);
|
||||
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -44,7 +44,7 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await item.getTestTemplates();
|
||||
await item.getTestResults();
|
||||
}
|
||||
@ -61,7 +61,7 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
|
||||
"test": "${name}",
|
||||
},
|
||||
onSuccess: (data) {
|
||||
refresh();
|
||||
refresh(context);
|
||||
},
|
||||
fileField: "attachment",
|
||||
);
|
||||
|
@ -31,7 +31,7 @@ class _StockNotesState extends RefreshableState<StockNotesWidget> {
|
||||
String getAppBarTitle(BuildContext context) => L10().stockItemNotes;
|
||||
|
||||
@override
|
||||
Future<void> request() async {
|
||||
Future<void> request(BuildContext context) async {
|
||||
await item.reload();
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ class _StockNotesState extends RefreshableState<StockNotesWidget> {
|
||||
}
|
||||
},
|
||||
onSuccess: (data) async {
|
||||
refresh();
|
||||
refresh(context);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user