|
|
|
@ -45,10 +45,13 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
final TextEditingController _partQtyController = TextEditingController();
|
|
|
|
final TextEditingController _partQtyController = TextEditingController();
|
|
|
|
|
|
|
|
final TextEditingController _installQtyController = TextEditingController();
|
|
|
|
|
|
|
|
final TextEditingController _returnQtyController = TextEditingController();
|
|
|
|
final TextEditingController _oracleNoController = TextEditingController();
|
|
|
|
final TextEditingController _oracleNoController = TextEditingController();
|
|
|
|
final TextEditingController _descriptionController = TextEditingController();
|
|
|
|
final TextEditingController _descriptionController = TextEditingController();
|
|
|
|
|
|
|
|
|
|
|
|
Lookup statusLookup = Lookup.fromJson({"id": 5619, "name": "New", "value": 1});
|
|
|
|
Lookup statusLookup = Lookup.fromJson({"id": 5619, "name": "New", "value": 1});
|
|
|
|
|
|
|
|
int? activityStatus;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
void initState() {
|
|
|
|
@ -61,14 +64,18 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
sparePartAttachments: _requestDetailProvider?.sparePartHelperModel?.sparePartAttachments ?? [],
|
|
|
|
sparePartAttachments: _requestDetailProvider?.sparePartHelperModel?.sparePartAttachments ?? [],
|
|
|
|
sparePart: _requestDetailProvider?.sparePartHelperModel?.sparePart ?? SparePart(),
|
|
|
|
sparePart: _requestDetailProvider?.sparePartHelperModel?.sparePart ?? SparePart(),
|
|
|
|
quantity: _requestDetailProvider?.sparePartHelperModel?.quantity,
|
|
|
|
quantity: _requestDetailProvider?.sparePartHelperModel?.quantity,
|
|
|
|
|
|
|
|
installQty: _requestDetailProvider?.sparePartHelperModel?.installQty,
|
|
|
|
|
|
|
|
returnQty: _requestDetailProvider?.sparePartHelperModel?.returnQty,
|
|
|
|
activityStatusId: _requestDetailProvider?.sparePartHelperModel?.activityStatusId ?? statusLookup.id,
|
|
|
|
activityStatusId: _requestDetailProvider?.sparePartHelperModel?.activityStatusId ?? statusLookup.id,
|
|
|
|
activityStatus: _requestDetailProvider?.sparePartHelperModel?.activityStatus ?? statusLookup,
|
|
|
|
activityStatus: _requestDetailProvider?.sparePartHelperModel?.activityStatus ?? statusLookup,
|
|
|
|
comment: _requestDetailProvider?.sparePartHelperModel?.comment ?? '',
|
|
|
|
comment: _requestDetailProvider?.sparePartHelperModel?.comment ?? '',
|
|
|
|
);
|
|
|
|
);
|
|
|
|
_partQtyController.text = _requestDetailProvider?.sparePartHelperModel?.quantity != null ? _requestDetailProvider!.sparePartHelperModel!.quantity.toString() : '';
|
|
|
|
_partQtyController.text = _requestDetailProvider?.sparePartHelperModel?.quantity != null ? _requestDetailProvider!.sparePartHelperModel!.quantity!.round().toString() : '';
|
|
|
|
|
|
|
|
_installQtyController.text = _requestDetailProvider?.sparePartHelperModel?.installQty != null ? _requestDetailProvider!.sparePartHelperModel!.installQty!.round().toString() : '';
|
|
|
|
|
|
|
|
_returnQtyController.text = _requestDetailProvider?.sparePartHelperModel?.returnQty != null ? _requestDetailProvider!.sparePartHelperModel!.returnQty!.round().toString() : '';
|
|
|
|
_oracleNoController.text = _requestDetailProvider?.sparePartHelperModel?.sparePart?.oracleCode != null ? _requestDetailProvider!.sparePartHelperModel!.sparePart!.oracleCode! : '';
|
|
|
|
_oracleNoController.text = _requestDetailProvider?.sparePartHelperModel?.sparePart?.oracleCode != null ? _requestDetailProvider!.sparePartHelperModel!.sparePart!.oracleCode! : '';
|
|
|
|
_descriptionController.text = _requestDetailProvider?.sparePartHelperModel?.comment != null ? _requestDetailProvider!.sparePartHelperModel!.comment! : '';
|
|
|
|
_descriptionController.text = _requestDetailProvider?.sparePartHelperModel?.comment != null ? _requestDetailProvider!.sparePartHelperModel!.comment! : '';
|
|
|
|
|
|
|
|
activityStatus = _requestDetailProvider?.sparePartHelperModel?.activityStatus?.value;
|
|
|
|
scheduleMicrotask(() async {
|
|
|
|
scheduleMicrotask(() async {
|
|
|
|
_isLoading = true;
|
|
|
|
_isLoading = true;
|
|
|
|
_files = _requestDetailProvider?.sparePartHelperModel?.sparePartAttachments?.map((e) => MultiFilesPickerModel(e.id!, File(e.name!))).toList() ?? [];
|
|
|
|
_files = _requestDetailProvider?.sparePartHelperModel?.sparePartAttachments?.map((e) => MultiFilesPickerModel(e.id!, File(e.name!))).toList() ?? [];
|
|
|
|
@ -83,6 +90,8 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
void restValues({required ServiceRequestDetailProvider requestDetailProvider}) {
|
|
|
|
void restValues({required ServiceRequestDetailProvider requestDetailProvider}) {
|
|
|
|
requestDetailProvider.sparePartHelperModel = SparePartHelperModel(id: 0, workOrderId: _requestDetailProvider?.currentWorkOrder?.data?.requestId, sparePartAttachments: []);
|
|
|
|
requestDetailProvider.sparePartHelperModel = SparePartHelperModel(id: 0, workOrderId: _requestDetailProvider?.currentWorkOrder?.data?.requestId, sparePartAttachments: []);
|
|
|
|
_partQtyController.clear();
|
|
|
|
_partQtyController.clear();
|
|
|
|
|
|
|
|
_installQtyController.clear();
|
|
|
|
|
|
|
|
_returnQtyController.clear();
|
|
|
|
_oracleNoController.clear();
|
|
|
|
_oracleNoController.clear();
|
|
|
|
_descriptionController.clear();
|
|
|
|
_descriptionController.clear();
|
|
|
|
_files = [];
|
|
|
|
_files = [];
|
|
|
|
@ -91,6 +100,8 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
void dispose() {
|
|
|
|
_partQtyController.dispose();
|
|
|
|
_partQtyController.dispose();
|
|
|
|
|
|
|
|
_installQtyController.dispose();
|
|
|
|
|
|
|
|
_returnQtyController.dispose();
|
|
|
|
_oracleNoController.dispose();
|
|
|
|
_oracleNoController.dispose();
|
|
|
|
_descriptionController.dispose();
|
|
|
|
_descriptionController.dispose();
|
|
|
|
super.dispose();
|
|
|
|
super.dispose();
|
|
|
|
@ -103,6 +114,7 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
|
|
|
bool showInstallAndReturnQty = activityStatus == 3 || activityStatus == 4;
|
|
|
|
return Scaffold(
|
|
|
|
return Scaffold(
|
|
|
|
key: _scaffoldKey,
|
|
|
|
key: _scaffoldKey,
|
|
|
|
appBar: DefaultAppBar(title: context.translation.sparePartRequest),
|
|
|
|
appBar: DefaultAppBar(title: context.translation.sparePartRequest),
|
|
|
|
@ -172,6 +184,50 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
12.height,
|
|
|
|
12.height,
|
|
|
|
|
|
|
|
if(showInstallAndReturnQty) ...[
|
|
|
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
|
|
|
controller: _installQtyController,
|
|
|
|
|
|
|
|
labelText: context.translation.quantity,
|
|
|
|
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
|
|
|
|
showWithoutDecoration: true,
|
|
|
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
|
|
|
|
|
|
|
|
enable: requestDetailProvider.sparePartHelperModel?.sparePart?.id != null,
|
|
|
|
|
|
|
|
validator: (value) => value == null || value.isEmpty
|
|
|
|
|
|
|
|
? context.translation.requiredField
|
|
|
|
|
|
|
|
: Validator.isNumeric(value)
|
|
|
|
|
|
|
|
? null
|
|
|
|
|
|
|
|
: context.translation.onlyNumbers,
|
|
|
|
|
|
|
|
onChange: (value) {
|
|
|
|
|
|
|
|
requestDetailProvider.sparePartHelperModel?.installQty = num.tryParse(value ?? "");
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
|
|
|
requestDetailProvider.sparePartHelperModel?.installQty = num.tryParse(text ?? "");
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
12.height,
|
|
|
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
|
|
|
controller: _returnQtyController,
|
|
|
|
|
|
|
|
labelText: context.translation.quantity,
|
|
|
|
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
|
|
|
|
showWithoutDecoration: true,
|
|
|
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
|
|
|
|
|
|
|
|
enable: requestDetailProvider.sparePartHelperModel?.sparePart?.id != null,
|
|
|
|
|
|
|
|
validator: (value) => value == null || value.isEmpty
|
|
|
|
|
|
|
|
? context.translation.requiredField
|
|
|
|
|
|
|
|
: Validator.isNumeric(value)
|
|
|
|
|
|
|
|
? null
|
|
|
|
|
|
|
|
: context.translation.onlyNumbers,
|
|
|
|
|
|
|
|
onChange: (value) {
|
|
|
|
|
|
|
|
requestDetailProvider.sparePartHelperModel?.returnQty = num.tryParse(value ?? "");
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
|
|
|
requestDetailProvider.sparePartHelperModel?.returnQty = num.tryParse(text ?? "");
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
12.height,
|
|
|
|
|
|
|
|
],
|
|
|
|
AppTextFormField(
|
|
|
|
AppTextFormField(
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
controller: _oracleNoController,
|
|
|
|
controller: _oracleNoController,
|
|
|
|
|