mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +00:00
Refactor stock adjustment functions
- Provide compatibility with "modern" and "legacy" API versions
This commit is contained in:
parent
7c3698beba
commit
5d0ffa059d
@ -267,7 +267,7 @@ class StockItemScanIntoLocationHandler extends BarcodeHandler {
|
||||
}
|
||||
|
||||
// Transfer stock to specified location
|
||||
final result = await item.transferStock(location);
|
||||
final result = await item.transferStock(context, location);
|
||||
|
||||
if (result) {
|
||||
|
||||
@ -339,7 +339,7 @@ class StockLocationScanInItemsHandler extends BarcodeHandler {
|
||||
success: true
|
||||
);
|
||||
} else {
|
||||
final result = await item.transferStock(location.pk);
|
||||
final result = await item.transferStock(context, location.pk);
|
||||
|
||||
if (result) {
|
||||
|
||||
|
@ -455,7 +455,8 @@ class InvenTreeStockItem extends InvenTreeModel {
|
||||
* - Remove
|
||||
* - Count
|
||||
*/
|
||||
Future<bool> adjustStock(BuildContext context, String endpoint, double q, {String? notes}) async {
|
||||
// TODO: Remove this function when we deprecate support for the old API
|
||||
Future<bool> adjustStock(BuildContext context, String endpoint, double q, {String? notes, int? location}) async {
|
||||
|
||||
// Serialized stock cannot be adjusted
|
||||
if (isSerialized()) {
|
||||
@ -469,6 +470,35 @@ class InvenTreeStockItem extends InvenTreeModel {
|
||||
|
||||
print("Adjust stock: ${endpoint}");
|
||||
|
||||
Map<String, dynamic> data = {};
|
||||
|
||||
// Note: Format of adjustment API was updated in API v14
|
||||
if (InvenTreeAPI().supportModernStockTransactions()) {
|
||||
// Modern (> 14) API
|
||||
data = {
|
||||
"items": [
|
||||
{
|
||||
"pk": "${pk}",
|
||||
"quantity": "${quantity}",
|
||||
}
|
||||
],
|
||||
"notes": notes ?? ""
|
||||
};
|
||||
} else {
|
||||
// Legacy (<= 14) API
|
||||
data = {
|
||||
"item": {
|
||||
"pk": "${pk}",
|
||||
"quantity": "${quantity}",
|
||||
},
|
||||
"notes": notes ?? "",
|
||||
};
|
||||
}
|
||||
|
||||
if (location != null) {
|
||||
data["location"] = location;
|
||||
}
|
||||
|
||||
var response = await api.post(
|
||||
endpoint,
|
||||
body: {
|
||||
@ -509,25 +539,25 @@ class InvenTreeStockItem extends InvenTreeModel {
|
||||
}
|
||||
|
||||
// TODO: Remove this function when we deprecate support for the old API
|
||||
Future<bool> transferStock(int location, {double? quantity, String? notes}) async {
|
||||
if ((quantity == null) || (quantity < 0) || (quantity > this.quantity)) {
|
||||
quantity = this.quantity;
|
||||
Future<bool> transferStock(BuildContext context, int location, {double? quantity, String? notes}) async {
|
||||
|
||||
print("transferStock()");
|
||||
|
||||
double q = this.quantity;
|
||||
|
||||
if (quantity != null) {
|
||||
q = quantity;
|
||||
}
|
||||
|
||||
final response = await api.post(
|
||||
final bool result = await adjustStock(
|
||||
context,
|
||||
"/stock/transfer/",
|
||||
body: {
|
||||
"item": {
|
||||
"pk": "${pk}",
|
||||
"quantity": "${quantity}",
|
||||
},
|
||||
"location": "${location}",
|
||||
"notes": notes ?? "",
|
||||
},
|
||||
expectedStatusCode: 200
|
||||
q,
|
||||
notes: notes,
|
||||
location: location,
|
||||
);
|
||||
|
||||
return response.isValid() && response.statusCode == 200;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -383,7 +383,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
_quantityController.clear();
|
||||
_notesController.clear();
|
||||
|
||||
var result = await item.transferStock(locationId, quantity: quantity, notes: notes);
|
||||
var result = await item.transferStock(context, locationId, quantity: quantity, notes: notes);
|
||||
|
||||
refresh();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user