Skip to content

Commit d509e4c

Browse files
PP-13622 Fix incorrect negation for won disputes in CSV files
With this change, we are fixing a bug for which disputed amounts are shown as negative numbers in the CSV files. The logic will now consider also the state of the dispute and present the value as positive when the dispute has been won by the service. Further information in Jira. https://payments-platform.atlassian.net/browse/PP-13622
1 parent 556bcd7 commit d509e4c

2 files changed

Lines changed: 36 additions & 2 deletions

File tree

src/main/java/uk/gov/pay/ledger/transaction/model/CsvTransactionFactory.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import static org.apache.commons.text.WordUtils.capitalizeFully;
3232
import static uk.gov.pay.ledger.transaction.model.TransactionType.DISPUTE;
3333
import static uk.gov.pay.ledger.transaction.model.TransactionType.REFUND;
34+
import static uk.gov.pay.ledger.transaction.state.TransactionState.WON;
3435
import static uk.gov.pay.ledger.util.JsonParser.safeGetAsBoolean;
3536
import static uk.gov.pay.ledger.util.JsonParser.safeGetAsLong;
3637
import static uk.gov.pay.ledger.util.JsonParser.safeGetAsString;
@@ -154,7 +155,11 @@ public Map<String, Object> toMap(TransactionEntity transactionEntity) {
154155
getPaymentTransactionAttributes(transactionEntity, transactionDetails.get("payment_details"))
155156
);
156157
result.put(FIELD_GOVUK_PAYMENT_ID, transactionEntity.getParentExternalId());
157-
result.put(FIELD_AMOUNT, penceToCurrency(transactionEntity.getAmount() * -1));
158+
if (transactionEntity.getState() == WON) {
159+
result.put(FIELD_AMOUNT, penceToCurrency(transactionEntity.getAmount()));
160+
} else {
161+
result.put(FIELD_AMOUNT, penceToCurrency(transactionEntity.getAmount() * -1));
162+
}
158163
}
159164

160165
result.put(FIELD_PROVIDER_ID, sanitiseAgainstSpreadsheetFormulaInjection(transactionEntity.getGatewayTransactionId()));

src/test/java/uk/gov/pay/ledger/transaction/model/CsvTransactionFactoryTest.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,35 @@ void toMapShouldReturnMapWithCorrectCsvDataForDisputeTransaction() {
145145
assertThat(csvDataMap.get("Card Expiry Date"), is("10/21"));
146146
}
147147

148+
@Test
149+
void toMapShouldNotNegateAmountForWonDisputeTransaction() {
150+
TransactionEntity transactionEntity = transactionFixture
151+
.withTransactionType(TransactionType.DISPUTE.name())
152+
.withState(TransactionState.WON)
153+
.withAmount(2000L)
154+
.withFee(0L)
155+
.withNetAmount(2000L)
156+
.withParentExternalId("parent-external-id")
157+
.withReference("ref-1")
158+
.withDescription("test description")
159+
.withDefaultPaymentDetails()
160+
.withDefaultTransactionDetails()
161+
.toEntity();
162+
163+
Map<String, Object> csvDataMap = csvTransactionFactory.toMap(transactionEntity);
164+
165+
assertPaymentDetails(csvDataMap, transactionEntity);
166+
assertThat(csvDataMap.get("Amount"), is("20.00"));
167+
assertThat(csvDataMap.get("Net"), is("20.00"));
168+
assertThat(csvDataMap.get("Fee"), is("0.00"));
169+
assertThat(csvDataMap.get("Provider ID"), is(transactionFixture.getGatewayTransactionId()));
170+
assertThat(csvDataMap.get("GOV.UK Payment ID"), is(transactionFixture.getParentExternalId()));
171+
assertThat(csvDataMap.get("State"), is("Dispute won in your favour"));
172+
assertThat(csvDataMap.get("Finished"), is(true));
173+
assertThat(csvDataMap.get("Date Created"), is("12 Mar 2018"));
174+
assertThat(csvDataMap.get("Time Created"), is("16:25:01"));
175+
}
176+
148177
@Test
149178
void toMapShouldUseAmountForTotalAmountForSuccessfulPayment() {
150179
TransactionEntity transactionEntity = transactionFixture
@@ -454,4 +483,4 @@ private void assertPaymentDetails(Map<String, Object> csvDataMap, TransactionEnt
454483
assertThat(csvDataMap.get("Card Type"), is("credit"));
455484
assertThat(csvDataMap.get("Wallet Type"), is("Apple Pay"));
456485
}
457-
}
486+
}

0 commit comments

Comments
 (0)