|
|
|
@ -36,7 +36,6 @@ import '../../../new_views/common_widgets/single_item_drop_down_menu.dart';
|
|
|
|
import '../../../providers/loading_list_notifier.dart';
|
|
|
|
import '../../../providers/loading_list_notifier.dart';
|
|
|
|
import '../../../providers/work_order/reason_provider.dart';
|
|
|
|
import '../../../providers/work_order/reason_provider.dart';
|
|
|
|
import '../../widgets/date_and_time/date_picker.dart';
|
|
|
|
import '../../widgets/date_and_time/date_picker.dart';
|
|
|
|
import '../../widgets/e_signature/e_signature.dart';
|
|
|
|
|
|
|
|
import '../../widgets/loaders/loading_manager.dart';
|
|
|
|
import '../../widgets/loaders/loading_manager.dart';
|
|
|
|
import '../../widgets/status/report/service_report_assistant_employee_menu.dart';
|
|
|
|
import '../../widgets/status/report/service_report_assistant_employee_menu.dart';
|
|
|
|
import '../../widgets/status/report/service_report_fault_description.dart';
|
|
|
|
import '../../widgets/status/report/service_report_fault_description.dart';
|
|
|
|
@ -63,8 +62,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
bool _showVendorFields = false;
|
|
|
|
bool _showVendorFields = false;
|
|
|
|
SuppEngineerWorkOrders engineer;
|
|
|
|
SuppEngineerWorkOrders engineer;
|
|
|
|
SupplierDetails initialSupplier;
|
|
|
|
SupplierDetails initialSupplier;
|
|
|
|
final TextEditingController _workPreformedController =
|
|
|
|
final TextEditingController _workPreformedController = TextEditingController();
|
|
|
|
TextEditingController();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
void initState() {
|
|
|
|
@ -75,16 +73,11 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
supplier: null,
|
|
|
|
supplier: null,
|
|
|
|
parentWOId: widget.workOrder.id,
|
|
|
|
parentWOId: widget.workOrder.id,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
_serviceReport = ServiceReport(
|
|
|
|
_serviceReport = ServiceReport(id: widget.workOrder.id, assetType: widget.workOrder.assetType, equipmentStatus: widget.workOrder.equipmentStatus);
|
|
|
|
id: widget.workOrder.id,
|
|
|
|
|
|
|
|
assetType: widget.workOrder.assetType,
|
|
|
|
|
|
|
|
equipmentStatus: widget.workOrder.equipmentStatus);
|
|
|
|
|
|
|
|
_isLoading = true;
|
|
|
|
_isLoading = true;
|
|
|
|
super.initState();
|
|
|
|
super.initState();
|
|
|
|
if (context.mounted) {
|
|
|
|
if (context.mounted) {
|
|
|
|
Provider.of<ServiceReportAssistantsEmployeeProvider>(context,
|
|
|
|
Provider.of<ServiceReportAssistantsEmployeeProvider>(context, listen: false).reset();
|
|
|
|
listen: false)
|
|
|
|
|
|
|
|
.reset();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -93,18 +86,12 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
|
|
|
|
|
|
|
Future getAssetType() async {
|
|
|
|
Future getAssetType() async {
|
|
|
|
Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset();
|
|
|
|
Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset();
|
|
|
|
final serviceRequestProvider =
|
|
|
|
final serviceRequestProvider = Provider.of<ServiceRequestsProvider>(context);
|
|
|
|
Provider.of<ServiceRequestsProvider>(context);
|
|
|
|
Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false).reset();
|
|
|
|
Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false)
|
|
|
|
assetTypesProvider = Provider.of<ServiceStatusProvider>(context, listen: false);
|
|
|
|
.reset();
|
|
|
|
_callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder.callRequest.id.toString());
|
|
|
|
assetTypesProvider =
|
|
|
|
|
|
|
|
Provider.of<ServiceStatusProvider>(context, listen: false);
|
|
|
|
|
|
|
|
_callRequestForWorkOrder =
|
|
|
|
|
|
|
|
await serviceRequestProvider.getCallRequestForWorkOrder(
|
|
|
|
|
|
|
|
callId: widget.workOrder.callRequest.id.toString());
|
|
|
|
|
|
|
|
if (_subWorkOrders?.parentWOId != null) {
|
|
|
|
if (_subWorkOrders?.parentWOId != null) {
|
|
|
|
final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(
|
|
|
|
final subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders?.parentWOId.toString());
|
|
|
|
parentId: _subWorkOrders?.parentWOId.toString());
|
|
|
|
|
|
|
|
_subWorkOrders.copyDetails(subWoDetails);
|
|
|
|
_subWorkOrders.copyDetails(subWoDetails);
|
|
|
|
_serviceReport.equipmentStatus = subWoDetails.equipmentStatus;
|
|
|
|
_serviceReport.equipmentStatus = subWoDetails.equipmentStatus;
|
|
|
|
_serviceReport.reason = subWoDetails.reason;
|
|
|
|
_serviceReport.reason = subWoDetails.reason;
|
|
|
|
@ -121,8 +108,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
engineer = _subWorkOrders.suppEngineerWorkOrders?.last;
|
|
|
|
engineer = _subWorkOrders.suppEngineerWorkOrders?.last;
|
|
|
|
engineer?.id = engineer?.supplierContactId;
|
|
|
|
engineer?.id = engineer?.supplierContactId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_subWorkOrders.supplier ??=
|
|
|
|
_subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
|
|
|
|
SupplierDetails(id: _subWorkOrders?.supplier?.id);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
_isLoading = false;
|
|
|
|
_isLoading = false;
|
|
|
|
@ -158,15 +144,10 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
child: Column(
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
(widget.workOrder?.callRequest?.asset?.site
|
|
|
|
(widget.workOrder?.callRequest?.asset?.site?.name ?? "").heading5(context),
|
|
|
|
?.name ??
|
|
|
|
|
|
|
|
"")
|
|
|
|
|
|
|
|
.heading5(context),
|
|
|
|
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
"${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}"
|
|
|
|
"${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}".bodyText(context),
|
|
|
|
.bodyText(context),
|
|
|
|
"${context.translation.callId}: ${widget.workOrder?.callRequest?.id}".bodyText(context),
|
|
|
|
"${context.translation.callId}: ${widget.workOrder?.callRequest?.id}"
|
|
|
|
|
|
|
|
.bodyText(context),
|
|
|
|
|
|
|
|
],
|
|
|
|
],
|
|
|
|
).paddingAll(16),
|
|
|
|
).paddingAll(16),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
@ -174,11 +155,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
ADatePicker(
|
|
|
|
ADatePicker(
|
|
|
|
label: context.translation.returnToService,
|
|
|
|
label: context.translation.returnToService,
|
|
|
|
date: DateTime.tryParse(
|
|
|
|
date: DateTime.tryParse(_subWorkOrders.visitDate ?? ""),
|
|
|
|
_subWorkOrders.visitDate ?? ""),
|
|
|
|
|
|
|
|
onDatePicker: (date) {
|
|
|
|
onDatePicker: (date) {
|
|
|
|
_subWorkOrders.visitDate =
|
|
|
|
_subWorkOrders.visitDate = date?.toIso8601String();
|
|
|
|
date?.toIso8601String();
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
@ -195,24 +174,19 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
LoadingManager(
|
|
|
|
LoadingManager(
|
|
|
|
isLoading: assetTypesProvider.isLoading,
|
|
|
|
isLoading: assetTypesProvider.isLoading,
|
|
|
|
isFailedLoading:
|
|
|
|
isFailedLoading: assetTypesProvider.statuses == null,
|
|
|
|
assetTypesProvider.statuses == null,
|
|
|
|
|
|
|
|
stateCode: assetTypesProvider.stateCode,
|
|
|
|
stateCode: assetTypesProvider.stateCode,
|
|
|
|
onRefresh: () async {
|
|
|
|
onRefresh: () async {
|
|
|
|
assetTypesProvider.reset();
|
|
|
|
assetTypesProvider.reset();
|
|
|
|
await assetTypesProvider.getTypes();
|
|
|
|
await assetTypesProvider.getTypes();
|
|
|
|
_serviceReport?.assetType =
|
|
|
|
_serviceReport?.assetType = assetTypesProvider.statuses?.firstWhere(
|
|
|
|
assetTypesProvider.statuses?.firstWhere(
|
|
|
|
(element) => element.value == _serviceReport.callRequest.assetType,
|
|
|
|
(element) =>
|
|
|
|
|
|
|
|
element.value ==
|
|
|
|
|
|
|
|
_serviceReport.callRequest.assetType,
|
|
|
|
|
|
|
|
orElse: () => null,
|
|
|
|
orElse: () => null,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
child: AppTextFormField(
|
|
|
|
child: AppTextFormField(
|
|
|
|
labelText: context.translation.assetType,
|
|
|
|
labelText: context.translation.assetType,
|
|
|
|
initialValue:
|
|
|
|
initialValue: _serviceReport?.assetType?.name ?? "NULL",
|
|
|
|
_serviceReport?.assetType?.name ?? "NULL",
|
|
|
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
enable: false,
|
|
|
|
enable: false,
|
|
|
|
style: Theme.of(context).textTheme.titleMedium,
|
|
|
|
style: Theme.of(context).textTheme.titleMedium,
|
|
|
|
@ -228,8 +202,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
SingleItemDropDownMenu<Lookup,
|
|
|
|
SingleItemDropDownMenu<Lookup, EquipmentStatusProvider>(
|
|
|
|
EquipmentStatusProvider>(
|
|
|
|
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: context.translation.equipmentStatus,
|
|
|
|
title: context.translation.equipmentStatus,
|
|
|
|
initialValue: _subWorkOrders.equipmentStatus,
|
|
|
|
initialValue: _subWorkOrders.equipmentStatus,
|
|
|
|
@ -245,15 +218,12 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
onSelect: (status) {
|
|
|
|
onSelect: (status) {
|
|
|
|
_serviceReport.calllastSituation = status;
|
|
|
|
_serviceReport.calllastSituation = status;
|
|
|
|
if (checkVendorFieldsVisibility(status)) {
|
|
|
|
if (checkVendorFieldsVisibility(status)) {
|
|
|
|
_subWorkOrders.supplier ??= SupplierDetails(
|
|
|
|
_subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
|
|
|
|
id: _subWorkOrders?.supplier?.id);
|
|
|
|
|
|
|
|
engineer = null;
|
|
|
|
engineer = null;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
_subWorkOrders.supplier = initialSupplier;
|
|
|
|
_subWorkOrders.supplier = initialSupplier;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (status?.value == 12 ||
|
|
|
|
if (status?.value == 12 || _subWorkOrders.calllastSituation?.value == 12) {
|
|
|
|
_subWorkOrders.calllastSituation?.value ==
|
|
|
|
|
|
|
|
12) {
|
|
|
|
|
|
|
|
_subWorkOrders.calllastSituation = status;
|
|
|
|
_subWorkOrders.calllastSituation = status;
|
|
|
|
_subWorkOrders.mrNumber = null;
|
|
|
|
_subWorkOrders.mrNumber = null;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
@ -262,8 +232,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (_subWorkOrders.calllastSituation?.value == 12)
|
|
|
|
if (_subWorkOrders.calllastSituation?.value == 12) const SizedBox(height: 8),
|
|
|
|
const SizedBox(height: 8),
|
|
|
|
|
|
|
|
if (_subWorkOrders.calllastSituation?.value == 12)
|
|
|
|
if (_subWorkOrders.calllastSituation?.value == 12)
|
|
|
|
AppTextFormField(
|
|
|
|
AppTextFormField(
|
|
|
|
labelText: context.translation.mrNumber,
|
|
|
|
labelText: context.translation.mrNumber,
|
|
|
|
@ -274,30 +243,24 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (_showVendorFields) const SizedBox(height: 8),
|
|
|
|
if (_showVendorFields) const SizedBox(height: 8),
|
|
|
|
if (_showVendorFields)
|
|
|
|
if (_showVendorFields)
|
|
|
|
SingleItemDropDownMenu<SupplierDetails,
|
|
|
|
SingleItemDropDownMenu<SupplierDetails, VendorProvider>(
|
|
|
|
VendorProvider>(
|
|
|
|
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: context.translation.vendorEng,
|
|
|
|
title: context.translation.vendorEng,
|
|
|
|
initialValue: _subWorkOrders.supplier,
|
|
|
|
initialValue: _subWorkOrders.supplier,
|
|
|
|
onSelect: (supplier) {
|
|
|
|
onSelect: (supplier) {
|
|
|
|
if (supplier != null) {
|
|
|
|
if (supplier != null) {
|
|
|
|
_subWorkOrders.supplier = supplier;
|
|
|
|
_subWorkOrders.supplier = supplier;
|
|
|
|
log(_subWorkOrders.supplier?.suppPersons
|
|
|
|
log(_subWorkOrders.supplier?.suppPersons?.map((e) => e.personName)?.toString());
|
|
|
|
?.map((e) => e.personName)
|
|
|
|
|
|
|
|
?.toString());
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (_showVendorFields) const SizedBox(height: 8),
|
|
|
|
if (_showVendorFields) const SizedBox(height: 8),
|
|
|
|
if (_showVendorFields)
|
|
|
|
if (_showVendorFields)
|
|
|
|
SingleItemDropDownMenu<SuppPersons,
|
|
|
|
SingleItemDropDownMenu<SuppPersons, NullableLoadingProvider>(
|
|
|
|
NullableLoadingProvider>(
|
|
|
|
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: context.translation.vendorName,
|
|
|
|
title: context.translation.vendorName,
|
|
|
|
enabled: _subWorkOrders
|
|
|
|
enabled: _subWorkOrders.supplier?.suppPersons?.isNotEmpty ?? false,
|
|
|
|
.supplier?.suppPersons?.isNotEmpty ??
|
|
|
|
|
|
|
|
false,
|
|
|
|
|
|
|
|
staticData: _subWorkOrders.supplier.suppPersons,
|
|
|
|
staticData: _subWorkOrders.supplier.suppPersons,
|
|
|
|
onSelect: (suppPerson) {
|
|
|
|
onSelect: (suppPerson) {
|
|
|
|
if (suppPerson != null) {
|
|
|
|
if (suppPerson != null) {
|
|
|
|
@ -306,8 +269,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
supplierContactId: suppPerson?.id,
|
|
|
|
supplierContactId: suppPerson?.id,
|
|
|
|
personName: suppPerson?.personName,
|
|
|
|
personName: suppPerson?.personName,
|
|
|
|
contact: suppPerson?.contact,
|
|
|
|
contact: suppPerson?.contact,
|
|
|
|
externalEngCode:
|
|
|
|
externalEngCode: suppPerson?.externalEngCode,
|
|
|
|
suppPerson?.externalEngCode,
|
|
|
|
|
|
|
|
email: suppPerson?.email,
|
|
|
|
email: suppPerson?.email,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -319,15 +281,13 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
initialValue: _serviceReport.faultDescription,
|
|
|
|
initialValue: _serviceReport.faultDescription,
|
|
|
|
onSelect: (status) {
|
|
|
|
onSelect: (status) {
|
|
|
|
_serviceReport.faultDescription = status;
|
|
|
|
_serviceReport.faultDescription = status;
|
|
|
|
_workPreformedController?.text = _serviceReport
|
|
|
|
_workPreformedController?.text = _serviceReport.faultDescription?.workPerformed;
|
|
|
|
.faultDescription?.workPerformed;
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
AppTextFormField(
|
|
|
|
AppTextFormField(
|
|
|
|
labelText: context.translation.solution,
|
|
|
|
labelText: context.translation.solution,
|
|
|
|
initialValue:
|
|
|
|
initialValue: _serviceReport?.faultDescription?.workPerformed,
|
|
|
|
_serviceReport?.faultDescription?.workPerformed,
|
|
|
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
enable: false,
|
|
|
|
enable: false,
|
|
|
|
controller: _workPreformedController,
|
|
|
|
controller: _workPreformedController,
|
|
|
|
@ -336,36 +296,20 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
ServiceReportAssistantEmployeeMenu(
|
|
|
|
ServiceReportAssistantEmployeeMenu(
|
|
|
|
title: context.translation.assignAssistant,
|
|
|
|
title: context.translation.assignAssistant,
|
|
|
|
assetId: widget.workOrder?.callRequest?.asset?.id,
|
|
|
|
assetId: widget.workOrder?.callRequest?.asset?.id,
|
|
|
|
initialValue: (_subWorkOrders
|
|
|
|
initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null,
|
|
|
|
.assistantEmployees?.isNotEmpty ??
|
|
|
|
|
|
|
|
false)
|
|
|
|
|
|
|
|
? _subWorkOrders.assistantEmployees?.first
|
|
|
|
|
|
|
|
: null,
|
|
|
|
|
|
|
|
onSelect: (employee) {
|
|
|
|
onSelect: (employee) {
|
|
|
|
_subWorkOrders.assistantEmployees = [
|
|
|
|
_subWorkOrders.assistantEmployees = [employee.copyWith(id: 0)];
|
|
|
|
employee.copyWith(id: 0)
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
SingleItemDropDownMenu<SparePart,
|
|
|
|
SingleItemDropDownMenu<SparePart, NullableLoadingProvider>(
|
|
|
|
NullableLoadingProvider>(
|
|
|
|
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: context.translation.partNo,
|
|
|
|
title: context.translation.partNo,
|
|
|
|
staticData: _subWorkOrders.sparePartsWorkOrders
|
|
|
|
staticData: _subWorkOrders.sparePartsWorkOrders.map((e) => e.sparePart).toList(),
|
|
|
|
.map((e) => e.sparePart)
|
|
|
|
initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.sparePart : null,
|
|
|
|
.toList(),
|
|
|
|
|
|
|
|
initialValue: (_subWorkOrders
|
|
|
|
|
|
|
|
.sparePartsWorkOrders?.isNotEmpty ??
|
|
|
|
|
|
|
|
false)
|
|
|
|
|
|
|
|
? _subWorkOrders
|
|
|
|
|
|
|
|
.sparePartsWorkOrders.first.sparePart
|
|
|
|
|
|
|
|
: null,
|
|
|
|
|
|
|
|
onSelect: (part) {
|
|
|
|
onSelect: (part) {
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.clear();
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.clear();
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.add(
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0));
|
|
|
|
SparePartsWorkOrders(
|
|
|
|
|
|
|
|
id: 0, sparePart: part, qty: 0));
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
@ -373,20 +317,11 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
AppTextFormField(
|
|
|
|
AppTextFormField(
|
|
|
|
labelText: context.translation.quantity,
|
|
|
|
labelText: context.translation.quantity,
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
enable: _subWorkOrders
|
|
|
|
enable: _subWorkOrders?.sparePartsWorkOrders?.isNotEmpty,
|
|
|
|
?.sparePartsWorkOrders?.isNotEmpty,
|
|
|
|
initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.qty?.toString() : null,
|
|
|
|
initialValue: (_subWorkOrders
|
|
|
|
|
|
|
|
.sparePartsWorkOrders?.isNotEmpty ??
|
|
|
|
|
|
|
|
false)
|
|
|
|
|
|
|
|
? _subWorkOrders.sparePartsWorkOrders.first.qty
|
|
|
|
|
|
|
|
?.toString()
|
|
|
|
|
|
|
|
: null,
|
|
|
|
|
|
|
|
onSaved: (text) {
|
|
|
|
onSaved: (text) {
|
|
|
|
if (_subWorkOrders
|
|
|
|
if (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) {
|
|
|
|
.sparePartsWorkOrders?.isNotEmpty ??
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.first.qty = num.tryParse(text ?? "");
|
|
|
|
false) {
|
|
|
|
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.first.qty =
|
|
|
|
|
|
|
|
num.tryParse(text ?? "");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
@ -399,9 +334,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
8.height,
|
|
|
|
8.height,
|
|
|
|
MultiFilesPicker(
|
|
|
|
MultiFilesPicker(label: context.translation.attachImage, files: _files),
|
|
|
|
label: context.translation.attachImage,
|
|
|
|
|
|
|
|
files: _files),
|
|
|
|
|
|
|
|
AppTextFormField(
|
|
|
|
AppTextFormField(
|
|
|
|
labelText: context.translation.travelingExpense,
|
|
|
|
labelText: context.translation.travelingExpense,
|
|
|
|
initialValue: _serviceReport?.travelingExpenses?.toString(),
|
|
|
|
initialValue: _serviceReport?.travelingExpenses?.toString(),
|
|
|
|
@ -438,47 +371,29 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
onPressed: () async {
|
|
|
|
onPressed: () async {
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
_subWorkOrders.suppEngineerWorkOrders ?? [];
|
|
|
|
_subWorkOrders.suppEngineerWorkOrders ?? [];
|
|
|
|
if (engineer != null)
|
|
|
|
if (engineer != null) _subWorkOrders.suppEngineerWorkOrders.add(engineer..id = 0);
|
|
|
|
_subWorkOrders.suppEngineerWorkOrders
|
|
|
|
|
|
|
|
.add(engineer..id = 0);
|
|
|
|
|
|
|
|
if (await validate()) {
|
|
|
|
if (await validate()) {
|
|
|
|
_subWorkOrders.attachmentsWorkOrder ??= [];
|
|
|
|
_subWorkOrders.attachmentsWorkOrder ??= [];
|
|
|
|
for (var file in _files) {
|
|
|
|
for (var file in _files) {
|
|
|
|
_subWorkOrders.attachmentsWorkOrder.add(Attachment(
|
|
|
|
_subWorkOrders.attachmentsWorkOrder.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
|
|
|
id: 0,
|
|
|
|
|
|
|
|
name:
|
|
|
|
|
|
|
|
"${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (_formKey.currentState?.validate() ?? false) {}
|
|
|
|
if (_formKey.currentState?.validate() ?? false) {}
|
|
|
|
_formKey.currentState?.save();
|
|
|
|
_formKey.currentState?.save();
|
|
|
|
final serviceRequestsProvider =
|
|
|
|
final serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context, listen: false);
|
|
|
|
Provider.of<ServiceRequestsProvider>(context,
|
|
|
|
for (var element in (_subWorkOrders?.suppEngineerWorkOrders ?? [])) {
|
|
|
|
listen: false);
|
|
|
|
|
|
|
|
for (var element
|
|
|
|
|
|
|
|
in (_subWorkOrders?.suppEngineerWorkOrders ?? [])) {
|
|
|
|
|
|
|
|
if (element != null) {
|
|
|
|
if (element != null) {
|
|
|
|
element.id = 0;
|
|
|
|
element.id = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
showDialog(
|
|
|
|
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
|
|
context: context,
|
|
|
|
final status = await serviceRequestsProvider.createSubWorkOrder(workOrder: _subWorkOrders);
|
|
|
|
barrierDismissible: false,
|
|
|
|
|
|
|
|
builder: (context) => const AppLazyLoading());
|
|
|
|
|
|
|
|
final status = await serviceRequestsProvider
|
|
|
|
|
|
|
|
.createSubWorkOrder(workOrder: _subWorkOrders);
|
|
|
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
if (status >= 200 && status < 300) {
|
|
|
|
if (status >= 200 && status < 300) {
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
Fluttertoast.showToast(msg: context.translation.successfulRequestMessage);
|
|
|
|
msg:
|
|
|
|
|
|
|
|
context.translation.successfulRequestMessage);
|
|
|
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
String errorMessage =
|
|
|
|
String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation);
|
|
|
|
HttpStatusManger.getStatusMessage(
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage)));
|
|
|
|
status: serviceRequestsProvider.stateCode,
|
|
|
|
|
|
|
|
subtitle: context.translation);
|
|
|
|
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
|
|
|
|
|
|
SnackBar(content: Text(errorMessage)));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -490,16 +405,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool checkVendorFieldsVisibility(Lookup callsLastSituation) {
|
|
|
|
bool checkVendorFieldsVisibility(Lookup callsLastSituation) {
|
|
|
|
bool result =
|
|
|
|
bool result = (_subWorkOrders.supplier?.suppliername?.isNotEmpty ?? false) ||
|
|
|
|
(_subWorkOrders.supplier?.suppliername?.isNotEmpty ?? false) ||
|
|
|
|
(callsLastSituation?.name?.toLowerCase()?.contains("under repair-vendor") ?? false) ||
|
|
|
|
(callsLastSituation?.name
|
|
|
|
(callsLastSituation?.name?.toLowerCase()?.contains("waiting for vendor") ?? false);
|
|
|
|
?.toLowerCase()
|
|
|
|
|
|
|
|
?.contains("under repair-vendor") ??
|
|
|
|
|
|
|
|
false) ||
|
|
|
|
|
|
|
|
(callsLastSituation?.name
|
|
|
|
|
|
|
|
?.toLowerCase()
|
|
|
|
|
|
|
|
?.contains("waiting for vendor") ??
|
|
|
|
|
|
|
|
false);
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
_showVendorFields = result;
|
|
|
|
_showVendorFields = result;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -508,39 +416,22 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
|
|
|
|
|
|
|
Future<bool> validate() async {
|
|
|
|
Future<bool> validate() async {
|
|
|
|
if (_subWorkOrders.reason == null) {
|
|
|
|
if (_subWorkOrders.reason == null) {
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}");
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.reason}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_subWorkOrders.equipmentStatus == null) {
|
|
|
|
} else if (_subWorkOrders.equipmentStatus == null) {
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}");
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_subWorkOrders.calllastSituation == null) {
|
|
|
|
} else if (_subWorkOrders.calllastSituation == null) {
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_showVendorFields &&
|
|
|
|
} else if (_showVendorFields && _subWorkOrders.suppEngineerWorkOrders == null) {
|
|
|
|
_subWorkOrders.suppEngineerWorkOrders == null) {
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.vendorEng}");
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.vendorEng}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_showVendorFields &&
|
|
|
|
} else if (_showVendorFields && (_subWorkOrders.supplier.suppliername == null || _subWorkOrders.supplier.suppliername.isEmpty)) {
|
|
|
|
(_subWorkOrders.supplier.suppliername == null ||
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.vendorName}");
|
|
|
|
_subWorkOrders.supplier.suppliername.isEmpty)) {
|
|
|
|
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.vendorName}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_subWorkOrders.calllastSituation.value == 12 &&
|
|
|
|
} else if (_subWorkOrders.calllastSituation.value == 12 && (_subWorkOrders.sparePartsWorkOrders == null || _subWorkOrders.sparePartsWorkOrders.isEmpty)) {
|
|
|
|
(_subWorkOrders.sparePartsWorkOrders == null ||
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}");
|
|
|
|
_subWorkOrders.sparePartsWorkOrders.isEmpty)) {
|
|
|
|
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
|
|
|
|
msg:
|
|
|
|
|
|
|
|
"${context.translation.youHaveToSelect} ${context.translation.partNo}");
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
} else if (_subWorkOrders?.timer?.startAt == null) {
|
|
|
|
} else if (_subWorkOrders?.timer?.startAt == null) {
|
|
|
|
await Fluttertoast.showToast(msg: "Working Hours Required");
|
|
|
|
await Fluttertoast.showToast(msg: "Working Hours Required");
|
|
|
|
|