mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-27 21:16:48 +00:00
Order responsible (#602)
* Bump release notes and version * Display responsible owner for purchase order * Display responsible owner for sales order * Display order completion date
This commit is contained in:
parent
2ea29368ed
commit
854ef95fbf
@ -1,3 +1,9 @@
|
||||
### 0.17.4 - January 2025
|
||||
---
|
||||
- Display responsible owner for orders
|
||||
- Display completion date for orders
|
||||
- Updated translations
|
||||
|
||||
### 0.17.3 - January 2025
|
||||
---
|
||||
|
||||
|
@ -1530,8 +1530,13 @@ class InvenTreeAPI {
|
||||
}
|
||||
|
||||
// Return a boolean global setting value
|
||||
Future<bool> getGlobalBooleanSetting(String key) async {
|
||||
Future<bool> getGlobalBooleanSetting(String key, { bool backup = false }) async {
|
||||
String value = await getGlobalSetting(key);
|
||||
|
||||
if (value.isEmpty) {
|
||||
return backup;
|
||||
}
|
||||
|
||||
return value.toLowerCase().trim() == "true";
|
||||
}
|
||||
|
||||
|
@ -18,11 +18,13 @@ class InvenTreeOrder extends InvenTreeModel {
|
||||
|
||||
String get issueDate => getString("issue_date");
|
||||
|
||||
String get completeDate => getString("complete_date");
|
||||
String get completionDate => getDateString("complete_date");
|
||||
|
||||
String get creationDate => getString("creation_date");
|
||||
String get creationDate => getDateString("creation_date");
|
||||
|
||||
String get targetDate => getString("target_date");
|
||||
String get shipmentDate => getDateString("shipment_date");
|
||||
|
||||
String get targetDate => getDateString("target_date");
|
||||
|
||||
int get lineItemCount => getInt("line_items", backup: 0);
|
||||
|
||||
@ -40,6 +42,10 @@ class InvenTreeOrder extends InvenTreeModel {
|
||||
|
||||
int get responsibleId => getInt("responsible");
|
||||
|
||||
String get responsibleName => getString("name", subKey: "responsible_detail");
|
||||
|
||||
String get responsibleLabel => getString("label", subKey: "responsible_detail");
|
||||
|
||||
// Project code information
|
||||
int get projectCodeId => getInt("project_code");
|
||||
|
||||
@ -110,6 +116,5 @@ class InvenTreeOrderLine extends InvenTreeModel {
|
||||
|
||||
String get partImage => getString("thumbnail", subKey: "part_detail");
|
||||
|
||||
// TODO: Perhaps parse this as an actual date?
|
||||
String get targetDate => getString("target_date");
|
||||
String get targetDate => getDateString("target_date");
|
||||
}
|
@ -246,6 +246,9 @@
|
||||
"companies": "Companies",
|
||||
"@companies": {},
|
||||
|
||||
"completionDate": "Completion Date",
|
||||
"@completionDate": {},
|
||||
|
||||
"configureServer": "Configure server settings",
|
||||
"@configureServer": {},
|
||||
|
||||
@ -1047,6 +1050,9 @@
|
||||
"reportBugDescription": "Submit bug report (requires GitHub account)",
|
||||
"@reportBugDescription": {},
|
||||
|
||||
"responsible": "Responsible",
|
||||
"@responsible": {},
|
||||
|
||||
"results": "Results",
|
||||
"@results": {},
|
||||
|
||||
|
@ -257,7 +257,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
lines = await widget.order.getLineItems();
|
||||
|
||||
showCameraShortcut = await InvenTreeSettingsManager().getBool(INV_PO_SHOW_CAMERA, true);
|
||||
supportProjectCodes = api.supportsProjectCodes && await api.getGlobalBooleanSetting("PROJECT_CODES_ENABLED");
|
||||
supportProjectCodes = api.supportsProjectCodes && await api.getGlobalBooleanSetting("PROJECT_CODES_ENABLED", backup: true);
|
||||
|
||||
completedLines = 0;
|
||||
|
||||
@ -426,7 +426,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
if (widget.order.issueDate.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().issueDate),
|
||||
subtitle: Text(widget.order.issueDate),
|
||||
trailing: Text(widget.order.issueDate),
|
||||
leading: Icon(TablerIcons.calendar),
|
||||
));
|
||||
}
|
||||
@ -434,11 +434,28 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
if (widget.order.targetDate.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().targetDate),
|
||||
subtitle: Text(widget.order.targetDate),
|
||||
trailing: Text(widget.order.targetDate),
|
||||
leading: Icon(TablerIcons.calendar),
|
||||
));
|
||||
}
|
||||
|
||||
if (widget.order.completionDate.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().completionDate),
|
||||
trailing: Text(widget.order.completionDate),
|
||||
leading: Icon(TablerIcons.calendar),
|
||||
));
|
||||
}
|
||||
|
||||
// Responsible "owner"
|
||||
if (widget.order.responsibleName.isNotEmpty && widget.order.responsibleLabel.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().responsible),
|
||||
leading: Icon(widget.order.responsibleLabel == "group" ? TablerIcons.users : TablerIcons.user),
|
||||
trailing: Text(widget.order.responsibleName)
|
||||
));
|
||||
}
|
||||
|
||||
// Notes tile
|
||||
tiles.add(
|
||||
ListTile(
|
||||
|
@ -260,7 +260,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||
await widget.order.reload();
|
||||
await api.SalesOrderStatus.load();
|
||||
|
||||
supportsProjectCodes = api.supportsProjectCodes && await api.getGlobalBooleanSetting("PROJECT_CODES_ENABLED");
|
||||
supportsProjectCodes = api.supportsProjectCodes && await api.getGlobalBooleanSetting("PROJECT_CODES_ENABLED", backup: true);
|
||||
showCameraShortcut = await InvenTreeSettingsManager().getBool(INV_SO_SHOW_CAMERA, true);
|
||||
|
||||
InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then((int value) {
|
||||
@ -353,7 +353,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||
if (widget.order.customerReference.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().customerReference),
|
||||
subtitle: Text(widget.order.customerReference),
|
||||
trailing: Text(widget.order.customerReference),
|
||||
leading: Icon(TablerIcons.hash),
|
||||
));
|
||||
}
|
||||
@ -388,11 +388,28 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||
if (widget.order.targetDate.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().targetDate),
|
||||
subtitle: Text(widget.order.targetDate),
|
||||
trailing: Text(widget.order.targetDate),
|
||||
leading: Icon(TablerIcons.calendar),
|
||||
));
|
||||
}
|
||||
|
||||
if (widget.order.shipmentDate.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().completionDate),
|
||||
trailing: Text(widget.order.shipmentDate),
|
||||
leading: Icon(TablerIcons.calendar),
|
||||
));
|
||||
}
|
||||
|
||||
// Responsible "owner"
|
||||
if (widget.order.responsibleName.isNotEmpty && widget.order.responsibleLabel.isNotEmpty) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().responsible),
|
||||
leading: Icon(widget.order.responsibleLabel == "group" ? TablerIcons.users : TablerIcons.user),
|
||||
trailing: Text(widget.order.responsibleName)
|
||||
));
|
||||
}
|
||||
|
||||
// Notes tile
|
||||
tiles.add(
|
||||
ListTile(
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: inventree
|
||||
description: InvenTree stock management
|
||||
|
||||
version: 0.17.3+95
|
||||
version: 0.17.4+96
|
||||
|
||||
environment:
|
||||
sdk: ">=2.19.5 <3.13.0"
|
||||
|
Loading…
x
Reference in New Issue
Block a user