tax-ato-2023.2: Tax types and computations for Australia
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Tax.ATO.CGT

Description

Types and calculations for capital gains tax (CGT).

This module does not implement the indexation method for cost base reduction. If you have assets acquired before 1999-09-21 11:45:00+1000… file a ticket or send a patch!

The main function you need is assessCGTEvents.

Synopsis

CGT events

data CGTEvent a Source #

A CGT Event (usually an asset disposal)

Instances

Instances details
(Num a, Ord a) => HasCapitalGain CGTEvent a a Source #

Capital gain as a positive amount. $0 if the event not a gain.

Instance details

Defined in Data.Tax.ATO.CGT

Show a => Show (CGTEvent a) Source # 
Instance details

Defined in Data.Tax.ATO.CGT

Methods

showsPrec :: Int -> CGTEvent a -> ShowS #

show :: CGTEvent a -> String #

showList :: [CGTEvent a] -> ShowS #

CGT assessments for tax returns

assessCGTEvents Source #

Arguments

:: (Fractional a, Ord a, Foldable t) 
=> Money a

capital loss carried forward

-> t (CGTEvent a) 
-> CGTAssessment a 

Assess the total capital gains and net capital gain or loss.

data CGTAssessment a Source #

Total undiscounted gains and net gain/loss for tax assessment

Constructors

CGTAssessment (Money a) (CGTNetGainOrLoss a) 

Instances

Instances details
Functor CGTAssessment Source # 
Instance details

Defined in Data.Tax.ATO.CGT

Methods

fmap :: (a -> b) -> CGTAssessment a -> CGTAssessment b #

(<$) :: a -> CGTAssessment b -> CGTAssessment a #

(Num a, Eq a) => HasCapitalLossCarryForward CGTAssessment a Source # 
Instance details

Defined in Data.Tax.ATO.CGT

HasCapitalGain CGTAssessment a a Source # 
Instance details

Defined in Data.Tax.ATO.CGT

Show a => Show (CGTAssessment a) Source # 
Instance details

Defined in Data.Tax.ATO.CGT

data CGTNetGainOrLoss a Source #

A net (loss offset, discounted) gain, or the loss amount

Constructors

CGTNetGain (Money a) 
CGTLoss (Money a) 

Instances

Instances details
Functor CGTNetGainOrLoss Source # 
Instance details

Defined in Data.Tax.ATO.CGT

Methods

fmap :: (a -> b) -> CGTNetGainOrLoss a -> CGTNetGainOrLoss b #

(<$) :: a -> CGTNetGainOrLoss b -> CGTNetGainOrLoss a #

(Num a, Eq a) => HasCapitalLossCarryForward CGTNetGainOrLoss a Source # 
Instance details

Defined in Data.Tax.ATO.CGT

Show a => Show (CGTNetGainOrLoss a) Source # 
Instance details

Defined in Data.Tax.ATO.CGT

class HasCapitalLossCarryForward a b where Source #

Types that have a carry-forward capital loss (either as an input or an output).

cgtNetGain :: Num a => Getter (CGTAssessment a) (Money a) Source #

The net capital gain, or zero if a loss.

CGT computations

class HasCapitalGain a b c where Source #

Types that may have a capital gain. Non-discounted, losses ignored.

Methods

capitalGain :: Getter (a b) (Money c) Source #

Instances

Instances details
HasCapitalGain CGTAssessment a a Source # 
Instance details

Defined in Data.Tax.ATO.CGT

(Num a, Ord a) => HasCapitalGain CGTEvent a a Source #

Capital gain as a positive amount. $0 if the event not a gain.

Instance details

Defined in Data.Tax.ATO.CGT

(Foldable t, HasCapitalGain x a a, Num a) => HasCapitalGain t (x a) a Source #

Sum of capital gains, ignoring losses. Input H at item 18 on tax return.

Instance details

Defined in Data.Tax.ATO.CGT

Methods

capitalGain :: Getter (t (x a)) (Money a) Source #

capitalLoss :: (Num a, Ord a) => CGTEvent a -> Money a Source #

The capital loss as a non-negative amount. $0 if the event is not a loss.

isCapitalGain :: (Num a, Ord a) => CGTEvent a -> Bool Source #

Whether the CGT event is a capital gain. /Not the opposite of isCapitalLoss!/ A CGT event may be neither a loss nor a gain.

isCapitalLoss :: (Num a, Ord a) => CGTEvent a -> Bool Source #

Whether the CGT event is a capital loss. /Not the opposite of isCapitalGain!/ A CGT event may be neither a loss nor a gain.

discountApplicable :: CGTEvent a -> Bool Source #

Whether the 50% CGT discount is applicable to this event (only with regard to duration of holding; acquisition date ignored).

netCapitalGainOrLoss Source #

Arguments

:: (Fractional a, Ord a, Foldable t) 
=> Money a

loss carried forward

-> t (CGTEvent a)

CGT events

-> CGTNetGainOrLoss a 

Compute the discounted gain or carry-forward loss

Losses are used to offset non-discountable capital gains first, then discountable gains, before the discount is applied to discountable gains.

  • Does not implement the indexation method for cost-base reduction!*