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 {