cost added.

design_3.0_task_module_new
Sikander Saleem 6 months ago
parent 36657cd5ca
commit 16a0f20fbb

@ -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/spare_parts.dart';
import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/models/service_request/supplier_details.dart';
class ServiceRequestDetailProvider extends ChangeNotifier { class ServiceRequestDetailProvider extends ChangeNotifier {
final pageItemNumber = 10; final pageItemNumber = 10;

@ -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/asset_detail_card.dart';
import 'package:test_sa/cm_module/views/components/initial_visit_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/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/api_routes/urls.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
@ -65,8 +66,8 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
workOrderDetailCard(context, requestProvider.currentWorkOrder!.data!, _userProvider, requestProvider), workOrderDetailCard(context, requestProvider.currentWorkOrder!.data!, _userProvider, requestProvider),
initialVisitCard(requestDetailProvider: requestProvider, userProvider: _userProvider), initialVisitCard(requestDetailProvider: requestProvider, userProvider: _userProvider),
assetDetailCard(requestDetailProvider: requestProvider, userProvider: _userProvider), assetDetailCard(requestDetailProvider: requestProvider, userProvider: _userProvider),
// 12.height, 12.height,
// costCard(context, requestProvider.currentWorkOrder!.data!), costCard(context, requestProvider),
12.height, 12.height,
contactInfoCard(context, requestProvider.currentWorkOrder!.data!), contactInfoCard(context, requestProvider.currentWorkOrder!.data!),
20.height, 20.height,
@ -438,29 +439,39 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
).toShadowContainer(context, padding: 12); ).toShadowContainer(context, padding: 12);
} }
Widget costCard(BuildContext context, WorkOrderData workOrder) { Widget costCard(BuildContext context, ServiceRequestDetailProvider provider) {
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Row(
"Cost", children: [
style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), 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( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
'Spare Part Cost: ${workOrder.sparePartCost ?? '-'}', 'Spare Part Cost: ${provider.currentWorkOrder!.data?.sparePartCost ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
), ),
Text( 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), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
), ),
Text( 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), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
), ),
], ],

@ -61,56 +61,55 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
if (widget.isEdit) ...[ SingleChildScrollView(
SingleChildScrollView( child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.min, children: [
children: [ AppTextFormField(
AppTextFormField( labelText: "Spare Part Cost",
labelText: "Spare Part Cost", backgroundColor: AppColor.neutral100,
backgroundColor: AppColor.neutral100, initialValue: requestDetailProvider.workOrderCostModel?.sparePartCost?.toString(),
initialValue: requestDetailProvider.workOrderCostModel?.sparePartCost?.toString(), textAlign: TextAlign.center,
textAlign: TextAlign.center, labelStyle: AppTextStyles.textFieldLabelStyle,
labelStyle: AppTextStyles.textFieldLabelStyle, textInputType: TextInputType.number,
showShadow: false, showShadow: false,
onChange: (value) { onChange: (value) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.callResponse = value; requestDetailProvider.workOrderCostModel?.sparePartCost = num.parse(value);
}, },
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
8.height, 8.height,
AppTextFormField( AppTextFormField(
labelText: "Labour Cost", labelText: "Labour Cost",
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
initialValue: requestDetailProvider.workOrderCostModel?.labourCost?.toString(), initialValue: requestDetailProvider.workOrderCostModel?.labourCost?.toString(),
textAlign: TextAlign.center, textAlign: TextAlign.center,
labelStyle: AppTextStyles.textFieldLabelStyle, labelStyle: AppTextStyles.textFieldLabelStyle,
showShadow: false, textInputType: TextInputType.number,
onChange: (value) { showShadow: false,
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.descriptionOfFinding = value; onChange: (value) {
}, requestDetailProvider.workOrderCostModel?.labourCost = num.parse(value);
style: Theme.of(context).textTheme.titleMedium, },
), style: Theme.of(context).textTheme.titleMedium,
8.height, ),
AppTextFormField( 8.height,
labelText: "Travel Cost", AppTextFormField(
backgroundColor: AppColor.neutral100, labelText: "Travel Cost",
initialValue: requestDetailProvider.workOrderCostModel?.travelCost?.toString(), backgroundColor: AppColor.neutral100,
textAlign: TextAlign.center, initialValue: requestDetailProvider.workOrderCostModel?.travelCost?.toString(),
labelStyle: AppTextStyles.textFieldLabelStyle, textAlign: TextAlign.center,
showShadow: false, labelStyle: AppTextStyles.textFieldLabelStyle,
onChange: (value) { textInputType: TextInputType.number,
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.actionTaken = value; showShadow: false,
}, onChange: (value) {
style: Theme.of(context).textTheme.titleMedium, requestDetailProvider.workOrderCostModel?.travelCost = num.parse(value);
), },
], style: Theme.of(context).textTheme.titleMedium,
).toShadowContainer(context).paddingAll(16), ),
).expanded, ],
] else ...[ ).toShadowContainer(context).paddingAll(16),
assetStatusWidget(context: context, workOrderData: requestDetailProvider.engineerUpdateWorkOrderHelperModel!).toShadowContainer(context).paddingAll(16), ).expanded,
],
Container( Container(
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight),
color: AppColor.white10, color: AppColor.white10,
@ -120,7 +119,7 @@ class _CostDetailFormScreenState extends State<CostDetailFormScreen> with Ticker
onPressed: () async { onPressed: () async {
if (validateForm(requestDetailProvider: requestDetailProvider)) { if (validateForm(requestDetailProvider: requestDetailProvider)) {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
await requestDetailProvider.engineerUpdateWorkOrder(); await requestDetailProvider.engineerUpdateCost();
Navigator.pop(context); Navigator.pop(context);
Navigator.pop(context); Navigator.pop(context);
} }

@ -153,9 +153,9 @@ class WorkOrderData {
String? descriptionOfFinding; String? descriptionOfFinding;
String? actionTaken; String? actionTaken;
int? since; int? since;
int? sparePartCost; num? sparePartCost;
int? labourCost; num? labourCost;
int? travelCost; num? travelCost;
List<WorkOrderHistory> workOrderHistory; List<WorkOrderHistory> workOrderHistory;
List<Activities> activities; List<Activities> activities;
List<dynamic> activityAssetToBeRetireds; List<dynamic> activityAssetToBeRetireds;
@ -187,7 +187,7 @@ class WorkOrderData {
since: json['since'], since: json['since'],
travelCost: json['travelCost'], travelCost: json['travelCost'],
sparePartCost: json['sparePartCost'], sparePartCost: json['sparePartCost'],
labourCost: json['labourCost'], labourCost: json['laborCost'],
assetType: json["assetType"] == null ? null : Lookup.fromJson(json["assetType"]), assetType: json["assetType"] == null ? null : Lookup.fromJson(json["assetType"]),
assignedEmployee: json["assignedEmployee"] == null ? null : WorkOrderAssignedEmployee.fromJson(json["assignedEmployee"]), assignedEmployee: json["assignedEmployee"] == null ? null : WorkOrderAssignedEmployee.fromJson(json["assignedEmployee"]),
lastActivityStatus: json["lastActivityStatus"] != null ? Lookup.fromJson(json["lastActivityStatus"]) : null, lastActivityStatus: json["lastActivityStatus"] != null ? Lookup.fromJson(json["lastActivityStatus"]) : null,

Loading…
Cancel
Save