mirror of
https://github.com/inventree/inventree-app.git
synced 2025-06-13 10:45:29 +00:00
Display and edit project code for purchase orders
This commit is contained in:
@ -15,6 +15,7 @@ import "package:inventree/l10.dart";
|
||||
|
||||
import "package:inventree/inventree/company.dart";
|
||||
import "package:inventree/inventree/part.dart";
|
||||
import "package:inventree/inventree/project_code.dart";
|
||||
import "package:inventree/inventree/sentry.dart";
|
||||
import "package:inventree/inventree/stock.dart";
|
||||
|
||||
@ -667,6 +668,13 @@ class APIFormField {
|
||||
height: 40
|
||||
)
|
||||
);
|
||||
case "projectcode":
|
||||
var project_code = InvenTreeProjectCode.fromJson(data);
|
||||
return ListTile(
|
||||
title: Text(project_code.code),
|
||||
subtitle: Text(project_code.description),
|
||||
leading: FaIcon(FontAwesomeIcons.list)
|
||||
);
|
||||
default:
|
||||
return ListTile(
|
||||
title: Text(
|
||||
|
@ -335,7 +335,7 @@ class InvenTreePart extends InvenTreeModel {
|
||||
double get building => getDouble("building");
|
||||
|
||||
// Get the number of BOMs this Part is used in (if it is a component)
|
||||
int get usedInCount => getInt("used_in");
|
||||
int get usedInCount => jsondata.containsKey("used_in") ? getInt("used_in", backup: 0) : 0;
|
||||
|
||||
bool get isAssembly => getBool("assembly");
|
||||
|
||||
|
@ -23,4 +23,6 @@ class InvenTreeProjectCode extends InvenTreeModel {
|
||||
"description": {},
|
||||
};
|
||||
}
|
||||
|
||||
String get code => getString("code");
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ class InvenTreePurchaseOrder extends InvenTreeModel {
|
||||
},
|
||||
"supplier_reference": {},
|
||||
"description": {},
|
||||
"project_code": {},
|
||||
"target_date": {},
|
||||
"link": {},
|
||||
"responsible": {},
|
||||
@ -77,6 +78,15 @@ class InvenTreePurchaseOrder extends InvenTreeModel {
|
||||
|
||||
int get supplierId => getInt("supplier");
|
||||
|
||||
// Project code information
|
||||
int get projectCodeId => getInt("project_code");
|
||||
|
||||
String get projectCode => getString("code", subKey: "project_code_detail");
|
||||
|
||||
String get projectCodeDescription => getString("description", subKey: "project_code_detail");
|
||||
|
||||
bool get hasProjectCode => projectCode.isNotEmpty;
|
||||
|
||||
InvenTreeCompany? get supplier {
|
||||
|
||||
dynamic supplier_detail = jsondata["supplier_detail"];
|
||||
|
@ -759,6 +759,9 @@
|
||||
"profileTapToCreate": "Tap to create or select a profile",
|
||||
"@profileTapToCreate": {},
|
||||
|
||||
"projectCode": "Project Code",
|
||||
"@projectCode": {},
|
||||
|
||||
"purchaseOrder": "Purchase Order",
|
||||
"@purchaseOrder": {},
|
||||
|
||||
|
@ -43,6 +43,8 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
|
||||
int attachmentCount = 0;
|
||||
|
||||
bool supportProjectCodes = false;
|
||||
|
||||
@override
|
||||
String getAppBarTitle() => L10().purchaseOrder;
|
||||
|
||||
@ -139,6 +141,8 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
|
||||
lines = await order.getLineItems();
|
||||
|
||||
supportProjectCodes = api.supportsProjectCodes && await api.getGlobalBooleanSetting("PROJECT_CODES_ENABLED");
|
||||
|
||||
completedLines = 0;
|
||||
|
||||
for (var line in lines) {
|
||||
@ -157,12 +161,20 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
// Edit the currently displayed PurchaseOrder
|
||||
Future <void> editOrder(BuildContext context) async {
|
||||
var fields = order.formFields();
|
||||
|
||||
// Cannot edit supplier field from here
|
||||
fields.remove("supplier");
|
||||
|
||||
// Contact model not supported by server
|
||||
if (!api.supportsContactModel) {
|
||||
fields.remove("contact");
|
||||
}
|
||||
|
||||
// ProjectCode model not supported by server
|
||||
if (!supportProjectCodes) {
|
||||
fields.remove("project_code");
|
||||
}
|
||||
|
||||
order.editForm(
|
||||
context,
|
||||
L10().purchaseOrderEdit,
|
||||
@ -202,6 +214,14 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
|
||||
|
||||
tiles.add(headerTile(context));
|
||||
|
||||
if (supportProjectCodes && order.hasProjectCode) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().projectCode),
|
||||
subtitle: Text("${order.projectCode} - ${order.projectCodeDescription}"),
|
||||
leading: FaIcon(FontAwesomeIcons.list),
|
||||
));
|
||||
}
|
||||
|
||||
if (supplier != null) {
|
||||
tiles.add(ListTile(
|
||||
title: Text(L10().supplier),
|
||||
|
Reference in New Issue
Block a user