PM Scheme craete done

This commit is contained in:
2026-02-27 17:13:02 +05:30
parent e12a73c564
commit 08191a8f89
9 changed files with 505 additions and 38 deletions

View File

@@ -30,6 +30,8 @@ class _PositivePayScreenState extends State<PositivePayScreen> {
final _amountController = TextEditingController();
final _payeeController = TextEditingController();
final _chequeService = getIt<ChequeService>();
String? _ciFromCheque;
String? _ciToCheque;
@override
void initState() {
@@ -53,6 +55,53 @@ class _PositivePayScreenState extends State<PositivePayScreen> {
_selectedAccount = _filteredUsers.first;
}
}
_loadChequeDetails();
}
Future<void> _loadChequeDetails() async {
if (_selectedAccount == null) return;
String instrType;
switch (_selectedAccount!.accountType) {
case 'SA':
case 'SB':
instrType = '10';
break;
case 'CA':
instrType = '11';
break;
case 'CC':
instrType = '13';
break;
default:
instrType = '10';
}
try {
final data = await _chequeService.ChequeEnquiry(
accountNumber: _selectedAccount!.accountNo!,
instrType: instrType,
);
final ciCheque = data.where((cheque) => cheque.type == 'CI').toList();
if (mounted) {
setState(() {
if (ciCheque.isNotEmpty) {
_ciFromCheque = ciCheque.first.fromCheque;
_ciToCheque = ciCheque.first.toCheque;
} else {
_ciFromCheque = null;
_ciToCheque = null;
}
});
}
} catch (e) {
if (mounted) {
setState(() {
_ciFromCheque = null;
_ciToCheque = null;
});
}
}
}
@override
@@ -123,6 +172,7 @@ Future<void> _showResponseDialog(String title, String message) async {
onChanged: (User? newUser) {
setState(() {
_selectedAccount = newUser;
_loadChequeDetails();
});
},
validator: (value) {
@@ -138,12 +188,25 @@ Future<void> _showResponseDialog(String title, String message) async {
decoration: InputDecoration(
labelText: AppLocalizations.of(context).chequeNumberLabel,
border: const OutlineInputBorder(),
errorMaxLines: 2,
),
keyboardType: TextInputType.number,
validator: (value) {
if (value == null || value.isEmpty) {
return AppLocalizations.of(context).pleaseEnterChequeNumber;
}
final chequeNumber = int.tryParse(value);
final fromCheque = int.tryParse(_ciFromCheque ?? '');
final toCheque = int.tryParse(_ciToCheque ?? '');
if (chequeNumber == null) {
return AppLocalizations.of(context).invalidChequeNumberFormatError;
}
if (fromCheque != null && toCheque != null) {
if (chequeNumber < fromCheque || chequeNumber > toCheque) {
return AppLocalizations.of(context).chequeNumberRangeError(
_ciFromCheque!, _ciToCheque!);
}
}
return null;
},
),

View File

@@ -136,10 +136,10 @@ class _RevokeStopMultipleChequesScreenState extends State<RevokeStopMultipleCheq
return AppLocalizations.of(context)
.invalidChequeNumberFormatError;
}
// if (chequeNumber < fromCheque || chequeNumber > toCheque) {
// return AppLocalizations.of(context).chequeNumberRangeError(
// widget.fromCheque, widget.toCheque);
// }
if (chequeNumber < fromCheque || chequeNumber > toCheque) {
return AppLocalizations.of(context).chequeNumberRangeError(
widget.fromCheque, widget.toCheque);
}
return null;
},
),
@@ -166,10 +166,10 @@ class _RevokeStopMultipleChequesScreenState extends State<RevokeStopMultipleCheq
return AppLocalizations.of(context)
.invalidChequeNumberFormatError;
}
// if (chequeNumber < fromCheque || chequeNumber > toCheque) {
// return AppLocalizations.of(context).chequeNumberRangeError(
// widget.fromCheque, widget.toCheque);
// }
if (chequeNumber < fromCheque || chequeNumber > toCheque) {
return AppLocalizations.of(context).chequeNumberRangeError(
widget.fromCheque, widget.toCheque);
}
return null;
},
),

View File

@@ -27,6 +27,8 @@ class _RevokeStopChequeScreenState extends State<RevokeStopChequeScreen> {
bool _isLoading = true;
List<Cheque> _stCheques = [];
List<User> _filteredUsers = [];
String? _ciFromCheque;
String? _ciToCheque;
@override
void initState() {
@@ -86,8 +88,16 @@ class _RevokeStopChequeScreenState extends State<RevokeStopChequeScreen> {
final data = await service.ChequeEnquiry(
accountNumber: _selectedAccount!.accountNo!, instrType: instrType);
final stCheques = data.where((cheque) => cheque.type == 'ST').toList();
final ciCheque = data.where((cheque) => cheque.type == 'CI').toList();
setState(() {
_stCheques = stCheques;
if (ciCheque.isNotEmpty) {
_ciFromCheque = ciCheque.first.fromCheque;
_ciToCheque = ciCheque.first.toCheque;
} else {
_ciFromCheque = null;
_ciToCheque = null;
}
_isLoading = false;
});
} catch (e) {
@@ -189,8 +199,8 @@ class _RevokeStopChequeScreenState extends State<RevokeStopChequeScreen> {
selectedAccount: _selectedAccount!,
date: _stCheques.first.Date!,
instrType: _stCheques.first.InstrType!,
fromCheque: _stCheques.first.fromCheque!,
toCheque: _stCheques.first.toCheque!,
fromCheque: _ciFromCheque ?? _stCheques.first.fromCheque!,
toCheque: _ciToCheque ?? _stCheques.first.toCheque!,
),
),
);
@@ -238,8 +248,8 @@ class _RevokeStopChequeScreenState extends State<RevokeStopChequeScreen> {
selectedAccount: _selectedAccount!,
date: _stCheques.first.Date!,
instrType: _stCheques.first.InstrType!,
fromCheque: _stCheques.first.fromCheque!,
toCheque: _stCheques.first.toCheque!,
fromCheque: _ciFromCheque ?? _stCheques.first.fromCheque!,
toCheque: _ciToCheque ?? _stCheques.first.toCheque!,
),
),
);

View File

@@ -133,10 +133,10 @@ class _RevokeStopSingleChequeScreenState extends State<RevokeStopSingleChequeScr
return AppLocalizations.of(context)
.invalidChequeNumberFormatError;
}
// if (chequeNumber < fromCheque || chequeNumber > toCheque) {
// return AppLocalizations.of(context).chequeNumberRangeError(
// widget.fromCheque, widget.toCheque);
// }
if (chequeNumber < fromCheque || chequeNumber > toCheque) {
return AppLocalizations.of(context).chequeNumberRangeError(
widget.fromCheque, widget.toCheque);
}
return null;
},
),