Order extra lines (#632)

* Define classes for extra line item

* Display PO extra line items

- Also, some refactoring

* Support extra line items for sales order

* linting fixes

* Update release notes
This commit is contained in:
Oliver 2025-04-15 20:49:05 +10:00 committed by GitHub
parent 25d7ac9189
commit 72a78291b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 642 additions and 193 deletions

View file

@ -1,10 +1,12 @@
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/api.dart";
import "package:inventree/helpers.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/orders.dart";
import "package:inventree/widget/order/extra_line_detail.dart";
import "package:inventree/widget/order/purchase_order_detail.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/api_form.dart";
@ -26,6 +28,16 @@ class InvenTreePurchaseOrder extends InvenTreeOrder {
@override
String get URL => "order/po/";
@override
Future<Object?> goToDetailPage(BuildContext context) async {
return Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PurchaseOrderDetailWidget(this)
)
);
}
static const String MODEL_TYPE = "purchaseorder";
@override
@ -310,6 +322,35 @@ class InvenTreePOLineItem extends InvenTreeOrderLine {
}
}
class InvenTreePOExtraLineItem extends InvenTreeExtraLineItem {
InvenTreePOExtraLineItem() : super();
InvenTreePOExtraLineItem.fromJson(Map<String, dynamic> json) : super.fromJson(json);
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) => InvenTreePOExtraLineItem.fromJson(json);
@override
String get URL => "order/po-extra-line/";
@override
List<String> get rolesRequired => ["purchase_order"];
@override
Future<Object?> goToDetailPage(BuildContext context) async {
return Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ExtraLineDetailWidget(this)
)
);
}
}
/*
* Class representing an attachment file against a PurchaseOrder object
*/