packages feed

snelstart-import-1.0.0: src/SnelstartImport/Convert.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE RecordWildCards #-}

-- | Go from various formats to snelstart (ing)
module SnelstartImport.Convert
  ( n26ToING,
    sepaDirectCoreSchemeToING
  )
where

import SnelstartImport.ING
import SnelstartImport.N26
import Data.Text(Text)
import SnelstartImport.SepaDirectCoreScheme (SepaDirectCoreScheme(..))
import Data.Time

sepaDirectCoreSchemeToING :: Text -> SepaDirectCoreScheme -> ING
sepaDirectCoreSchemeToING ownAccoun SepaDirectCoreScheme{..} = ING{
  datum = UTCTime{ utctDay = dtOfSgntr, utctDayTime = 0},
  naamBescrhijving = dbtr,
  rekening = ownAccoun,
  tegenRekening  = dbtrAcct,
  mutatieSoort = Overschijving, -- TODO how can we figure this out?
  bijAf = Af, -- TODO looks like it only deducts from the account, is this right?
  bedragEur = instdAmt ,
  mededeling = ""
  }

n26ToING :: Text -> N26 -> ING
n26ToING ownAccoun N26{..} = ING {
  datum = unDate date,
  naamBescrhijving = payee,
  rekening = ownAccoun,
  tegenRekening  = accountNumber,
  mutatieSoort = toType transactionType , -- eg ook voor code
  bijAf = if amountEur < 0 then Af else Bij,
  bedragEur = abs amountEur ,
  mededeling = paymentReference
  }

toType :: TransactionType -> MutatieSoort
toType = \case
  MastercardPayment -> Diversen
  OutgoingTransfer -> Overschijving
  Income -> Overschijving
  N26Referal -> Diversen
  DirectDebit -> Overschijving