diff --git a/lib/inventree/company.dart b/lib/inventree/company.dart index aea0325c..920aaa65 100644 --- a/lib/inventree/company.dart +++ b/lib/inventree/company.dart @@ -103,6 +103,10 @@ class InvenTreeSupplierPart extends InvenTreeModel { int get partId => jsondata['part'] ?? -1; + String get partImage => jsondata["part_detail"]["thumbnail"] ?? InvenTreeAPI.staticThumb; + + String get partName => jsondata["part_detail"]["full_name"] ?? ""; + @override InvenTreeModel createFromJson(Map json) { var part = InvenTreeSupplierPart.fromJson(json); diff --git a/lib/inventree/purchase_order.dart b/lib/inventree/purchase_order.dart index 72ac7cdf..3b279485 100644 --- a/lib/inventree/purchase_order.dart +++ b/lib/inventree/purchase_order.dart @@ -52,7 +52,7 @@ class InvenTreePurchaseOrder extends InvenTreeModel { String get targetDate => jsondata['target_date'] ?? ""; - int get lineItems => jsondata['line_items'] ?? 0; + int get lineItemCount => jsondata['line_items'] ?? 0; bool get overdue => jsondata['overdue'] ?? false; @@ -144,10 +144,14 @@ class InvenTreePOLineItem extends InvenTreeModel { }; } + bool get isComplete => received >= quantity; + double get quantity => jsondata['quantity'] ?? 0; double get received => jsondata['received'] ?? 0; + double get outstanding => quantity - received; + String get reference => jsondata['reference'] ?? ""; int get orderId => jsondata['order'] ?? -1; @@ -164,6 +168,17 @@ class InvenTreePOLineItem extends InvenTreeModel { } } + InvenTreeSupplierPart? get supplierPart { + + dynamic detail = jsondata["supplier_part_detail"] ?? null; + + if (detail == null) { + return null; + } else { + return InvenTreeSupplierPart.fromJson(detail); + } + } + double get purchasePrice => double.parse(jsondata['purchase_price']); String get purchasePriceCurrency => jsondata['purchase_price_currency'] ?? ""; diff --git a/lib/l10n b/lib/l10n index ecd831b2..dba9551b 160000 --- a/lib/l10n +++ b/lib/l10n @@ -1 +1 @@ -Subproject commit ecd831b26c3739c235db65867d39ff9af517b09a +Subproject commit dba9551b897dca766088e5470704e20edb770499 diff --git a/lib/widget/purchase_order_detail.dart b/lib/widget/purchase_order_detail.dart index 18a29234..8b84e9cb 100644 --- a/lib/widget/purchase_order_detail.dart +++ b/lib/widget/purchase_order_detail.dart @@ -32,6 +32,8 @@ class _PurchaseOrderDetailState extends RefreshableState lines = []; + int completedLines = 0; + @override String getAppBarTitle(BuildContext context) => L10().purchaseOrder; @@ -60,6 +62,14 @@ class _PurchaseOrderDetailState extends RefreshableState orderTiles(BuildContext context) { List tiles = []; InvenTreeCompany? supplier = order.supplier; - tiles.add(Card( - child: ListTile( - title: Text(order.reference), - subtitle: Text(order.description), - leading: supplier == null ? null : InvenTreeAPI().getImage(supplier.thumbnail, width: 40, height: 40), - ) - )); + tiles.add(headerTile(context)); if (supplier != null) { tiles.add(ListTile( title: Text(L10().supplier), subtitle: Text(supplier.name), - leading: FaIcon(FontAwesomeIcons.building), + leading: FaIcon(FontAwesomeIcons.building, color: COLOR_CLICK), onTap: () { - // TODO - Navigate to "supplier" page + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => CompanyDetailWidget(supplier) + ) + ); }, )); } @@ -106,6 +129,30 @@ class _PurchaseOrderDetailState extends RefreshableState lineTiles(BuildContext context) { + + List tiles = []; + + tiles.add(headerTile(context)); + + for (var line in lines) { + + InvenTreeSupplierPart? supplierPart = line.supplierPart; + + if (supplierPart == null) { + continue; + } else { + tiles.add( + ListTile( + title: Text(supplierPart.SKU), + subtitle: Text(supplierPart.partName), + leading: InvenTreeAPI().getImage(supplierPart.partImage, width: 40, height: 40), + trailing: Text("${line.quantity}"), + ) + ); + } + } + + return tiles; + } + @override Widget getBody(BuildContext context) { @@ -140,6 +214,10 @@ class _PurchaseOrderDetailState extends RefreshableState filters = { diff --git a/lib/widget/purchase_order_list.dart b/lib/widget/purchase_order_list.dart index 86f3e61a..66bf0a1d 100644 --- a/lib/widget/purchase_order_list.dart +++ b/lib/widget/purchase_order_list.dart @@ -166,7 +166,7 @@ class _PaginatedPurchaseOrderListState extends State<_PaginatedPurchaseOrderList width: 40, height: 40, ), - trailing: Text("${order.lineItems}"), + trailing: Text("${order.lineItemCount}"), onTap: () async { Navigator.push( context,