Skip to content

Commit a19911e

Browse files
Merge pull request #3806 from alphagov/PP-13622-fix-incorrect-amount-in-won-disputes
PP-13622 Fix incorrect negation for won disputes in CSV files
2 parents 556bcd7 + d509e4c commit a19911e

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)