mirror of
				https://github.com/inventree/inventree-app.git
				synced 2025-10-31 13:25:40 +00:00 
			
		
		
		
	Purchase order updates (#456)
* Support supplierpart in related field * Manual add line item to purchase order * Update release notes
This commit is contained in:
		| @@ -524,11 +524,10 @@ class APIFormField { | ||||
|       ), | ||||
|       selectedItem: initial_data, | ||||
|       asyncItems: (String filter) async { | ||||
|         Map<String, String> _filters = {}; | ||||
|  | ||||
|         filters.forEach((key, value) { | ||||
|           _filters[key] = value; | ||||
|         }); | ||||
|         Map<String, String> _filters = { | ||||
|           ..._relatedFieldFilters(), | ||||
|           ...filters, | ||||
|         }; | ||||
|  | ||||
|         _filters["search"] = filter; | ||||
|         _filters["offset"] = "0"; | ||||
| @@ -586,6 +585,17 @@ class APIFormField { | ||||
|       }); | ||||
|   } | ||||
|  | ||||
|   // Construct a set of custom filters for the dropdown search | ||||
|   Map<String, String> _relatedFieldFilters() { | ||||
|  | ||||
|     switch (model) { | ||||
|       case "supplierpart": | ||||
|         return InvenTreeSupplierPart().defaultListFilters(); | ||||
|     } | ||||
|  | ||||
|     return {}; | ||||
|   } | ||||
|  | ||||
|   // Render a "related field" based on the "model" type | ||||
|   Widget _renderRelatedField(String fieldName, dynamic item, bool selected, bool extended) { | ||||
|  | ||||
| @@ -611,7 +621,6 @@ class APIFormField { | ||||
|  | ||||
|     switch (model) { | ||||
|       case "part": | ||||
|  | ||||
|         var part = InvenTreePart.fromJson(data); | ||||
|  | ||||
|         return ListTile( | ||||
| @@ -626,6 +635,15 @@ class APIFormField { | ||||
|           leading: extended ? InvenTreeAPI().getThumbnail(part.thumbnail) : null, | ||||
|         ); | ||||
|  | ||||
|       case "supplierpart": | ||||
|         var part = InvenTreeSupplierPart.fromJson(data); | ||||
|  | ||||
|         return ListTile( | ||||
|           title: Text(part.SKU), | ||||
|           subtitle: Text(part.partName), | ||||
|           leading: extended ? InvenTreeAPI().getThumbnail(part.partImage) : null, | ||||
|           trailing: extended && part.supplierImage.isNotEmpty ? InvenTreeAPI().getThumbnail(part.supplierImage) : null, | ||||
|         ); | ||||
|       case "partcategory": | ||||
|  | ||||
|         var cat = InvenTreePartCategory.fromJson(data); | ||||
|   | ||||
| @@ -74,6 +74,17 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg | ||||
|  | ||||
|     if (widget.order.canCreate) { | ||||
|       if (widget.order.isPending) { | ||||
|  | ||||
|         actions.add( | ||||
|           SpeedDialChild( | ||||
|             child: FaIcon(FontAwesomeIcons.circlePlus, color: Colors.green), | ||||
|             label: L10().lineItemAdd, | ||||
|             onTap: () async { | ||||
|               _addLineItem(context); | ||||
|             } | ||||
|           ) | ||||
|         ); | ||||
|  | ||||
|         actions.add( | ||||
|           SpeedDialChild( | ||||
|             child: FaIcon(FontAwesomeIcons.paperPlane, color: Colors.blue), | ||||
| @@ -101,6 +112,30 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg | ||||
|     return actions; | ||||
|   } | ||||
|  | ||||
|   /// Add a new line item to this order | ||||
|   Future<void> _addLineItem(BuildContext context) async { | ||||
|  | ||||
|     var fields = InvenTreePOLineItem().formFields(); | ||||
|  | ||||
|     // Update part field definition | ||||
|     fields["part"]?["hidden"] = false; | ||||
|     fields["part"]?["filters"] = { | ||||
|       "supplier": widget.order.supplierId | ||||
|     }; | ||||
|  | ||||
|     fields["order"]?["value"] = widget.order.pk; | ||||
|  | ||||
|     InvenTreePOLineItem().createForm( | ||||
|       context, | ||||
|       L10().lineItemAdd, | ||||
|       fields: fields, | ||||
|       onSuccess: (data) async { | ||||
|         refresh(context); | ||||
|         showSnackIcon(L10().lineItemUpdated, success: true); | ||||
|       } | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   /// Issue this order | ||||
|   Future<void> _issueOrder(BuildContext context) async { | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user