|
|
|
|
@ -42,6 +42,7 @@ import '../../widgets/status/report/service_report_fault_description.dart';
|
|
|
|
|
import '../../widgets/status/report/service_report_last_call.dart';
|
|
|
|
|
import '../../widgets/status/report/service_report_repair_location.dart';
|
|
|
|
|
import '../../widgets/timer/app_timer.dart';
|
|
|
|
|
import '../user/requests/work_order/part_no_button.dart';
|
|
|
|
|
|
|
|
|
|
class CreateSubWorkOrderPage extends StatefulWidget {
|
|
|
|
|
static const id = "/CreateSubWorkOrder";
|
|
|
|
|
@ -58,11 +59,13 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
SearchWorkOrder _subWorkOrders;
|
|
|
|
|
ServiceReport _serviceReport;
|
|
|
|
|
final List<File> _files = [];
|
|
|
|
|
List<SparePart> _spareParts = [];
|
|
|
|
|
bool _isLoading = false;
|
|
|
|
|
bool _showVendorFields = false;
|
|
|
|
|
SuppEngineerWorkOrders engineer;
|
|
|
|
|
SupplierDetails initialSupplier;
|
|
|
|
|
final TextEditingController _workPreformedController = TextEditingController();
|
|
|
|
|
final TextEditingController _partQtyController = TextEditingController();
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
@ -96,7 +99,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
_serviceReport.equipmentStatus = subWoDetails.equipmentStatus;
|
|
|
|
|
_serviceReport.reason = subWoDetails.reason;
|
|
|
|
|
initialSupplier = subWoDetails.supplier;
|
|
|
|
|
// _serviceReport.faultDescription = subWoDetails.faultDescription;
|
|
|
|
|
_serviceReport.faultDescription = subWoDetails.faultDescription;
|
|
|
|
|
}
|
|
|
|
|
await assetTypesProvider.getTypes();
|
|
|
|
|
_subWorkOrders?.assetType = assetTypesProvider.statuses?.firstWhere(
|
|
|
|
|
@ -110,6 +113,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
}
|
|
|
|
|
_subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
|
|
|
|
|
}
|
|
|
|
|
_spareParts = _serviceReport.sparePartsWorkOrders.map((e) => e.sparePart).toList();
|
|
|
|
|
setState(() {
|
|
|
|
|
_isLoading = false;
|
|
|
|
|
});
|
|
|
|
|
@ -118,6 +122,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
@override
|
|
|
|
|
void dispose() {
|
|
|
|
|
_workPreformedController?.dispose();
|
|
|
|
|
_partQtyController?.dispose();
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -186,7 +191,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
},
|
|
|
|
|
child: AppTextFormField(
|
|
|
|
|
labelText: context.translation.assetType,
|
|
|
|
|
initialValue: _serviceReport?.assetType?.name ?? "NULL",
|
|
|
|
|
initialValue: _serviceReport?.assetType?.name,
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
enable: false,
|
|
|
|
|
style: Theme.of(context).textTheme.titleMedium,
|
|
|
|
|
@ -302,30 +307,6 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
SingleItemDropDownMenu<SparePart, NullableLoadingProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
title: context.translation.partNo,
|
|
|
|
|
staticData: _subWorkOrders.sparePartsWorkOrders.map((e) => e.sparePart).toList(),
|
|
|
|
|
initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.sparePart : null,
|
|
|
|
|
onSelect: (part) {
|
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.clear();
|
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0));
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
labelText: context.translation.quantity,
|
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
|
enable: _subWorkOrders?.sparePartsWorkOrders?.isNotEmpty,
|
|
|
|
|
initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.qty?.toString() : null,
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
if (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) {
|
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.first.qty = num.tryParse(text ?? "");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
ServiceReportRepairLocation(
|
|
|
|
|
label: context.translation.repairLocation,
|
|
|
|
|
initialValue: _subWorkOrders.repairLocation,
|
|
|
|
|
@ -334,7 +315,17 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
PartNoButton(
|
|
|
|
|
controller: _partQtyController,
|
|
|
|
|
spareParts: _spareParts,
|
|
|
|
|
initialList: _serviceReport.sparePartsWorkOrders,
|
|
|
|
|
onAdd: (parts) {
|
|
|
|
|
_serviceReport.sparePartsWorkOrders = parts;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
MultiFilesPicker(label: context.translation.attachImage, files: _files),
|
|
|
|
|
8.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
labelText: context.translation.travelingExpense,
|
|
|
|
|
initialValue: _serviceReport?.travelingExpenses?.toString(),
|
|
|
|
|
|