Skip to content

Commit

Permalink
fix: field 21 is supposed to be right padded with 0's not left padded (
Browse files Browse the repository at this point in the history
…#29)

Co-authored-by: Manav <[email protected]>
  • Loading branch information
kimurav and Manav authored May 16, 2024
1 parent 1994918 commit 0319260
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 12 deletions.
2 changes: 1 addition & 1 deletion credit_return.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (c CreditReturn) Build() (string, error) {
sb.WriteString(abreviateStringToLength(c.SundryInfo, 15))
sb.WriteString(padNumericStringWithZeros(c.OriginalItemTraceNo, 22))
sb.WriteString(abreviateStringToLength(c.SettlementCode, 2))
sb.WriteString(padNumericStringWithZeros(c.InvalidDataElementID, 11))
sb.WriteString(padNumericStringWithTrailingZeros(c.InvalidDataElementID, 11))
return sb.String(), nil
}

Expand Down
4 changes: 2 additions & 2 deletions credit_return_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ func TestBuildCreditReturn(t *testing.T) {
date := time.Date(2023, 8, 29, 0, 0, 0, 0, time.UTC)
cases := map[string]testCase{
"happy path": {
in: NewCreditReturn("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010100000000000",
in: NewCreditReturn("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01"), WithInvalidDataElementID("19")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010119000000000",
},
"default fields": {
in: CreditReturn{},
Expand Down
2 changes: 1 addition & 1 deletion credit_reverse.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (c CreditReverse) Build() (string, error) {
sb.WriteString(abreviateStringToLength(c.SundryInfo, 15))
sb.WriteString(padNumericStringWithZeros(c.OriginalItemTraceNo, 22))
sb.WriteString(abreviateStringToLength(c.SettlementCode, 2))
sb.WriteString(padNumericStringWithZeros(c.InvalidDataElementID, 11))
sb.WriteString(padNumericStringWithTrailingZeros(c.InvalidDataElementID, 11))
return sb.String(), nil
}

Expand Down
4 changes: 2 additions & 2 deletions credit_reverse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ func TestBuildCreditReverse(t *testing.T) {
date := time.Date(2023, 8, 29, 0, 0, 0, 0, time.UTC)
cases := map[string]testCase{
"happy path": {
in: NewCreditReverse("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010100000000000",
in: NewCreditReverse("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01"), WithInvalidDataElementID("19")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010119000000000",
},
"default fields": {
in: CreditReverse{},
Expand Down
2 changes: 1 addition & 1 deletion debit_return.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func (d DebitReturn) Build() (string, error) {
sb.WriteString(abreviateStringToLength(d.SundryInfo, 15))
sb.WriteString(padNumericStringWithZeros(d.OriginalItemTraceNo, 22))
sb.WriteString(abreviateStringToLength(d.SettlementCode, 2))
sb.WriteString(padNumericStringWithZeros(d.InvalidDataElementID, 11))
sb.WriteString(padNumericStringWithTrailingZeros(d.InvalidDataElementID, 11))
return sb.String(), nil
}

Expand Down
4 changes: 2 additions & 2 deletions debit_return_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ func TestBuildDebitReturn(t *testing.T) {
date := time.Date(2023, 8, 29, 0, 0, 0, 0, time.UTC)
cases := map[string]testCase{
"happy path": {
in: NewDebitReturn("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010100000000000",
in: NewDebitReturn("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01"), WithInvalidDataElementID("19")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010119000000000",
},
"empty debit": {
in: DebitReturn{},
Expand Down
2 changes: 1 addition & 1 deletion debit_reverse.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func (d DebitReverse) Build() (string, error) {
sb.WriteString(abreviateStringToLength(d.SundryInfo, 15))
sb.WriteString(padNumericStringWithZeros(d.OriginalItemTraceNo, 22))
sb.WriteString(abreviateStringToLength(d.SettlementCode, 2))
sb.WriteString(padNumericStringWithZeros(d.InvalidDataElementID, 11))
sb.WriteString(padNumericStringWithTrailingZeros(d.InvalidDataElementID, 11))
return sb.String(), nil
}

Expand Down
4 changes: 2 additions & 2 deletions debit_reverse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ func TestBuildDebitReverse(t *testing.T) {
date := time.Date(2023, 8, 29, 0, 0, 0, 0, time.UTC)
cases := map[string]testCase{
"happy path": {
in: NewDebitReverse("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010100000000000",
in: NewDebitReverse("400", 999, &date, "123456789", "123456789012", "0000000000000000000000", "SHORT-NAME", "RECEIVER NAME", "LONG-NAME", "123456789", "210987654321", "040201", WithUserID("54321"), WithCrossRefNo("123"), WithSettlementCode("01"), WithInvalidDataElementID("19")),
expectedOutput: "40000000009990232411234567891234567890120000000000000000000000000SHORT-NAME RECEIVER NAME LONG-NAME 54321 123 123456789210987654321 00000000000000000402010119000000000",
},
"default fields": {
in: DebitReverse{},
Expand Down
7 changes: 7 additions & 0 deletions utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,13 @@ func padNumericStringWithZeros(s string, reqLength int) string {
return fmt.Sprintf("%0*s", reqLength, s)
}

func padNumericStringWithTrailingZeros(s string, reqLength int) string {
if len(s) >= reqLength {
return s
}
return fmt.Sprintf("%s%0*s", s, reqLength-len(s), "0")
}

func isTxnRecord(t string) bool {
switch t {
case "D", "C", "E", "F", "I", "J":
Expand Down

0 comments on commit 0319260

Please sign in to comment.