NTP-52793 | Payer VPA Collect request for mandate fix (#15637)
This commit is contained in:
committed by
GitHub
parent
8761406a28
commit
cf2356760f
@@ -152,8 +152,6 @@ import com.navi.pay.npcicl.CredDataProvider
|
||||
import com.navi.pay.npcicl.NpciRepository
|
||||
import com.navi.pay.npcicl.NpciResult
|
||||
import com.navi.pay.onboarding.account.add.model.view.AccountType
|
||||
import com.navi.pay.onboarding.account.common.model.view.VpaEntity
|
||||
import com.navi.pay.onboarding.account.common.model.view.VpaStatus
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
import com.navi.pay.onboarding.account.detail.model.view.deepCopy
|
||||
import com.navi.pay.utils.ACCOUNT_ID
|
||||
@@ -3135,10 +3133,9 @@ constructor(
|
||||
if (source !is SendMoneyScreenSource.CollectRequest) {
|
||||
return@launch
|
||||
}
|
||||
val vpaEntity =
|
||||
selectedBankAccount.value?.vpaEntityList?.firstOrNull {
|
||||
it.vpa.equals(source.payerVpa, ignoreCase = true)
|
||||
} ?: return@launch
|
||||
val selectedBankAccount = selectedBankAccount.value ?: return@launch
|
||||
val collectRequestPsp = PspType.fromVpa(source.payerVpa) ?: return@launch
|
||||
val vpaEntity = selectedBankAccount.getVpaEntityByPsp(collectRequestPsp)
|
||||
|
||||
naviPayPspManager.evaluateAndOnboardPspForVpa(
|
||||
vpaEntity = vpaEntity,
|
||||
@@ -3164,36 +3161,20 @@ constructor(
|
||||
return@evaluateAndOnboardPspForVpa
|
||||
}
|
||||
|
||||
val updatedBankAccount =
|
||||
if (source.collectType.equals(REQUEST_TYPE_MANDATE, ignoreCase = true)) {
|
||||
// Payer VPA will be UMN in case of mandate, so getting this from
|
||||
// collect
|
||||
// request item.
|
||||
selectedBankAccount.value?.deepCopy(
|
||||
vpaEntityList =
|
||||
listOf(
|
||||
VpaEntity(
|
||||
vpa = source.umn!!,
|
||||
isVpaPrimary = true,
|
||||
status = VpaStatus.toVpaStatus(status = ""),
|
||||
accountId = selectedBankAccount.value?.accountId ?: "",
|
||||
bankAccountUniqueId =
|
||||
selectedBankAccount.value
|
||||
?.getBuidByPsp(pspType)
|
||||
.orEmpty(),
|
||||
)
|
||||
)
|
||||
)
|
||||
// Payer VPA will be UMN in case of mandate
|
||||
val collectRequestVpa =
|
||||
if (isCollectRequestOfTypeMandate(collectType = source.collectType)) {
|
||||
source.umn
|
||||
} else {
|
||||
selectedBankAccount.value
|
||||
}
|
||||
source.payerVpa
|
||||
} ?: return@evaluateAndOnboardPspForVpa
|
||||
|
||||
if (updatedBankAccount == null) {
|
||||
if (pspEvaluationResult.isOnboardingTriggered) {
|
||||
updateTriggerDismissBottomSheet()
|
||||
}
|
||||
return@evaluateAndOnboardPspForVpa
|
||||
}
|
||||
val updatedVpaEntityForCollectRequest = vpaEntity.copy(vpa = collectRequestVpa)
|
||||
|
||||
val updatedBankAccount =
|
||||
selectedBankAccount.deepCopy(
|
||||
vpaEntityList = listOf(updatedVpaEntityForCollectRequest)
|
||||
)
|
||||
|
||||
if (!pspEvaluationResult.isOnboardingTriggered) {
|
||||
updateShowPayButtonLoader(true)
|
||||
@@ -3252,10 +3233,7 @@ constructor(
|
||||
upiRequestId = upiRequestId,
|
||||
credBlock = npciResult.data,
|
||||
selectedBankAccount = updatedBankAccount,
|
||||
collectRequestVpa =
|
||||
vpaEntity.vpa, // TODO: Multibank - Check if this is correct for
|
||||
// mandate
|
||||
// collect request approve
|
||||
collectRequestVpa = collectRequestVpa,
|
||||
pspType = pspEvaluationResult.onboardingDataEntity.pspType,
|
||||
)
|
||||
}
|
||||
@@ -3275,15 +3253,21 @@ constructor(
|
||||
}
|
||||
|
||||
private fun declineCollectRequest() {
|
||||
// TODO: - Check if we need to handle this for mandate decline case
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
if (source !is SendMoneyScreenSource.CollectRequest) {
|
||||
return@launch
|
||||
}
|
||||
|
||||
val vpaEntity =
|
||||
selectedBankAccount.value?.vpaEntityList?.firstOrNull {
|
||||
it.vpa.equals(source.payerVpa, ignoreCase = true)
|
||||
val selectedBankAccount = selectedBankAccount.value ?: return@launch
|
||||
val collectRequestPsp = PspType.fromVpa(source.payerVpa) ?: return@launch
|
||||
val vpaEntity = selectedBankAccount.getVpaEntityByPsp(collectRequestPsp)
|
||||
|
||||
// Payer VPA will be UMN in case of mandate
|
||||
val collectRequestVpa =
|
||||
if (isCollectRequestOfTypeMandate(collectType = source.collectType)) {
|
||||
source.umn
|
||||
} else {
|
||||
source.payerVpa
|
||||
} ?: return@launch
|
||||
|
||||
naviPayPspManager.evaluateAndOnboardPspForVpa(
|
||||
@@ -3300,15 +3284,6 @@ constructor(
|
||||
)
|
||||
}
|
||||
|
||||
if (
|
||||
selectedBankAccount.value == null &&
|
||||
pspEvaluationResult.isOnboardingTriggered
|
||||
) {
|
||||
updateTriggerDismissBottomSheet()
|
||||
}
|
||||
|
||||
val selectedBankAccount =
|
||||
selectedBankAccount.value ?: return@evaluateAndOnboardPspForVpa
|
||||
val upiRequestId = payeeEntity.value.transactionId ?: ""
|
||||
|
||||
updatePayeeEntity(
|
||||
@@ -3324,9 +3299,7 @@ constructor(
|
||||
credBlock = null,
|
||||
selectedBankAccount = selectedBankAccount,
|
||||
isOnboardingTriggered = pspEvaluationResult.isOnboardingTriggered,
|
||||
collectRequestVpa =
|
||||
vpaEntity.vpa, // TODO: Check if this is correct for mandate collect
|
||||
// request decline
|
||||
collectRequestVpa = collectRequestVpa,
|
||||
pspType = pspEvaluationResult.onboardingDataEntity.pspType,
|
||||
)
|
||||
},
|
||||
@@ -3334,6 +3307,9 @@ constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun isCollectRequestOfTypeMandate(collectType: String): Boolean =
|
||||
collectType.equals(REQUEST_TYPE_MANDATE, ignoreCase = true)
|
||||
|
||||
private suspend fun processCollectRequest(
|
||||
collectRequestAction: CollectRequestAction,
|
||||
upiRequestId: String,
|
||||
|
||||
Reference in New Issue
Block a user