mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +00:00
Display history
This commit is contained in:
parent
4a7884f7fd
commit
43faec8b21
@ -56,6 +56,67 @@ class InvenTreeStockItemTestResult extends InvenTreeModel {
|
||||
}
|
||||
|
||||
|
||||
class InvenTreeStockItemHistory extends InvenTreeModel {
|
||||
|
||||
InvenTreeStockItemHistory() : super();
|
||||
|
||||
InvenTreeStockItemHistory.fromJson(Map<String, dynamic> json) : super.fromJson(json);
|
||||
|
||||
@override
|
||||
InvenTreeModel createFromJson(Map<String, dynamic> json) {
|
||||
return InvenTreeStockItemHistory.fromJson(json);
|
||||
}
|
||||
|
||||
@override
|
||||
String get URL => "stock/track/";
|
||||
|
||||
@override
|
||||
Map<String, String> defaultListFilters() {
|
||||
|
||||
// By default, order by decreasing date
|
||||
return {
|
||||
"ordering": "-date",
|
||||
};
|
||||
}
|
||||
|
||||
DateTime? get date {
|
||||
if (jsondata.containsKey("date")) {
|
||||
return DateTime.tryParse((jsondata["date"] ?? "") as String);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
String get dateString {
|
||||
var d = date;
|
||||
|
||||
if (d == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return DateFormat("yyyy-MM-dd").format(d);
|
||||
}
|
||||
|
||||
String get label => (jsondata["label"] ?? "") as String;
|
||||
|
||||
String get quantityString {
|
||||
Map<String, dynamic> deltas = (jsondata["deltas"] ?? {}) as Map<String, dynamic>;
|
||||
|
||||
// Serial number takes priority here
|
||||
if (deltas.containsKey("serial")) {
|
||||
var serial = (deltas["serial"] ?? "").toString() as String;
|
||||
return "# ${serial}";
|
||||
} else if (deltas.containsKey("quantity")) {
|
||||
double q = (deltas["quantity"] ?? 0);
|
||||
|
||||
return simpleNumberString(q);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class InvenTreeStockItem extends InvenTreeModel {
|
||||
|
||||
InvenTreeStockItem() : super();
|
||||
|
@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:inventree/widget/refreshable_state.dart';
|
||||
import 'package:inventree/l10.dart';
|
||||
import 'package:inventree/inventree/stock.dart';
|
||||
import 'package:inventree/inventree/model.dart';
|
||||
|
||||
|
||||
class StockItemHistoryWidget extends StatefulWidget {
|
||||
|
||||
@ -27,9 +29,24 @@ class _StockItemHistoryDisplayState extends RefreshableState<StockItemHistoryWid
|
||||
@override
|
||||
String getAppBarTitle(BuildContext context) => L10().stockItemHistory;
|
||||
|
||||
List<InvenTreeStockItemHistory> history = [];
|
||||
|
||||
@override
|
||||
Future<void> request(BuildContext refresh) async {
|
||||
// TODO
|
||||
|
||||
history.clear();
|
||||
|
||||
InvenTreeStockItemHistory().list(filters: {"item": "${item.pk}"}).then((List<InvenTreeModel> results) {
|
||||
for (var result in results) {
|
||||
if (result is InvenTreeStockItemHistory) {
|
||||
history.add(result);
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh
|
||||
setState(() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@ -37,8 +54,25 @@ class _StockItemHistoryDisplayState extends RefreshableState<StockItemHistoryWid
|
||||
return ListView(
|
||||
children: ListTile.divideTiles(
|
||||
context: context,
|
||||
tiles: [],
|
||||
tiles: historyList(),
|
||||
).toList()
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> historyList() {
|
||||
List<Widget> tiles = [];
|
||||
|
||||
for (var entry in history) {
|
||||
tiles.add(
|
||||
ListTile(
|
||||
leading: Text(entry.dateString),
|
||||
trailing: entry.quantityString.isNotEmpty ? Text(entry.quantityString) : null,
|
||||
title: Text(entry.label),
|
||||
subtitle: entry.notes.isNotEmpty ? Text(entry.notes) : null,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return tiles;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user