mirror of
https://github.com/inventree/inventree-app.git
synced 2025-06-15 03:35:28 +00:00
Order picture action (#557)
* Add "take picture" to purchase order detail * Rename uploaded images * Provide prefix when uploading images * Add similar functionality for "sales order" detail * Add new settings screens * Control camera shortcut * Bump release notes
This commit is contained in:
@ -30,11 +30,11 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
|
||||
}
|
||||
|
||||
Future<void> loadSettings() async {
|
||||
partShowParameters = await InvenTreeSettingsManager().getValue(INV_PART_SHOW_PARAMETERS, true) as bool;
|
||||
partShowBom = await InvenTreeSettingsManager().getValue(INV_PART_SHOW_BOM, true) as bool;
|
||||
stockShowHistory = await InvenTreeSettingsManager().getValue(INV_STOCK_SHOW_HISTORY, false) as bool;
|
||||
stockShowTests = await InvenTreeSettingsManager().getValue(INV_STOCK_SHOW_TESTS, true) as bool;
|
||||
stockConfirmScan = await InvenTreeSettingsManager().getValue(INV_STOCK_CONFIRM_SCAN, false) as bool;
|
||||
partShowParameters = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_PARAMETERS, true);
|
||||
partShowBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true);
|
||||
stockShowHistory = await InvenTreeSettingsManager().getBool(INV_STOCK_SHOW_HISTORY, false);
|
||||
stockShowTests = await InvenTreeSettingsManager().getBool(INV_STOCK_SHOW_TESTS, true);
|
||||
stockConfirmScan = await InvenTreeSettingsManager().getBool(INV_STOCK_CONFIRM_SCAN, false);
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
|
79
lib/settings/purchase_order_settings.dart
Normal file
79
lib/settings/purchase_order_settings.dart
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||
|
||||
import "package:inventree/l10.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
|
||||
|
||||
class InvenTreePurchaseOrderSettingsWidget extends StatefulWidget {
|
||||
@override
|
||||
_InvenTreePurchaseOrderSettingsState createState() => _InvenTreePurchaseOrderSettingsState();
|
||||
}
|
||||
|
||||
|
||||
class _InvenTreePurchaseOrderSettingsState extends State<InvenTreePurchaseOrderSettingsWidget> {
|
||||
|
||||
_InvenTreePurchaseOrderSettingsState();
|
||||
|
||||
bool poEnable = true;
|
||||
bool poShowCamera = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
Future<void> loadSettings() async {
|
||||
poEnable = await InvenTreeSettingsManager().getBool(INV_PO_ENABLE, true);
|
||||
poShowCamera = await InvenTreeSettingsManager().getBool(INV_PO_SHOW_CAMERA, true);
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: Text(L10().purchaseOrderSettings)),
|
||||
body: Container(
|
||||
child: ListView(
|
||||
children: [
|
||||
ListTile(
|
||||
title: Text(L10().purchaseOrderEnable),
|
||||
subtitle: Text(L10().purchaseOrderEnableDetail),
|
||||
leading: Icon(TablerIcons.shopping_cart),
|
||||
trailing: Switch(
|
||||
value: poEnable,
|
||||
onChanged: (bool value) {
|
||||
InvenTreeSettingsManager().setValue(INV_PO_ENABLE, value);
|
||||
setState(() {
|
||||
poEnable = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: Text(L10().purchaseOrderShowCamera),
|
||||
subtitle: Text(L10().purchaseOrderShowCameraDetail),
|
||||
leading: Icon(TablerIcons.camera),
|
||||
trailing: Switch(
|
||||
value: poShowCamera,
|
||||
onChanged: (bool value) {
|
||||
InvenTreeSettingsManager().setValue(INV_PO_SHOW_CAMERA, value);
|
||||
setState(() {
|
||||
poShowCamera = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
79
lib/settings/sales_order_settings.dart
Normal file
79
lib/settings/sales_order_settings.dart
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||
|
||||
import "package:inventree/l10.dart";
|
||||
import "package:inventree/preferences.dart";
|
||||
|
||||
|
||||
class InvenTreeSalesOrderSettingsWidget extends StatefulWidget {
|
||||
@override
|
||||
_InvenTreeSalesOrderSettingsState createState() => _InvenTreeSalesOrderSettingsState();
|
||||
}
|
||||
|
||||
|
||||
class _InvenTreeSalesOrderSettingsState extends State<InvenTreeSalesOrderSettingsWidget> {
|
||||
|
||||
_InvenTreeSalesOrderSettingsState();
|
||||
|
||||
bool soEnable = true;
|
||||
bool soShowCamera = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
loadSettings();
|
||||
}
|
||||
|
||||
Future<void> loadSettings() async {
|
||||
soEnable = await InvenTreeSettingsManager().getBool(INV_SO_ENABLE, true);
|
||||
soShowCamera = await InvenTreeSettingsManager().getBool(INV_SO_SHOW_CAMERA, true);
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: Text(L10().salesOrderSettings)),
|
||||
body: Container(
|
||||
child: ListView(
|
||||
children: [
|
||||
ListTile(
|
||||
title: Text(L10().salesOrderEnable),
|
||||
subtitle: Text(L10().salesOrderEnableDetail),
|
||||
leading: Icon(TablerIcons.shopping_cart),
|
||||
trailing: Switch(
|
||||
value: soEnable,
|
||||
onChanged: (bool value) {
|
||||
InvenTreeSettingsManager().setValue(INV_SO_ENABLE, value);
|
||||
setState(() {
|
||||
soEnable = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: Text(L10().salesOrderShowCamera),
|
||||
subtitle: Text(L10().salesOrderShowCameraDetail),
|
||||
leading: Icon(TablerIcons.camera),
|
||||
trailing: Switch(
|
||||
value: soShowCamera,
|
||||
onChanged: (bool value) {
|
||||
InvenTreeSettingsManager().setValue(INV_SO_SHOW_CAMERA, value);
|
||||
setState(() {
|
||||
soShowCamera = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
@ -11,7 +11,8 @@ import "package:inventree/settings/barcode_settings.dart";
|
||||
import "package:inventree/settings/home_settings.dart";
|
||||
import "package:inventree/settings/select_server.dart";
|
||||
import "package:inventree/settings/part_settings.dart";
|
||||
|
||||
import "package:inventree/settings/purchase_order_settings.dart";
|
||||
import "package:inventree/settings/sales_order_settings.dart";
|
||||
|
||||
// InvenTree settings view
|
||||
class InvenTreeSettingsWidget extends StatefulWidget {
|
||||
@ -86,6 +87,22 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreePartSettingsWidget()));
|
||||
}
|
||||
),
|
||||
ListTile(
|
||||
title: Text(L10().purchaseOrder),
|
||||
subtitle: Text(L10().purchaseOrderSettings),
|
||||
leading: Icon(TablerIcons.shopping_cart, color: COLOR_ACTION),
|
||||
onTap: () {
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreePurchaseOrderSettingsWidget()));
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
title: Text(L10().salesOrder),
|
||||
subtitle: Text(L10().salesOrderSettings),
|
||||
leading: Icon(TablerIcons.truck, color: COLOR_ACTION),
|
||||
onTap: () {
|
||||
Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeSalesOrderSettingsWidget()));
|
||||
},
|
||||
),
|
||||
Divider(),
|
||||
ListTile(
|
||||
title: Text(L10().about),
|
||||
|
Reference in New Issue
Block a user