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:
@ -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()}),
|
||||
];
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user