amazonka-budgets-2.0: gen/Amazonka/Budgets/Types/CostTypes.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.Budgets.Types.CostTypes
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Budgets.Types.CostTypes where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
-- | The types of cost that are included in a @COST@ budget, such as tax and
-- subscriptions.
--
-- @USAGE@, @RI_UTILIZATION@, @RI_COVERAGE@, @SAVINGS_PLANS_UTILIZATION@,
-- and @SAVINGS_PLANS_COVERAGE@ budgets don\'t have @CostTypes@.
--
-- /See:/ 'newCostTypes' smart constructor.
data CostTypes = CostTypes'
{ -- | Specifies whether a budget includes credits.
--
-- The default value is @true@.
includeCredit :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes discounts.
--
-- The default value is @true@.
includeDiscount :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes non-RI subscription costs.
--
-- The default value is @true@.
includeOtherSubscription :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes recurring fees such as monthly RI
-- fees.
--
-- The default value is @true@.
includeRecurring :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes refunds.
--
-- The default value is @true@.
includeRefund :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes subscriptions.
--
-- The default value is @true@.
includeSubscription :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes support subscription fees.
--
-- The default value is @true@.
includeSupport :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes taxes.
--
-- The default value is @true@.
includeTax :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget includes upfront RI costs.
--
-- The default value is @true@.
includeUpfront :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget uses the amortized rate.
--
-- The default value is @false@.
useAmortized :: Prelude.Maybe Prelude.Bool,
-- | Specifies whether a budget uses a blended rate.
--
-- The default value is @false@.
useBlended :: Prelude.Maybe Prelude.Bool
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CostTypes' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'includeCredit', 'costTypes_includeCredit' - Specifies whether a budget includes credits.
--
-- The default value is @true@.
--
-- 'includeDiscount', 'costTypes_includeDiscount' - Specifies whether a budget includes discounts.
--
-- The default value is @true@.
--
-- 'includeOtherSubscription', 'costTypes_includeOtherSubscription' - Specifies whether a budget includes non-RI subscription costs.
--
-- The default value is @true@.
--
-- 'includeRecurring', 'costTypes_includeRecurring' - Specifies whether a budget includes recurring fees such as monthly RI
-- fees.
--
-- The default value is @true@.
--
-- 'includeRefund', 'costTypes_includeRefund' - Specifies whether a budget includes refunds.
--
-- The default value is @true@.
--
-- 'includeSubscription', 'costTypes_includeSubscription' - Specifies whether a budget includes subscriptions.
--
-- The default value is @true@.
--
-- 'includeSupport', 'costTypes_includeSupport' - Specifies whether a budget includes support subscription fees.
--
-- The default value is @true@.
--
-- 'includeTax', 'costTypes_includeTax' - Specifies whether a budget includes taxes.
--
-- The default value is @true@.
--
-- 'includeUpfront', 'costTypes_includeUpfront' - Specifies whether a budget includes upfront RI costs.
--
-- The default value is @true@.
--
-- 'useAmortized', 'costTypes_useAmortized' - Specifies whether a budget uses the amortized rate.
--
-- The default value is @false@.
--
-- 'useBlended', 'costTypes_useBlended' - Specifies whether a budget uses a blended rate.
--
-- The default value is @false@.
newCostTypes ::
CostTypes
newCostTypes =
CostTypes'
{ includeCredit = Prelude.Nothing,
includeDiscount = Prelude.Nothing,
includeOtherSubscription = Prelude.Nothing,
includeRecurring = Prelude.Nothing,
includeRefund = Prelude.Nothing,
includeSubscription = Prelude.Nothing,
includeSupport = Prelude.Nothing,
includeTax = Prelude.Nothing,
includeUpfront = Prelude.Nothing,
useAmortized = Prelude.Nothing,
useBlended = Prelude.Nothing
}
-- | Specifies whether a budget includes credits.
--
-- The default value is @true@.
costTypes_includeCredit :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeCredit = Lens.lens (\CostTypes' {includeCredit} -> includeCredit) (\s@CostTypes' {} a -> s {includeCredit = a} :: CostTypes)
-- | Specifies whether a budget includes discounts.
--
-- The default value is @true@.
costTypes_includeDiscount :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeDiscount = Lens.lens (\CostTypes' {includeDiscount} -> includeDiscount) (\s@CostTypes' {} a -> s {includeDiscount = a} :: CostTypes)
-- | Specifies whether a budget includes non-RI subscription costs.
--
-- The default value is @true@.
costTypes_includeOtherSubscription :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeOtherSubscription = Lens.lens (\CostTypes' {includeOtherSubscription} -> includeOtherSubscription) (\s@CostTypes' {} a -> s {includeOtherSubscription = a} :: CostTypes)
-- | Specifies whether a budget includes recurring fees such as monthly RI
-- fees.
--
-- The default value is @true@.
costTypes_includeRecurring :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeRecurring = Lens.lens (\CostTypes' {includeRecurring} -> includeRecurring) (\s@CostTypes' {} a -> s {includeRecurring = a} :: CostTypes)
-- | Specifies whether a budget includes refunds.
--
-- The default value is @true@.
costTypes_includeRefund :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeRefund = Lens.lens (\CostTypes' {includeRefund} -> includeRefund) (\s@CostTypes' {} a -> s {includeRefund = a} :: CostTypes)
-- | Specifies whether a budget includes subscriptions.
--
-- The default value is @true@.
costTypes_includeSubscription :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeSubscription = Lens.lens (\CostTypes' {includeSubscription} -> includeSubscription) (\s@CostTypes' {} a -> s {includeSubscription = a} :: CostTypes)
-- | Specifies whether a budget includes support subscription fees.
--
-- The default value is @true@.
costTypes_includeSupport :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeSupport = Lens.lens (\CostTypes' {includeSupport} -> includeSupport) (\s@CostTypes' {} a -> s {includeSupport = a} :: CostTypes)
-- | Specifies whether a budget includes taxes.
--
-- The default value is @true@.
costTypes_includeTax :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeTax = Lens.lens (\CostTypes' {includeTax} -> includeTax) (\s@CostTypes' {} a -> s {includeTax = a} :: CostTypes)
-- | Specifies whether a budget includes upfront RI costs.
--
-- The default value is @true@.
costTypes_includeUpfront :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_includeUpfront = Lens.lens (\CostTypes' {includeUpfront} -> includeUpfront) (\s@CostTypes' {} a -> s {includeUpfront = a} :: CostTypes)
-- | Specifies whether a budget uses the amortized rate.
--
-- The default value is @false@.
costTypes_useAmortized :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_useAmortized = Lens.lens (\CostTypes' {useAmortized} -> useAmortized) (\s@CostTypes' {} a -> s {useAmortized = a} :: CostTypes)
-- | Specifies whether a budget uses a blended rate.
--
-- The default value is @false@.
costTypes_useBlended :: Lens.Lens' CostTypes (Prelude.Maybe Prelude.Bool)
costTypes_useBlended = Lens.lens (\CostTypes' {useBlended} -> useBlended) (\s@CostTypes' {} a -> s {useBlended = a} :: CostTypes)
instance Data.FromJSON CostTypes where
parseJSON =
Data.withObject
"CostTypes"
( \x ->
CostTypes'
Prelude.<$> (x Data..:? "IncludeCredit")
Prelude.<*> (x Data..:? "IncludeDiscount")
Prelude.<*> (x Data..:? "IncludeOtherSubscription")
Prelude.<*> (x Data..:? "IncludeRecurring")
Prelude.<*> (x Data..:? "IncludeRefund")
Prelude.<*> (x Data..:? "IncludeSubscription")
Prelude.<*> (x Data..:? "IncludeSupport")
Prelude.<*> (x Data..:? "IncludeTax")
Prelude.<*> (x Data..:? "IncludeUpfront")
Prelude.<*> (x Data..:? "UseAmortized")
Prelude.<*> (x Data..:? "UseBlended")
)
instance Prelude.Hashable CostTypes where
hashWithSalt _salt CostTypes' {..} =
_salt
`Prelude.hashWithSalt` includeCredit
`Prelude.hashWithSalt` includeDiscount
`Prelude.hashWithSalt` includeOtherSubscription
`Prelude.hashWithSalt` includeRecurring
`Prelude.hashWithSalt` includeRefund
`Prelude.hashWithSalt` includeSubscription
`Prelude.hashWithSalt` includeSupport
`Prelude.hashWithSalt` includeTax
`Prelude.hashWithSalt` includeUpfront
`Prelude.hashWithSalt` useAmortized
`Prelude.hashWithSalt` useBlended
instance Prelude.NFData CostTypes where
rnf CostTypes' {..} =
Prelude.rnf includeCredit
`Prelude.seq` Prelude.rnf includeDiscount
`Prelude.seq` Prelude.rnf includeOtherSubscription
`Prelude.seq` Prelude.rnf includeRecurring
`Prelude.seq` Prelude.rnf includeRefund
`Prelude.seq` Prelude.rnf includeSubscription
`Prelude.seq` Prelude.rnf includeSupport
`Prelude.seq` Prelude.rnf includeTax
`Prelude.seq` Prelude.rnf includeUpfront
`Prelude.seq` Prelude.rnf useAmortized
`Prelude.seq` Prelude.rnf useBlended
instance Data.ToJSON CostTypes where
toJSON CostTypes' {..} =
Data.object
( Prelude.catMaybes
[ ("IncludeCredit" Data..=) Prelude.<$> includeCredit,
("IncludeDiscount" Data..=)
Prelude.<$> includeDiscount,
("IncludeOtherSubscription" Data..=)
Prelude.<$> includeOtherSubscription,
("IncludeRecurring" Data..=)
Prelude.<$> includeRecurring,
("IncludeRefund" Data..=) Prelude.<$> includeRefund,
("IncludeSubscription" Data..=)
Prelude.<$> includeSubscription,
("IncludeSupport" Data..=)
Prelude.<$> includeSupport,
("IncludeTax" Data..=) Prelude.<$> includeTax,
("IncludeUpfront" Data..=)
Prelude.<$> includeUpfront,
("UseAmortized" Data..=) Prelude.<$> useAmortized,
("UseBlended" Data..=) Prelude.<$> useBlended
]
)