2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-10-30 04:45:39 +00:00

SalesOrderShipment (#697)

* Add detail widget for SalesOrderShipment

* Support editing of shipment details

* Rearrange SalesOrderDetail page

* Add support for attachments against shipment model

* refactoring

* Add shipment details page

* Add user actions for shipments:

- Check / uncheck
- Take photo

* Placeholder action to send shipment

* Send shipment from app

* Display pending shipments on the home screen

* Improve rending for shipments list

* Add class definition for SalesOrderAllocation

* Display list of items allocated against SalesOrderShipment

* Bump release notse

* Click through to stock item

* Bump version number

* dart format

* cleanup

* Remove unused imports
This commit is contained in:
Oliver
2025-10-24 13:36:10 +11:00
committed by GitHub
parent 6b67cc9e50
commit 624655ec6b
22 changed files with 858 additions and 79 deletions

View File

@@ -287,7 +287,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
}
// External link
if (widget.company.link.isNotEmpty) {
if (widget.company.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),

View File

@@ -12,7 +12,6 @@ import "package:inventree/inventree/part.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/progress.dart";
import "package:url_launcher/url_launcher.dart";
/*
* Detail widget for viewing a single ManufacturerPart instance
@@ -163,16 +162,13 @@ class _ManufacturerPartDisplayState
);
}
if (widget.manufacturerPart.link.isNotEmpty) {
if (widget.manufacturerPart.hasLink) {
tiles.add(
ListTile(
title: Text(widget.manufacturerPart.link),
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
onTap: () async {
var uri = Uri.tryParse(widget.manufacturerPart.link);
if (uri != null && await canLaunchUrl(uri)) {
await launchUrl(uri);
}
widget.manufacturerPart.openLink();
},
),
);

View File

@@ -2,7 +2,6 @@ import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/widget/link_icon.dart";
import "package:url_launcher/url_launcher.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/l10.dart";
@@ -239,7 +238,7 @@ class _SupplierPartDisplayState
);
}
if (widget.supplierPart.link.isNotEmpty) {
if (widget.supplierPart.hasLink) {
tiles.add(
ListTile(
title: Text(L10().link),
@@ -247,10 +246,7 @@ class _SupplierPartDisplayState
leading: Icon(TablerIcons.link, color: COLOR_ACTION),
trailing: LinkIcon(external: true),
onTap: () async {
var uri = Uri.tryParse(widget.supplierPart.link);
if (uri != null && await canLaunchUrl(uri)) {
await launchUrl(uri);
}
widget.supplierPart.openLink();
},
),
);