mirror of
https://github.com/inventree/inventree-app.git
synced 2026-07-22 20:23:26 +00:00
Transfer order (#854)
* Add API version check * Implement basic transfer order support * add link to drawer * Adjust dashboard display order * Support transfer order allocation detail * Add progress bar * Enable scan of transfer order
This commit is contained in:
@@ -12,6 +12,7 @@ import "package:inventree/inventree/update_check.dart";
|
||||
import "package:inventree/inventree/purchase_order.dart";
|
||||
import "package:inventree/inventree/sales_order.dart";
|
||||
import "package:inventree/inventree/stock.dart";
|
||||
import "package:inventree/inventree/transfer_order.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
import "package:inventree/l10.dart";
|
||||
import "package:inventree/settings/select_server.dart";
|
||||
@@ -24,6 +25,7 @@ import "package:inventree/widget/stock/location_display.dart";
|
||||
import "package:inventree/widget/part/part_list.dart";
|
||||
import "package:inventree/widget/order/purchase_order_list.dart";
|
||||
import "package:inventree/widget/order/sales_order_list.dart";
|
||||
import "package:inventree/widget/order/transfer_order_list.dart";
|
||||
import "package:inventree/widget/build/build_list.dart";
|
||||
import "package:inventree/widget/refreshable_state.dart";
|
||||
import "package:inventree/widget/snacks.dart";
|
||||
@@ -157,6 +159,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
bool homeShowManufacturers = false;
|
||||
bool homeShowCustomers = false;
|
||||
bool homeShowSuppliers = false;
|
||||
bool homeShowTransfer = false;
|
||||
|
||||
// Selected user profile
|
||||
UserProfile? _profile;
|
||||
@@ -169,6 +172,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
int? _soOverdueCount;
|
||||
int? _soOutstandingCount;
|
||||
int? _shipmentsPendingCount;
|
||||
int? _transferOverdueCount;
|
||||
int? _transferOutstandingCount;
|
||||
|
||||
void _showParts(BuildContext context) {
|
||||
if (!InvenTreeAPI().checkConnection()) return;
|
||||
@@ -233,6 +238,17 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
);
|
||||
}
|
||||
|
||||
void _showTransferOrders(BuildContext context) {
|
||||
if (!InvenTreeAPI().checkConnection()) return;
|
||||
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => TransferOrderListWidget(filters: {}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _showBuildOrders(BuildContext context) {
|
||||
if (!InvenTreeAPI().checkConnection()) return;
|
||||
|
||||
@@ -330,6 +346,9 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
homeShowSuppliers =
|
||||
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_SUPPLIERS, true)
|
||||
as bool;
|
||||
homeShowTransfer =
|
||||
await InvenTreeSettingsManager().getValue(INV_HOME_SHOW_TRANSFER, true)
|
||||
as bool;
|
||||
|
||||
setState(() {});
|
||||
|
||||
@@ -356,6 +375,10 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
final bool loadSo = homeShowSo && InvenTreeSalesOrder().canView;
|
||||
final bool loadShipments =
|
||||
homeShowShipments && InvenTreeSalesOrderShipment().canView;
|
||||
final bool loadTransfer =
|
||||
homeShowTransfer &&
|
||||
InvenTreeAPI().supportsTransferOrders &&
|
||||
InvenTreeTransferOrder().canView;
|
||||
|
||||
int? buildOverdue;
|
||||
int? buildOutstanding;
|
||||
@@ -364,6 +387,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
int? soOverdue;
|
||||
int? soOutstanding;
|
||||
int? shipmentsPending;
|
||||
int? transferOverdue;
|
||||
int? transferOutstanding;
|
||||
|
||||
final List<Future<void>> requests = [];
|
||||
|
||||
@@ -418,6 +443,21 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
);
|
||||
}
|
||||
|
||||
if (loadTransfer) {
|
||||
requests.add(
|
||||
InvenTreeTransferOrder().count(filters: {"overdue": "true"}).then((c) {
|
||||
transferOverdue = c;
|
||||
}),
|
||||
);
|
||||
requests.add(
|
||||
InvenTreeTransferOrder().count(filters: {"outstanding": "true"}).then((
|
||||
c,
|
||||
) {
|
||||
transferOutstanding = c;
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
await Future.wait(requests);
|
||||
|
||||
if (!mounted) {
|
||||
@@ -432,6 +472,8 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
_soOverdueCount = soOverdue;
|
||||
_soOutstandingCount = soOutstanding;
|
||||
_shipmentsPendingCount = shipmentsPending;
|
||||
_transferOverdueCount = transferOverdue;
|
||||
_transferOutstandingCount = transferOutstanding;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -571,6 +613,27 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage>
|
||||
);
|
||||
}
|
||||
|
||||
// Transfer orders
|
||||
if (homeShowTransfer &&
|
||||
InvenTreeAPI().supportsTransferOrders &&
|
||||
InvenTreeTransferOrder().canView) {
|
||||
tiles.add(
|
||||
_listTile(
|
||||
context,
|
||||
L10().transferOrders,
|
||||
TablerIcons.transfer,
|
||||
callback: () {
|
||||
_showTransferOrders(context);
|
||||
},
|
||||
trailing: buildOrderBadges(
|
||||
context,
|
||||
outstandingCount: _transferOutstandingCount,
|
||||
overdueCount: _transferOverdueCount,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// Purchase orders
|
||||
if (homeShowPo && InvenTreePurchaseOrder().canView) {
|
||||
tiles.add(
|
||||
|
||||
Reference in New Issue
Block a user