mirror of
https://github.com/HendrikRauh/inventree-app.git
synced 2026-01-13 03:26:24 +00:00
Sales order support (#438)
* Add new models for SalesOrder - Create generic Order and OrderLine models with common functionality * Refactor - Move some widgets around - Cleanup directory structure * Add link to home screen and nav drawer * Add SalesOrder list widget * Linting fixes * Fix string * Refactor PurchaseOrderDetailWidget * Tweaks to existing code * linting * Fixes for drawer widget * Add "detail" page for SalesOrder * Add more tiles to SalesOrder detail * Allow editing of salesorder * add list filters for sales orders * Display list of line items * Customer updates - Display customer icon on home screen - Fetch sales orders for customer detail page * Cleanup company detail view * Create new sales order from list * Stricter typing for formFields method * Create new PurchaseOrder and SalesOrder from company deatil * Status code updates - Add function for name comparison - Remove hard-coded values * Update view permission checks for home widget * Add ability to manually add SalesOrderLineItem * Add nice progress bar widgets * Display detail view for sales order line item * edit SalesOrderLineItem * Fix unused import * Hide "shipped items" tab - Will be added in a future update
This commit is contained in:
parent
c1c0d46957
commit
bdd5470e68
45 changed files with 1565 additions and 284 deletions
107
lib/inventree/orders.dart
Normal file
107
lib/inventree/orders.dart
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* Base model for various "orders" which share common properties
|
||||
*/
|
||||
|
||||
|
||||
import "package:inventree/inventree/model.dart";
|
||||
import "package:inventree/inventree/part.dart";
|
||||
|
||||
|
||||
/*
|
||||
* Generic class representing an "order"
|
||||
*/
|
||||
class InvenTreeOrder extends InvenTreeModel {
|
||||
|
||||
InvenTreeOrder() : super();
|
||||
|
||||
InvenTreeOrder.fromJson(Map<String, dynamic> json) : super.fromJson(json);
|
||||
|
||||
String get issueDate => getString("issue_date");
|
||||
|
||||
String get completeDate => getString("complete_date");
|
||||
|
||||
String get creationDate => getString("creation_date");
|
||||
|
||||
String get targetDate => getString("target_date");
|
||||
|
||||
int get lineItemCount => getInt("line_items", backup: 0);
|
||||
|
||||
bool get overdue => getBool("overdue");
|
||||
|
||||
String get reference => getString("reference");
|
||||
|
||||
int get responsibleId => getInt("responsible");
|
||||
|
||||
// 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;
|
||||
|
||||
int get status => getInt("status");
|
||||
|
||||
String get statusText => getString("status_text");
|
||||
|
||||
double? get totalPrice {
|
||||
String price = getString("total_price");
|
||||
|
||||
if (price.isEmpty) {
|
||||
return null;
|
||||
} else {
|
||||
return double.tryParse(price);
|
||||
}
|
||||
}
|
||||
|
||||
// Return the currency for this order
|
||||
// Note that the nomenclature in the API changed at some point
|
||||
String get totalPriceCurrency {
|
||||
if (jsondata.containsKey("order_currency")) {
|
||||
return getString("order_currency");
|
||||
} else if (jsondata.containsKey("total_price_currency")) {
|
||||
return getString("total_price_currency");
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Generic class representing an "order line"
|
||||
*/
|
||||
class InvenTreeOrderLine extends InvenTreeModel {
|
||||
|
||||
InvenTreeOrderLine() : super();
|
||||
|
||||
InvenTreeOrderLine.fromJson(Map<String, dynamic> json) : super.fromJson(json);
|
||||
|
||||
bool get overdue => getBool("overdue");
|
||||
|
||||
double get quantity => getDouble("quantity");
|
||||
|
||||
String get reference => getString("reference");
|
||||
|
||||
int get orderId => getInt("order");
|
||||
|
||||
InvenTreePart? get part {
|
||||
dynamic part_detail = jsondata["part_detail"];
|
||||
|
||||
if (part_detail == null) {
|
||||
return null;
|
||||
} else {
|
||||
return InvenTreePart.fromJson(part_detail as Map<String, dynamic>);
|
||||
}
|
||||
}
|
||||
|
||||
int get partId => getInt("pk", subKey: "part_detail");
|
||||
|
||||
String get partName => getString("name", subKey: "part_detail");
|
||||
|
||||
String get partImage => getString("thumbnail", subKey: "part_detail");
|
||||
|
||||
// TODO: Perhaps parse this as an actual date?
|
||||
String get targetDate => getString("target_date");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue