diff --git a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/capture/digitalinvoice/DigitalInvoice.kt b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/capture/digitalinvoice/DigitalInvoice.kt index d00b69719..a022555bf 100644 --- a/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/capture/digitalinvoice/DigitalInvoice.kt +++ b/bank-sdk/sdk/src/main/java/net/gini/android/bank/sdk/capture/digitalinvoice/DigitalInvoice.kt @@ -301,51 +301,7 @@ internal class DigitalInvoice( _compoundExtractions = compoundExtractions.mapValues { (name, extraction) -> when (name) { "lineItems" -> { - val cameraExtractions = - extraction.specificExtractionMaps.mapIndexed { index, lineItemExtractions -> - selectableLineItems.find { it.lineItem.id.toInt() == index } - ?.let { sli -> - val extractions = - lineItemExtractions.mapValues { (name, lineItemExtraction) -> - when (name) { - "description" -> copyGiniCaptureSpecificExtraction( - lineItemExtraction, - sli.lineItem.description - ) - - "baseGross" -> copyGiniCaptureSpecificExtraction( - lineItemExtraction, - sli.lineItem.rawGrossPrice - ) - - "quantity" -> copyGiniCaptureSpecificExtraction( - lineItemExtraction, - if (sli.selected) { - sli.lineItem.quantity.toString() - } else { - "0" - } - ) - - else -> lineItemExtraction - } - }.toMutableMap() - sli.reason?.let { returnReason -> - extractions.put( - "returnReason", GiniCaptureSpecificExtraction( - "returnReason", - returnReason.id, - "", - null, - emptyList() - ) - ) - } - extractions - } - }.filterNotNull().toMutableList() - - + val cameraExtractions = transformLineItemExtractions(extraction) val userAddedExtractions = selectableLineItems.filter { it.addedByUser } .map { it.lineItem.asGiniExtractionMap() @@ -364,6 +320,51 @@ internal class DigitalInvoice( } } + private fun transformLineItemExtractions(extraction: GiniCaptureCompoundExtraction): MutableList> { + return extraction.specificExtractionMaps.mapIndexed { index, lineItemExtractions -> + selectableLineItems.find { it.lineItem.id.toInt() == index } + ?.let { sli -> + val extractions = + lineItemExtractions.mapValues { (name, lineItemExtraction) -> + when (name) { + "description" -> copyGiniCaptureSpecificExtraction( + lineItemExtraction, + sli.lineItem.description + ) + + "baseGross" -> copyGiniCaptureSpecificExtraction( + lineItemExtraction, + sli.lineItem.rawGrossPrice + ) + + "quantity" -> copyGiniCaptureSpecificExtraction( + lineItemExtraction, + if (sli.selected) { + sli.lineItem.quantity.toString() + } else { + "0" + } + ) + + else -> lineItemExtraction + } + }.toMutableMap() + sli.reason?.let { returnReason -> + extractions.put( + "returnReason", GiniCaptureSpecificExtraction( + "returnReason", + returnReason.id, + "", + null, + emptyList() + ) + ) + } + extractions + } + }.filterNotNull().toMutableList() + } + fun updateAmountToPayExtractionWithTotalPrice() { val totalPrice = getAmountToPay().toPriceString( selectableLineItems.firstOrNull()?.lineItem?.rawCurrency ?: "EUR"