From 854ef95fbf759fac578c4d3f603fc7bf7278f1ab Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 20 Jan 2025 23:22:10 +1100 Subject: [PATCH] Order responsible (#602) * Bump release notes and version * Display responsible owner for purchase order * Display responsible owner for sales order * Display order completion date --- assets/release_notes.md | 6 ++++++ lib/api.dart | 7 ++++++- lib/inventree/orders.dart | 15 +++++++++----- lib/l10n/app_en.arb | 6 ++++++ lib/widget/order/purchase_order_detail.dart | 23 ++++++++++++++++++--- lib/widget/order/sales_order_detail.dart | 23 ++++++++++++++++++--- pubspec.yaml | 2 +- 7 files changed, 69 insertions(+), 13 deletions(-) diff --git a/assets/release_notes.md b/assets/release_notes.md index 8442714e..826a4cbc 100644 --- a/assets/release_notes.md +++ b/assets/release_notes.md @@ -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 --- diff --git a/lib/api.dart b/lib/api.dart index 549b000f..2c7227ae 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -1530,8 +1530,13 @@ class InvenTreeAPI { } // Return a boolean global setting value - Future getGlobalBooleanSetting(String key) async { + Future getGlobalBooleanSetting(String key, { bool backup = false }) async { String value = await getGlobalSetting(key); + + if (value.isEmpty) { + return backup; + } + return value.toLowerCase().trim() == "true"; } diff --git a/lib/inventree/orders.dart b/lib/inventree/orders.dart index 8d63f340..b596fc0d 100644 --- a/lib/inventree/orders.dart +++ b/lib/inventree/orders.dart @@ -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"); } \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0614723d..d013f925 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -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": {}, diff --git a/lib/widget/order/purchase_order_detail.dart b/lib/widget/order/purchase_order_detail.dart index 297bc46a..8dd84698 100644 --- a/lib/widget/order/purchase_order_detail.dart +++ b/lib/widget/order/purchase_order_detail.dart @@ -257,7 +257,7 @@ class _PurchaseOrderDetailState extends RefreshableState { 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 { 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 { 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( diff --git a/pubspec.yaml b/pubspec.yaml index a9625f7a..8de29472 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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"