Skip to content

Commit

Permalink
response: set OriginalDFI correctly on corrections/returns
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdecaf committed Nov 27, 2023
1 parent b7d77e9 commit 73bd646
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 9 deletions.
4 changes: 2 additions & 2 deletions pkg/response/entry_transformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (t *CorrectionTransformer) MorphEntry(fh ach.FileHeader, ed *ach.EntryDetai
addenda98 := ach.NewAddenda98()
addenda98.ChangeCode = action.Correction.Code
addenda98.OriginalTrace = ed.TraceNumber
addenda98.OriginalDFI = fh.ImmediateDestination
addenda98.OriginalDFI = achx.ABA8(ed.RDFIIdentificationField())
addenda98.CorrectedData = generateCorrectedData(action.Correction)
addenda98.TraceNumber = out.TraceNumber

Expand Down Expand Up @@ -132,7 +132,7 @@ func (t *ReturnTransformer) MorphEntry(fh ach.FileHeader, ed *ach.EntryDetail, a
addenda99 := ach.NewAddenda99()
addenda99.ReturnCode = action.Return.Code
addenda99.OriginalTrace = ed.TraceNumber
addenda99.OriginalDFI = fh.ImmediateDestination
addenda99.OriginalDFI = achx.ABA8(ed.RDFIIdentificationField())
addenda99.TraceNumber = out.TraceNumber

if err := addenda99.Validate(); err != nil {
Expand Down
17 changes: 14 additions & 3 deletions pkg/response/entry_transformer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ func TestMorphEntry__Correction(t *testing.T) {
file, err := ach.ReadFile(filepath.Join("..", "..", "examples", "utility-bill.ach"))
require.NoError(t, err)

file.Header.ImmediateDestination = "123456780"

xform := &CorrectionTransformer{}
action := service.Action{
Correction: &service.Correction{
Expand All @@ -30,8 +32,12 @@ func TestMorphEntry__Correction(t *testing.T) {
}
require.NotEqual(t, ed.TraceNumber, out.TraceNumber)
require.Equal(t, ed.TraceNumber, out.Addenda98.OriginalTrace)
require.Equal(t, out.Addenda98.ChangeCode, "C01")
require.Equal(t, out.Addenda98.CorrectedData, "45111616")
require.Equal(t, "C01", out.Addenda98.ChangeCode)
require.Equal(t, "45111616", out.Addenda98.CorrectedData)
require.Equal(t, "23138010", out.Addenda98.OriginalDFI)

require.Equal(t, "12345678", out.RDFIIdentification)
require.Equal(t, "0", out.CheckDigit)

if out.Addenda99 != nil {
t.Fatal("unexpected Addenda99")
Expand All @@ -42,6 +48,8 @@ func TestMorphEntry__Return(t *testing.T) {
file, err := ach.ReadFile(filepath.Join("..", "..", "examples", "ppd-debit.ach"))
require.NoError(t, err)

file.Header.ImmediateDestination = "123456780"

xform := &ReturnTransformer{}
action := service.Action{
Return: &service.Return{
Expand All @@ -59,6 +67,9 @@ func TestMorphEntry__Return(t *testing.T) {
t.Fatal("exected Addenda99 record")
}
require.NotEqual(t, ed.TraceNumber, out.TraceNumber)
require.Equal(t, "12345678", out.RDFIIdentification)
require.Equal(t, "0", out.CheckDigit)
require.Equal(t, ed.TraceNumber, out.Addenda99.OriginalTrace)
require.Equal(t, out.Addenda99.ReturnCode, "R01")
require.Equal(t, "R01", out.Addenda99.ReturnCode)
require.Equal(t, "23138010", out.Addenda99.OriginalDFI)
}
22 changes: 18 additions & 4 deletions pkg/response/file_transformer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,16 @@ func TestFileTransformer_ReturnOnly(t *testing.T) {
require.Len(t, fds, 1)
found, err := ach.ReadFile(filepath.Join(retdir, fds[0].Name()))
require.NoError(t, err)
require.NoError(t, found.Create())
require.NoError(t, found.Validate())
require.Equal(t, "221475786", found.Header.ImmediateDestination)
require.Len(t, found.Batches, 1)
require.Len(t, found.Batches[0].GetEntries(), 1)
require.Equal(t, "R03", found.Batches[0].GetEntries()[0].Addenda99.ReturnCode)
entries := found.Batches[0].GetEntries()
require.Len(t, entries, 1)
require.Equal(t, "10200002", entries[0].RDFIIdentification)
require.Equal(t, "1", entries[0].CheckDigit)
require.Equal(t, "R03", entries[0].Addenda99.ReturnCode)
require.Equal(t, "22147578", entries[0].Addenda99.OriginalDFI)

// verify the timestamp on the file is in the past
fInfo, err := fds[0].Info()
Expand Down Expand Up @@ -279,9 +286,16 @@ func TestFileTransformer_CorrectionOnly(t *testing.T) {
require.Len(t, fds, 1)
found, err := ach.ReadFile(filepath.Join(retdir, fds[0].Name()))
require.NoError(t, err)
require.NoError(t, found.Create())
require.NoError(t, found.Validate())
require.Equal(t, "221475786", found.Header.ImmediateDestination)
require.Len(t, found.Batches, 1)
require.Len(t, found.Batches[0].GetEntries(), 1)
require.Equal(t, "C01", found.Batches[0].GetEntries()[0].Addenda98.ChangeCode)
entries := found.Batches[0].GetEntries()
require.Len(t, entries, 1)
require.Equal(t, "10200002", entries[0].RDFIIdentification)
require.Equal(t, "1", entries[0].CheckDigit)
require.Equal(t, "C01", entries[0].Addenda98.ChangeCode)
require.Equal(t, "10200002", entries[0].Addenda98.OriginalDFI)

// verify the timestamp on the file is in the past
fInfo, err := fds[0].Info()
Expand Down

0 comments on commit 73bd646

Please sign in to comment.