module Deontic.Civil.Rescission () where
import Deontic.Core.Types
import Deontic.Core.Verdict
import Deontic.Core.Adjudicate
import Deontic.Core.Layer (Base, Resolvable)
import Deontic.Civil.Types
type instance Resolvable RescissionAct = '[Base]
instance Adjudicate RescissionAct '[Base] where
adjudicate :: RescissionAct -> Facts RescissionAct -> Judgment '[Base]
adjudicate RescissionAct
_ Facts RescissionAct
facts
| Integer -> Day -> Day
addGregorianYearsClip Integer
10 (RescissionFacts -> Day
rfActDate Facts RescissionAct
RescissionFacts
facts) Day -> Day -> Bool
forall a. Ord a => a -> a -> Bool
<= RescissionFacts -> Day
rfCurrentDate Facts RescissionAct
RescissionFacts
facts =
Verdict -> ArticleRef -> Text -> Judgment '[Base]
forall l. Verdict -> ArticleRef -> Text -> Judgment '[l]
JBase Verdict
Void
(Text -> Int -> Maybe Int -> ArticleRef
ArticleRef Text
"민법" Int
146 Maybe Int
forall a. Maybe a
Nothing)
Text
"법률행위가 있은 날로부터 10년이 경과하여 취소권이 소멸하였다."
| Integer -> Day -> Day
addGregorianYearsClip Integer
3 (RescissionFacts -> Day
rfKnowledgeDate Facts RescissionAct
RescissionFacts
facts) Day -> Day -> Bool
forall a. Ord a => a -> a -> Bool
<= RescissionFacts -> Day
rfCurrentDate Facts RescissionAct
RescissionFacts
facts =
Verdict -> ArticleRef -> Text -> Judgment '[Base]
forall l. Verdict -> ArticleRef -> Text -> Judgment '[l]
JBase Verdict
Void
(Text -> Int -> Maybe Int -> ArticleRef
ArticleRef Text
"민법" Int
146 Maybe Int
forall a. Maybe a
Nothing)
Text
"취소원인을 안 날로부터 3년이 경과하여 취소권이 소멸하였다."
| Bool
otherwise =
Verdict -> ArticleRef -> Text -> Judgment '[Base]
forall l. Verdict -> ArticleRef -> Text -> Judgment '[l]
JBase Verdict
Valid
(Text -> Int -> Maybe Int -> ArticleRef
ArticleRef Text
"민법" Int
146 Maybe Int
forall a. Maybe a
Nothing)
Text
"제척기간이 경과하지 아니하여 취소권을 행사할 수 있다."