Create New Work Order Done

main_design2.0
zaid_daoud 2 years ago
parent 43b2f18a1a
commit 743bb28b1d

@ -1,5 +1,8 @@
import 'dart:typed_data';
import 'package:flutter/cupertino.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/spare_parts.dart';
import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart';
@ -266,8 +269,8 @@ class ServiceReport {
if (reason != null) {
map['reason'] = reason.toJson();
}
map['startofWorkTime'] = startofWorkTime;
map['endofWorkTime'] = endofWorkTime;
map['startofWorkTime'] = "2023-10-30T10:14:07.032021";
map['endofWorkTime'] = "2023-10-30T10:15:07.032021";
map['workingHours'] = workingHours;
map['travelingHours'] = travelingHours;
map['travelingExpenses'] = travelingExpenses;
@ -302,7 +305,19 @@ class ServiceReport {
return map;
}
Future<bool> validate() async {
Future<bool> validate(BuildContext context) async {
if (calllastSituation == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}");
return false;
}
if (sparePartsWorkOrders?.isEmpty ?? true) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}");
return false;
}
if (reason == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}");
return false;
}
return true;
}
}

@ -41,7 +41,7 @@ class SparePartsWorkOrders extends Base {
if (sparePart != null) {
map['sparePart'] = sparePart.toJson();
}
map['qty'] = qty;
map['qty'] = qty ?? 0;
map['returnQty'] = returnQty;
map['installQty'] = installQty;
return map;

@ -209,7 +209,7 @@ class ServiceRequestDetailsPage extends StatelessWidget {
padding: const EdgeInsets.all(16),
child: informationCard(),
).expanded,
if (_userProvider.user.type != UsersTypes.engineer || (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3))
if (_userProvider.user.type == UsersTypes.engineer || (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3))
(serviceRequest.firstAction == null
? AppFilledButton(
label: context.translation.firstAction,

@ -21,6 +21,7 @@ import 'package:test_sa/providers/work_order/reason_provider.dart';
import 'package:test_sa/providers/work_order/service_type_provider.dart';
import 'package:test_sa/views/widgets/e_signature/e_signature.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart';
import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart';
import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart';
@ -31,7 +32,6 @@ import '../../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../../widgets/date_and_time/date_picker.dart';
import '../../../../widgets/images/multi_image_picker.dart';
import '../../../../widgets/status/report/service_report_assistant_employee_menu.dart';
/// todo : TBD (compare with the design)
class CreateServiceReport extends StatefulWidget {
@ -84,7 +84,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
setState(() {});
_serviceReport.callRequest = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id);
await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host);
// _serviceReport.engineer = Engineer.fromJson(_callRequestForWorkOrder?.assignedEmployee?.toJson());
_serviceReport.assignedEmployee = _serviceReport.callRequest?.assignedEmployee;
_spareParts = await _partsProvider.getPartsList(assetId: widget.request.deviceId);
_isLoading = false;
setState(() {});
@ -192,7 +192,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null,
onSelect: (part) {
_serviceReport.sparePartsWorkOrders.clear();
_serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(sparePart: part));
_serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0));
setState(() {});
},
),
@ -201,8 +201,11 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
labelText: context.translation.quantity,
textInputType: TextInputType.number,
enable: _serviceReport.sparePartsWorkOrders.isNotEmpty,
initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.qty?.toString() : null,
onSaved: (text) {
_serviceReport.sparePartsWorkOrders.first.qty = num.tryParse(text ?? "");
if (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) {
_serviceReport.sparePartsWorkOrders.first.qty = num.tryParse(text ?? "");
}
},
),
8.height,
@ -227,7 +230,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
AppFilledButton(
label: context.translation.submitRequest,
onPressed: () async {
if ((!_formKey.currentState.validate()) || (!(await _serviceReport.validate()))) {
if ((!_formKey.currentState.validate()) || (!(await _serviceReport.validate(context)))) {
setState(() {});
return;
}

@ -156,13 +156,14 @@ class WorkOrderListPage extends StatelessWidget {
);
},
).expanded,
if (_userProvider.user.type != UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))
if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))
AppFilledButton(
label: context.translation.createWorkOrder,
maxWidth: true,
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
}).paddingOnly(start: 16, end: 16, bottom: 16)
label: context.translation.createWorkOrder,
maxWidth: true,
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
},
).paddingOnly(start: 16, end: 16, bottom: 16)
],
);
},

Loading…
Cancel
Save