fix: web: Handle non-regular postings in the add transaction form. (#1058)
This commit is contained in:
parent
04c35e1519
commit
4cb631c0f2
@ -152,7 +152,10 @@ validatePostings acctRes amtRes = let
|
|||||||
zipRow (Left e) (Left e') = Left (Just e, Just e')
|
zipRow (Left e) (Left e') = Left (Just e, Just e')
|
||||||
zipRow (Left e) (Right _) = Left (Just e, Nothing)
|
zipRow (Left e) (Right _) = Left (Just e, Nothing)
|
||||||
zipRow (Right _) (Left e) = Left (Nothing, Just e)
|
zipRow (Right _) (Left e) = Left (Nothing, Just e)
|
||||||
zipRow (Right acct) (Right amt) = Right (nullposting {paccount = acct, pamount = mixedAmount amt})
|
zipRow (Right acct') (Right amt) = Right (nullposting {paccount = acct, ptype = atype, pamount = mixedAmount amt})
|
||||||
|
where
|
||||||
|
acct = accountNameWithoutPostingType acct'
|
||||||
|
atype = accountNamePostingType acct'
|
||||||
|
|
||||||
errorToFormMsg = first (("Invalid value: " <>) . T.pack .
|
errorToFormMsg = first (("Invalid value: " <>) . T.pack .
|
||||||
foldl (\s a -> s <> parseErrorTextPretty a) "" .
|
foldl (\s a -> s <> parseErrorTextPretty a) "" .
|
||||||
@ -160,7 +163,7 @@ validatePostings acctRes amtRes = let
|
|||||||
checkAccount = errorToFormMsg . runParser (accountnamep <* eof) "" . T.strip
|
checkAccount = errorToFormMsg . runParser (accountnamep <* eof) "" . T.strip
|
||||||
checkAmount = errorToFormMsg . runParser (evalStateT (amountp <* eof) nulljournal) "" . T.strip
|
checkAmount = errorToFormMsg . runParser (evalStateT (amountp <* eof) nulljournal) "" . T.strip
|
||||||
|
|
||||||
-- Add errors to forms with zero or one rows if the form is not a FormMissing
|
-- Add errors to forms with zero rows if the form is not a FormMissing
|
||||||
result :: [(Text, Text, Either (Maybe Text, Maybe Text) Posting)]
|
result :: [(Text, Text, Either (Maybe Text, Maybe Text) Posting)]
|
||||||
result = case (acctRes, amtRes) of
|
result = case (acctRes, amtRes) of
|
||||||
(FormMissing, FormMissing) -> postings
|
(FormMissing, FormMissing) -> postings
|
||||||
@ -168,7 +171,6 @@ validatePostings acctRes amtRes = let
|
|||||||
[] -> [ ("", "", Left (Just "Missing account", Just "Missing amount"))
|
[] -> [ ("", "", Left (Just "Missing account", Just "Missing amount"))
|
||||||
, ("", "", Left (Just "Missing account", Nothing))
|
, ("", "", Left (Just "Missing account", Nothing))
|
||||||
]
|
]
|
||||||
[x] -> [x, ("", "", Left (Just "Missing account", Nothing))]
|
|
||||||
xs -> xs
|
xs -> xs
|
||||||
|
|
||||||
-- Prepare rows for rendering - resolve Eithers into error messages and pad to
|
-- Prepare rows for rendering - resolve Eithers into error messages and pad to
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user