From a4b63ea144f6d8fa9645e6789f742c10fc8a8ea6 Mon Sep 17 00:00:00 2001 From: Gleb Kulik Date: Wed, 30 Oct 2024 17:34:22 +0100 Subject: [PATCH] feat(GiniBankSDK): recalculate max price value for Skonto RA items PP-906 --- .../DigitalInvoice/DigitalInvoiceViewModel.swift | 1 + .../DigitalInvoice/Models/DigitalInvoice.swift | 7 +++++++ .../GiniBankSDK/Core/Skonto/Models/SkontoViewModel.swift | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/DigitalInvoiceViewModel.swift b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/DigitalInvoiceViewModel.swift index afcf925bc..0a913a51e 100644 --- a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/DigitalInvoiceViewModel.swift +++ b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/DigitalInvoiceViewModel.swift @@ -19,6 +19,7 @@ final class DigitalInvoiceViewModel { weak var delegate: DigitalInvoiceViewModelDelagate? var invoice: DigitalInvoice? { didSet { + skontoViewModel?.setMaximumAmountToPayValue(invoice?.maximumAvailablePrice) skontoViewModel?.setAmountToPayPrice(invoice?.total?.stringWithoutSymbol ?? "") } } diff --git a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/Models/DigitalInvoice.swift b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/Models/DigitalInvoice.swift index 0f89ca0e2..bf2f33899 100644 --- a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/Models/DigitalInvoice.swift +++ b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/ReturnAssistant/DigitalInvoice/Models/DigitalInvoice.swift @@ -71,6 +71,13 @@ public struct DigitalInvoice { return amountToPay } } + + var maximumAvailablePrice: Decimal { + let maxPricePerItem = 99999.99 + let totalMaxValue = maxPricePerItem * Double(lineItems.count) + let roundedValue = (totalMaxValue * 100).rounded(.up) / 100 + return Decimal(roundedValue) + } } extension DigitalInvoice { diff --git a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/Skonto/Models/SkontoViewModel.swift b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/Skonto/Models/SkontoViewModel.swift index f3299aca5..ecbbbb448 100644 --- a/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/Skonto/Models/SkontoViewModel.swift +++ b/BankSDK/GiniBankSDK/Sources/GiniBankSDK/Core/Skonto/Models/SkontoViewModel.swift @@ -183,6 +183,11 @@ class SkontoViewModel { } } + func setMaximumAmountToPayValue(_ value: Decimal?) { + guard let value else { return } + maximumAmountToPayValue = value + } + private func setPrice(_ price: String, maxValue: Decimal, errorMessage: String, completion: (Price) -> Void) { let validationMessage = validatePrice(price, maxValue: maxValue, errorMessage: errorMessage) if let validationMessage {