From 900ddf5c4fe4ec6d7897bbcd86991c253d5ee692 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 30 Jan 2024 18:15:00 +0200 Subject: [PATCH] Profit loss report is doesn't reflect converted currencies #620 --- lib/data/models/payment_model.dart | 4 ++++ lib/ui/reports/profit_loss_report.dart | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index 678d5c8c4..fe786bb5d 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -501,6 +501,10 @@ abstract class PaymentEntity extends Object bool get isOnline => companyGatewayId.isNotEmpty; + double get convertedExchangeRate => exchangeRate == 0 ? 1 : exchangeRate; + + double get convertedAmount => completedAmount * convertedExchangeRate; + bool get isCompletedOrPartiallyRefunded => [ kPaymentStatusCompleted, kPaymentStatusPartiallyRefunded diff --git a/lib/ui/reports/profit_loss_report.dart b/lib/ui/reports/profit_loss_report.dart index 2a4f6bbd9..a0d708114 100644 --- a/lib/ui/reports/profit_loss_report.dart +++ b/lib/ui/reports/profit_loss_report.dart @@ -36,6 +36,7 @@ enum ProfitAndLossReportFields { currency, transaction_reference, record_state, + converted_amount, } var memoizedProfitAndLossReport = memo9(( @@ -179,6 +180,9 @@ ReportResult profitAndLossReport( value = AppLocalization.of(navigatorKey.currentContext!)! .lookup(payment.entityState); break; + case ProfitAndLossReportFields.converted_amount: + value = payment.convertedAmount; + break; } if (!ReportResult.matchField( @@ -194,6 +198,9 @@ ReportResult profitAndLossReport( row.add(payment.getReportEntityType()); } else if (value.runtimeType == bool) { row.add(payment.getReportBool(value: value)); + } else if (column == ProfitAndLossReportFields.converted_amount) { + row.add(payment.getReportDouble( + value: value, currencyId: userCompany.company.currencyId)); } else if (value.runtimeType == double || value.runtimeType == int) { row.add(payment.getReportDouble( value: value, currencyId: client.currencyId)); @@ -286,6 +293,9 @@ ReportResult profitAndLossReport( value = AppLocalization.of(navigatorKey.currentContext!)! .lookup(expense.entityState); break; + case ProfitAndLossReportFields.converted_amount: + value = expense.convertedAmount; + break; } if (!ReportResult.matchField( @@ -301,6 +311,9 @@ ReportResult profitAndLossReport( row.add(expense.getReportEntityType()); } else if (value.runtimeType == bool) { row.add(expense.getReportBool(value: value)); + } else if (column == ProfitAndLossReportFields.converted_amount) { + row.add(expense.getReportDouble( + value: value, currencyId: userCompany.company.currencyId)); } else if (value.runtimeType == double || value.runtimeType == int) { row.add(expense.getReportDouble( value: value, currencyId: expense.currencyId));