/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace BillingConductor { namespace Model { /** *

A representation of the new charge details of a custom line item. This * should contain only one of Flat or Percentage. *

See Also:

AWS * API Reference

*/ class UpdateCustomLineItemChargeDetails { public: AWS_BILLINGCONDUCTOR_API UpdateCustomLineItemChargeDetails(); AWS_BILLINGCONDUCTOR_API UpdateCustomLineItemChargeDetails(Aws::Utils::Json::JsonView jsonValue); AWS_BILLINGCONDUCTOR_API UpdateCustomLineItemChargeDetails& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_BILLINGCONDUCTOR_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline const UpdateCustomLineItemFlatChargeDetails& GetFlat() const{ return m_flat; } /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline bool FlatHasBeenSet() const { return m_flatHasBeenSet; } /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline void SetFlat(const UpdateCustomLineItemFlatChargeDetails& value) { m_flatHasBeenSet = true; m_flat = value; } /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline void SetFlat(UpdateCustomLineItemFlatChargeDetails&& value) { m_flatHasBeenSet = true; m_flat = std::move(value); } /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline UpdateCustomLineItemChargeDetails& WithFlat(const UpdateCustomLineItemFlatChargeDetails& value) { SetFlat(value); return *this;} /** *

An UpdateCustomLineItemFlatChargeDetails that describes the new * charge details of a flat custom line item.

*/ inline UpdateCustomLineItemChargeDetails& WithFlat(UpdateCustomLineItemFlatChargeDetails&& value) { SetFlat(std::move(value)); return *this;} /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline const UpdateCustomLineItemPercentageChargeDetails& GetPercentage() const{ return m_percentage; } /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline bool PercentageHasBeenSet() const { return m_percentageHasBeenSet; } /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline void SetPercentage(const UpdateCustomLineItemPercentageChargeDetails& value) { m_percentageHasBeenSet = true; m_percentage = value; } /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline void SetPercentage(UpdateCustomLineItemPercentageChargeDetails&& value) { m_percentageHasBeenSet = true; m_percentage = std::move(value); } /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline UpdateCustomLineItemChargeDetails& WithPercentage(const UpdateCustomLineItemPercentageChargeDetails& value) { SetPercentage(value); return *this;} /** *

An UpdateCustomLineItemPercentageChargeDetails that describes * the new charge details of a percentage custom line item.

*/ inline UpdateCustomLineItemChargeDetails& WithPercentage(UpdateCustomLineItemPercentageChargeDetails&& value) { SetPercentage(std::move(value)); return *this;} private: UpdateCustomLineItemFlatChargeDetails m_flat; bool m_flatHasBeenSet = false; UpdateCustomLineItemPercentageChargeDetails m_percentage; bool m_percentageHasBeenSet = false; }; } // namespace Model } // namespace BillingConductor } // namespace Aws