Validate CcyAmt: add .00 to integer numbers

fixes https://github.com/stapelberg/qrbill/issues/8
This commit is contained in:
Michael Stapelberg
2023-11-25 10:16:29 +01:00
parent fa23951802
commit 77a4ad47f8

View File

@@ -124,6 +124,20 @@ type QRCHCcyAmt struct {
Ccy string // Currency
}
func (a QRCHCcyAmt) Validate() QRCHCcyAmt {
c := a
if c.Amt != "" {
// Some banking apps are picky regarding integer numbers (e.g. 50) and
// require a separator plus two digits (e.g. 50.00).
if !strings.Contains(c.Amt, ".") {
c.Amt += ".00"
}
}
return c
}
type QRCHRmtInfAddInf struct {
Ustrd string // Unstructured message
Trailer string // Trailer
@@ -194,6 +208,8 @@ func (q *QRCH) Validate() *QRCH {
clone.UltmtDbtr = clone.UltmtDbtr.Validate()
clone.CcyAmt = clone.CcyAmt.Validate()
clone.RmtInf.Tp = nonAlphanumericRe.ReplaceAllString(clone.RmtInf.Tp, "")
if v := clone.RmtInf.Tp; len(v) > 4 {
clone.RmtInf.Tp = v[:4]