diff --git a/lib/cm_module/service_request_detail_provider.dart b/lib/cm_module/service_request_detail_provider.dart index edc52141..d74b8867 100644 --- a/lib/cm_module/service_request_detail_provider.dart +++ b/lib/cm_module/service_request_detail_provider.dart @@ -18,7 +18,6 @@ import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/models/service_request/spare_parts.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; - class ServiceRequestDetailProvider extends ChangeNotifier { final pageItemNumber = 10; diff --git a/lib/cm_module/views/components/service_request_detail_view.dart b/lib/cm_module/views/components/service_request_detail_view.dart index 42c9b308..a9201819 100644 --- a/lib/cm_module/views/components/service_request_detail_view.dart +++ b/lib/cm_module/views/components/service_request_detail_view.dart @@ -7,6 +7,7 @@ import 'package:test_sa/cm_module/views/components/action_button/footer_action_b import 'package:test_sa/cm_module/views/components/asset_detail_card.dart'; import 'package:test_sa/cm_module/views/components/initial_visit_card.dart'; import 'package:test_sa/cm_module/views/forms/asset_retired/asset_retired.dart'; +import 'package:test_sa/cm_module/views/forms/cost/cost_detail_form_screen.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -65,8 +66,8 @@ class _ServiceRequestDetailViewState extends State { workOrderDetailCard(context, requestProvider.currentWorkOrder!.data!, _userProvider, requestProvider), initialVisitCard(requestDetailProvider: requestProvider, userProvider: _userProvider), assetDetailCard(requestDetailProvider: requestProvider, userProvider: _userProvider), - // 12.height, - // costCard(context, requestProvider.currentWorkOrder!.data!), + 12.height, + costCard(context, requestProvider), 12.height, contactInfoCard(context, requestProvider.currentWorkOrder!.data!), 20.height, @@ -438,29 +439,39 @@ class _ServiceRequestDetailViewState extends State { ).toShadowContainer(context, padding: 12); } - Widget costCard(BuildContext context, WorkOrderData workOrder) { + Widget costCard(BuildContext context, ServiceRequestDetailProvider provider) { return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "Cost", - style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + Row( + children: [ + Text( + "Cost", + style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ).expanded, + if (!provider.isReadOnlyRequest) + "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() async { + provider.refreshTimer = false; + await Navigator.push(context, MaterialPageRoute(builder: (context) => CostDetailFormScreen(isEdit: true))); + provider.refreshTimer = true; + }), + ], ), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Text( - 'Spare Part Cost: ${workOrder.sparePartCost ?? '-'}', + 'Spare Part Cost: ${provider.currentWorkOrder!.data?.sparePartCost ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), Text( - 'Labour Cost: ${context.translation.employeeId}: ${workOrder.labourCost ?? '-'}', + 'Labour Cost: ${provider.currentWorkOrder!.data?.labourCost ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), Text( - 'Travel Cost: ${context.translation.telephone}: ${workOrder.travelCost ?? '-'}', + 'Travel Cost: ${provider.currentWorkOrder!.data?.travelCost ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), ], diff --git a/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart b/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart index 4c06ad54..347d9682 100644 --- a/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart +++ b/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart @@ -61,56 +61,55 @@ class _CostDetailFormScreenState extends State with Ticker crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - if (widget.isEdit) ...[ - SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - AppTextFormField( - labelText: "Spare Part Cost", - backgroundColor: AppColor.neutral100, - initialValue: requestDetailProvider.workOrderCostModel?.sparePartCost?.toString(), - textAlign: TextAlign.center, - labelStyle: AppTextStyles.textFieldLabelStyle, - showShadow: false, - onChange: (value) { - requestDetailProvider.engineerUpdateWorkOrderHelperModel?.callResponse = value; - }, - style: Theme.of(context).textTheme.titleMedium, - ), - 8.height, - AppTextFormField( - labelText: "Labour Cost", - backgroundColor: AppColor.neutral100, - initialValue: requestDetailProvider.workOrderCostModel?.labourCost?.toString(), - textAlign: TextAlign.center, - labelStyle: AppTextStyles.textFieldLabelStyle, - showShadow: false, - onChange: (value) { - requestDetailProvider.engineerUpdateWorkOrderHelperModel?.descriptionOfFinding = value; - }, - style: Theme.of(context).textTheme.titleMedium, - ), - 8.height, - AppTextFormField( - labelText: "Travel Cost", - backgroundColor: AppColor.neutral100, - initialValue: requestDetailProvider.workOrderCostModel?.travelCost?.toString(), - textAlign: TextAlign.center, - labelStyle: AppTextStyles.textFieldLabelStyle, - showShadow: false, - onChange: (value) { - requestDetailProvider.engineerUpdateWorkOrderHelperModel?.actionTaken = value; - }, - style: Theme.of(context).textTheme.titleMedium, - ), - ], - ).toShadowContainer(context).paddingAll(16), - ).expanded, - ] else ...[ - assetStatusWidget(context: context, workOrderData: requestDetailProvider.engineerUpdateWorkOrderHelperModel!).toShadowContainer(context).paddingAll(16), - ], + SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppTextFormField( + labelText: "Spare Part Cost", + backgroundColor: AppColor.neutral100, + initialValue: requestDetailProvider.workOrderCostModel?.sparePartCost?.toString(), + textAlign: TextAlign.center, + labelStyle: AppTextStyles.textFieldLabelStyle, + textInputType: TextInputType.number, + showShadow: false, + onChange: (value) { + requestDetailProvider.workOrderCostModel?.sparePartCost = num.parse(value); + }, + style: Theme.of(context).textTheme.titleMedium, + ), + 8.height, + AppTextFormField( + labelText: "Labour Cost", + backgroundColor: AppColor.neutral100, + initialValue: requestDetailProvider.workOrderCostModel?.labourCost?.toString(), + textAlign: TextAlign.center, + labelStyle: AppTextStyles.textFieldLabelStyle, + textInputType: TextInputType.number, + showShadow: false, + onChange: (value) { + requestDetailProvider.workOrderCostModel?.labourCost = num.parse(value); + }, + style: Theme.of(context).textTheme.titleMedium, + ), + 8.height, + AppTextFormField( + labelText: "Travel Cost", + backgroundColor: AppColor.neutral100, + initialValue: requestDetailProvider.workOrderCostModel?.travelCost?.toString(), + textAlign: TextAlign.center, + labelStyle: AppTextStyles.textFieldLabelStyle, + textInputType: TextInputType.number, + showShadow: false, + onChange: (value) { + requestDetailProvider.workOrderCostModel?.travelCost = num.parse(value); + }, + style: Theme.of(context).textTheme.titleMedium, + ), + ], + ).toShadowContainer(context).paddingAll(16), + ).expanded, Container( padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight), color: AppColor.white10, @@ -120,7 +119,7 @@ class _CostDetailFormScreenState extends State with Ticker onPressed: () async { if (validateForm(requestDetailProvider: requestDetailProvider)) { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - await requestDetailProvider.engineerUpdateWorkOrder(); + await requestDetailProvider.engineerUpdateCost(); Navigator.pop(context); Navigator.pop(context); } diff --git a/lib/models/new_models/work_order_detail_model.dart b/lib/models/new_models/work_order_detail_model.dart index 46ba796f..3fc360d0 100644 --- a/lib/models/new_models/work_order_detail_model.dart +++ b/lib/models/new_models/work_order_detail_model.dart @@ -153,9 +153,9 @@ class WorkOrderData { String? descriptionOfFinding; String? actionTaken; int? since; - int? sparePartCost; - int? labourCost; - int? travelCost; + num? sparePartCost; + num? labourCost; + num? travelCost; List workOrderHistory; List activities; List activityAssetToBeRetireds; @@ -187,7 +187,7 @@ class WorkOrderData { since: json['since'], travelCost: json['travelCost'], sparePartCost: json['sparePartCost'], - labourCost: json['labourCost'], + labourCost: json['laborCost'], assetType: json["assetType"] == null ? null : Lookup.fromJson(json["assetType"]), assignedEmployee: json["assignedEmployee"] == null ? null : WorkOrderAssignedEmployee.fromJson(json["assignedEmployee"]), lastActivityStatus: json["lastActivityStatus"] != null ? Lookup.fromJson(json["lastActivityStatus"]) : null,