2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-16 20:25:26 +00:00

Sales order allocation (#464)

* New string

* Typo fix

* Add model for SalesOrderShipment

* Add placeholder button to sales order item

* Create a new shipment from the sales order detail view

* Fix API URL

* Add paginated shipment list

* Upate colors

* Add API form for allocation of stock to sales order

* Build out sales order line detail widge

* Use unallocated quantity

* Update release notes

* linting fix
This commit is contained in:
Oliver
2023-11-27 22:51:20 +11:00
committed by GitHub
parent 70d0d4de93
commit 3ea5f8934c
8 changed files with 293 additions and 13 deletions

View File

@ -7,6 +7,7 @@ import "package:inventree/barcode/sales_order.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/sales_order.dart";
import "package:inventree/widget/order/so_line_list.dart";
import "package:inventree/widget/order/so_shipment_list.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/l10.dart";
@ -62,6 +63,25 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
return actions;
}
// Add a new shipment against this sales order
Future<void> _addShipment(BuildContext context) async {
var fields = InvenTreeSalesOrderShipment().formFields();
fields["order"]?["value"] = widget.order.pk;
fields["order"]?["hidden"] = true;
InvenTreeSalesOrderShipment().createForm(
context,
L10().shipmentAdd,
fields: fields,
onSuccess: (result) async {
refresh(context);
}
);
}
// Add a new line item to this sales order
Future<void> _addLineItem(BuildContext context) async {
var fields = InvenTreeSOLineItem().formFields();
@ -94,6 +114,16 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
}
)
);
actions.add(
SpeedDialChild(
child: FaIcon(FontAwesomeIcons.circlePlus),
label: L10().shipmentAdd,
onTap: () async {
_addShipment(context);
}
)
);
}
return actions;
@ -225,7 +255,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
));
}
Color lineColor = widget.order.complete ? COLOR_WARNING : COLOR_SUCCESS;
Color lineColor = widget.order.complete ? COLOR_SUCCESS : COLOR_WARNING;
tiles.add(ListTile(
title: Text(L10().lineItems),
@ -292,8 +322,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
return [
Tab(text: L10().details),
Tab(text: L10().lineItems),
// TODO: Add in the "shipped items" tab
// Tab(text: L10().shipped)
Tab(text: L10().shipments),
];
}
@ -302,7 +331,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
return [
ListView(children: orderTiles(context)),
PaginatedSOLineList({"order": widget.order.pk.toString()}),
// Center(), // TODO: Delivered stock
PaginatedSOShipmentList({"order": widget.order.pk.toString()}),
];
}