{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Hcompta.Format.Ledger.Quantity where -- import Data.Data import Data.Decimal -- import Data.Eq (Eq(..)) -- import Data.Maybe (Maybe(..)) -- import Data.Ord (Ord(..)) import Data.Typeable () import Data.Word (Word8) -- import Prelude (Num(..)) -- import qualified Hcompta.Polarize as Polarize -- import qualified Hcompta.Quantity as Quantity import qualified Hcompta.Filter.Amount as Filter.Amount -- * Type 'Quantity' type Quantity = Filter.Amount.Quantity {- deriving instance Data Quantity instance Quantity.Zero Quantity where quantity_zero = 0 quantity_null = (==) 0 -- . decimalMantissa instance Quantity.Addable Quantity where quantity_add = (+) instance Quantity.Negable Quantity where quantity_neg = negate instance Polarize.Polarizable Quantity where polarizable_negative q = case q of _ | q < 0 -> Just q _ -> Nothing polarizable_positive q = case q of _ | q <= 0 -> Nothing _ -> Just q -} quantity_round :: Word8 -> Quantity -> Quantity quantity_round = Data.Decimal.roundTo