"""visaacceptancemergedspec.

This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
"""

# ruff: noqa: E501
from visaacceptancemergedspec.api_helper import (
    APIHelper,
)
from visaacceptancemergedspec.models.room import (
    Room,
)


class Lodging(object):
    """Implementation of the 'Lodging' model.

    Attributes:
        check_in_date (str): Date on which the guest checked in. In the case of a
            no-show or a reservation, the scheduled arrival date. Format: `MMDDYY`.
            For best interchange rates, make sure it is a valid date.
        check_out_date (str): Date on which the guest checked out. Format: `MMDDYY`.
            For best interchange rates, make sure it is a valid date.
        room (List[Room]): The object containing the number of nights and the daily
            rate that applies for that no of nights.
        smoking_preference (str): Smoking preference of the guest. Possible values: -
            `Y`: smoking room - `N`: non-smoking room
        number_of_rooms (int): Number of rooms booked by the cardholder.
        number_of_guests (int): Number of guests staying in the room.
        room_bed_type (str): Type of room, such as queen, king, or two doubles.
        room_tax_type (str): Type of tax, such as tourist or hotel.
        room_rate_type (str): Type of rate, such as corporate or senior citizen.
        guest_name (str): Name of the guest under which the room is reserved.
        customer_service_phone_number (str): Your toll-free customer service phone
            number.
        corporate_client_code (str): Code assigned to a business. You can use this
            code to identify corporate rates and discounts for guests.
        additional_discount_amount (str): Amount of an additional coupon or discount.
        room_location (str): Location of room, such as lake view or ocean view.
        special_program_code (str): Code that identifies special circumstances.
            Possible values: - `1`: lodging (default) - `2`: no show reservation -
            `3`: advanced deposit
        total_tax_amount (str): Total tax amount.
        prepaid_cost (str): Prepaid amount, such as a deposit.
        food_and_beverage_cost (str): Cost for all food and beverages.
        room_tax_amount (str): Total tax for the room.
        adjustment_amount (str): Adjusted amount charged in addition to the
            reservation amount after the stay is complete.
        phone_cost (str): Cost of telephone services.
        restaurant_cost (str): Cost of restaurant purchases
        room_service_cost (str): Cost of room service.
        mini_bar_cost (str): Cost of mini-bar purchases.
        laundry_cost (str): Cost of laundry services.
        miscellaneous_cost (str): Miscellaneous costs.
        gift_shop_cost (str): Cost of gift shop purchases.
        movie_cost (str): Cost of movies.
        health_club_cost (str): Cost of health club services.
        valet_parking_cost (str): Cost of valet parking services.
        cash_disbursement_cost (str): Cost of the cash that was disbursed plus any
            associated service fees
        non_room_cost (str): Cost of non-room purchases, such as meals and gifts.
        business_center_cost (str): Cost of business center services.
        lounge_bar_cost (str): Cost of lounge and bar purchases.
        transportation_cost (str): Cost of transportation services.
        gratuity_amount (str): Gratuity.
        conference_room_cost (str): Cost of conference room services.
        audio_visual_cost (str): Cost of audio visual services.
        banquest_cost (str): Cost of banquet services.
        non_room_tax_amount (str): Tax on non-room purchases.
        early_check_out_cost (str): Service fee for early departure.
        internet_access_cost (str): Cost of Internet access.
        name (str): Name of the hotel for which the reservation is for. Mandatory in
            case the merchant’s business type is Hotel.
        hotel_name (str): The name of the hotel for which the reservation was made.
        check_in_date_time (str): The date of the check-in in GMT+8 offset.
        check_out_date_time (str): The date of the check-out in GMT+8 offset.
        additional_properties (Dict[str, Any]): The additional properties for the
            model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "check_in_date": "checkInDate",
        "check_out_date": "checkOutDate",
        "room": "room",
        "smoking_preference": "smokingPreference",
        "number_of_rooms": "numberOfRooms",
        "number_of_guests": "numberOfGuests",
        "room_bed_type": "roomBedType",
        "room_tax_type": "roomTaxType",
        "room_rate_type": "roomRateType",
        "guest_name": "guestName",
        "customer_service_phone_number": "customerServicePhoneNumber",
        "corporate_client_code": "corporateClientCode",
        "additional_discount_amount": "additionalDiscountAmount",
        "room_location": "roomLocation",
        "special_program_code": "specialProgramCode",
        "total_tax_amount": "totalTaxAmount",
        "prepaid_cost": "prepaidCost",
        "food_and_beverage_cost": "foodAndBeverageCost",
        "room_tax_amount": "roomTaxAmount",
        "adjustment_amount": "adjustmentAmount",
        "phone_cost": "phoneCost",
        "restaurant_cost": "restaurantCost",
        "room_service_cost": "roomServiceCost",
        "mini_bar_cost": "miniBarCost",
        "laundry_cost": "laundryCost",
        "miscellaneous_cost": "miscellaneousCost",
        "gift_shop_cost": "giftShopCost",
        "movie_cost": "movieCost",
        "health_club_cost": "healthClubCost",
        "valet_parking_cost": "valetParkingCost",
        "cash_disbursement_cost": "cashDisbursementCost",
        "non_room_cost": "nonRoomCost",
        "business_center_cost": "businessCenterCost",
        "lounge_bar_cost": "loungeBarCost",
        "transportation_cost": "transportationCost",
        "gratuity_amount": "gratuityAmount",
        "conference_room_cost": "conferenceRoomCost",
        "audio_visual_cost": "audioVisualCost",
        "banquest_cost": "banquestCost",
        "non_room_tax_amount": "nonRoomTaxAmount",
        "early_check_out_cost": "earlyCheckOutCost",
        "internet_access_cost": "internetAccessCost",
        "name": "name",
        "hotel_name": "hotelName",
        "check_in_date_time": "checkInDateTime",
        "check_out_date_time": "checkOutDateTime",
    }

    _optionals = [
        "check_in_date",
        "check_out_date",
        "room",
        "smoking_preference",
        "number_of_rooms",
        "number_of_guests",
        "room_bed_type",
        "room_tax_type",
        "room_rate_type",
        "guest_name",
        "customer_service_phone_number",
        "corporate_client_code",
        "additional_discount_amount",
        "room_location",
        "special_program_code",
        "total_tax_amount",
        "prepaid_cost",
        "food_and_beverage_cost",
        "room_tax_amount",
        "adjustment_amount",
        "phone_cost",
        "restaurant_cost",
        "room_service_cost",
        "mini_bar_cost",
        "laundry_cost",
        "miscellaneous_cost",
        "gift_shop_cost",
        "movie_cost",
        "health_club_cost",
        "valet_parking_cost",
        "cash_disbursement_cost",
        "non_room_cost",
        "business_center_cost",
        "lounge_bar_cost",
        "transportation_cost",
        "gratuity_amount",
        "conference_room_cost",
        "audio_visual_cost",
        "banquest_cost",
        "non_room_tax_amount",
        "early_check_out_cost",
        "internet_access_cost",
        "name",
        "hotel_name",
        "check_in_date_time",
        "check_out_date_time",
    ]

    def __init__(
        self,
        check_in_date=APIHelper.SKIP,
        check_out_date=APIHelper.SKIP,
        room=APIHelper.SKIP,
        smoking_preference=APIHelper.SKIP,
        number_of_rooms=APIHelper.SKIP,
        number_of_guests=APIHelper.SKIP,
        room_bed_type=APIHelper.SKIP,
        room_tax_type=APIHelper.SKIP,
        room_rate_type=APIHelper.SKIP,
        guest_name=APIHelper.SKIP,
        customer_service_phone_number=APIHelper.SKIP,
        corporate_client_code=APIHelper.SKIP,
        additional_discount_amount=APIHelper.SKIP,
        room_location=APIHelper.SKIP,
        special_program_code=APIHelper.SKIP,
        total_tax_amount=APIHelper.SKIP,
        prepaid_cost=APIHelper.SKIP,
        food_and_beverage_cost=APIHelper.SKIP,
        room_tax_amount=APIHelper.SKIP,
        adjustment_amount=APIHelper.SKIP,
        phone_cost=APIHelper.SKIP,
        restaurant_cost=APIHelper.SKIP,
        room_service_cost=APIHelper.SKIP,
        mini_bar_cost=APIHelper.SKIP,
        laundry_cost=APIHelper.SKIP,
        miscellaneous_cost=APIHelper.SKIP,
        gift_shop_cost=APIHelper.SKIP,
        movie_cost=APIHelper.SKIP,
        health_club_cost=APIHelper.SKIP,
        valet_parking_cost=APIHelper.SKIP,
        cash_disbursement_cost=APIHelper.SKIP,
        non_room_cost=APIHelper.SKIP,
        business_center_cost=APIHelper.SKIP,
        lounge_bar_cost=APIHelper.SKIP,
        transportation_cost=APIHelper.SKIP,
        gratuity_amount=APIHelper.SKIP,
        conference_room_cost=APIHelper.SKIP,
        audio_visual_cost=APIHelper.SKIP,
        banquest_cost=APIHelper.SKIP,
        non_room_tax_amount=APIHelper.SKIP,
        early_check_out_cost=APIHelper.SKIP,
        internet_access_cost=APIHelper.SKIP,
        name=APIHelper.SKIP,
        hotel_name=APIHelper.SKIP,
        check_in_date_time=APIHelper.SKIP,
        check_out_date_time=APIHelper.SKIP,
        additional_properties=None):
        """Initialize a Lodging instance."""
        # Initialize members of the class
        if check_in_date is not APIHelper.SKIP:
            self.check_in_date = check_in_date
        if check_out_date is not APIHelper.SKIP:
            self.check_out_date = check_out_date
        if room is not APIHelper.SKIP:
            self.room = room
        if smoking_preference is not APIHelper.SKIP:
            self.smoking_preference = smoking_preference
        if number_of_rooms is not APIHelper.SKIP:
            self.number_of_rooms = number_of_rooms
        if number_of_guests is not APIHelper.SKIP:
            self.number_of_guests = number_of_guests
        if room_bed_type is not APIHelper.SKIP:
            self.room_bed_type = room_bed_type
        if room_tax_type is not APIHelper.SKIP:
            self.room_tax_type = room_tax_type
        if room_rate_type is not APIHelper.SKIP:
            self.room_rate_type = room_rate_type
        if guest_name is not APIHelper.SKIP:
            self.guest_name = guest_name
        if customer_service_phone_number is not APIHelper.SKIP:
            self.customer_service_phone_number = customer_service_phone_number
        if corporate_client_code is not APIHelper.SKIP:
            self.corporate_client_code = corporate_client_code
        if additional_discount_amount is not APIHelper.SKIP:
            self.additional_discount_amount = additional_discount_amount
        if room_location is not APIHelper.SKIP:
            self.room_location = room_location
        if special_program_code is not APIHelper.SKIP:
            self.special_program_code = special_program_code
        if total_tax_amount is not APIHelper.SKIP:
            self.total_tax_amount = total_tax_amount
        if prepaid_cost is not APIHelper.SKIP:
            self.prepaid_cost = prepaid_cost
        if food_and_beverage_cost is not APIHelper.SKIP:
            self.food_and_beverage_cost = food_and_beverage_cost
        if room_tax_amount is not APIHelper.SKIP:
            self.room_tax_amount = room_tax_amount
        if adjustment_amount is not APIHelper.SKIP:
            self.adjustment_amount = adjustment_amount
        if phone_cost is not APIHelper.SKIP:
            self.phone_cost = phone_cost
        if restaurant_cost is not APIHelper.SKIP:
            self.restaurant_cost = restaurant_cost
        if room_service_cost is not APIHelper.SKIP:
            self.room_service_cost = room_service_cost
        if mini_bar_cost is not APIHelper.SKIP:
            self.mini_bar_cost = mini_bar_cost
        if laundry_cost is not APIHelper.SKIP:
            self.laundry_cost = laundry_cost
        if miscellaneous_cost is not APIHelper.SKIP:
            self.miscellaneous_cost = miscellaneous_cost
        if gift_shop_cost is not APIHelper.SKIP:
            self.gift_shop_cost = gift_shop_cost
        if movie_cost is not APIHelper.SKIP:
            self.movie_cost = movie_cost
        if health_club_cost is not APIHelper.SKIP:
            self.health_club_cost = health_club_cost
        if valet_parking_cost is not APIHelper.SKIP:
            self.valet_parking_cost = valet_parking_cost
        if cash_disbursement_cost is not APIHelper.SKIP:
            self.cash_disbursement_cost = cash_disbursement_cost
        if non_room_cost is not APIHelper.SKIP:
            self.non_room_cost = non_room_cost
        if business_center_cost is not APIHelper.SKIP:
            self.business_center_cost = business_center_cost
        if lounge_bar_cost is not APIHelper.SKIP:
            self.lounge_bar_cost = lounge_bar_cost
        if transportation_cost is not APIHelper.SKIP:
            self.transportation_cost = transportation_cost
        if gratuity_amount is not APIHelper.SKIP:
            self.gratuity_amount = gratuity_amount
        if conference_room_cost is not APIHelper.SKIP:
            self.conference_room_cost = conference_room_cost
        if audio_visual_cost is not APIHelper.SKIP:
            self.audio_visual_cost = audio_visual_cost
        if banquest_cost is not APIHelper.SKIP:
            self.banquest_cost = banquest_cost
        if non_room_tax_amount is not APIHelper.SKIP:
            self.non_room_tax_amount = non_room_tax_amount
        if early_check_out_cost is not APIHelper.SKIP:
            self.early_check_out_cost = early_check_out_cost
        if internet_access_cost is not APIHelper.SKIP:
            self.internet_access_cost = internet_access_cost
        if name is not APIHelper.SKIP:
            self.name = name
        if hotel_name is not APIHelper.SKIP:
            self.hotel_name = hotel_name
        if check_in_date_time is not APIHelper.SKIP:
            self.check_in_date_time = check_in_date_time
        if check_out_date_time is not APIHelper.SKIP:
            self.check_out_date_time = check_out_date_time

        # Add additional model properties to the instance
        if additional_properties is None:
            additional_properties = {}
        self.additional_properties = additional_properties

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Create an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """
        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        check_in_date =\
            dictionary.get("checkInDate")\
            if dictionary.get("checkInDate")\
                else APIHelper.SKIP
        check_out_date =\
            dictionary.get("checkOutDate")\
            if dictionary.get("checkOutDate")\
                else APIHelper.SKIP
        room = None
        if dictionary.get("room") is not None:
            room = [
                Room.from_dictionary(x)
                    for x in dictionary.get("room")
            ]
        else:
            room = APIHelper.SKIP
        smoking_preference =\
            dictionary.get("smokingPreference")\
            if dictionary.get("smokingPreference")\
                else APIHelper.SKIP
        number_of_rooms =\
            dictionary.get("numberOfRooms")\
            if dictionary.get("numberOfRooms")\
                else APIHelper.SKIP
        number_of_guests =\
            dictionary.get("numberOfGuests")\
            if dictionary.get("numberOfGuests")\
                else APIHelper.SKIP
        room_bed_type =\
            dictionary.get("roomBedType")\
            if dictionary.get("roomBedType")\
                else APIHelper.SKIP
        room_tax_type =\
            dictionary.get("roomTaxType")\
            if dictionary.get("roomTaxType")\
                else APIHelper.SKIP
        room_rate_type =\
            dictionary.get("roomRateType")\
            if dictionary.get("roomRateType")\
                else APIHelper.SKIP
        guest_name =\
            dictionary.get("guestName")\
            if dictionary.get("guestName")\
                else APIHelper.SKIP
        customer_service_phone_number =\
            dictionary.get("customerServicePhoneNumber")\
            if dictionary.get("customerServicePhoneNumber")\
                else APIHelper.SKIP
        corporate_client_code =\
            dictionary.get("corporateClientCode")\
            if dictionary.get("corporateClientCode")\
                else APIHelper.SKIP
        additional_discount_amount =\
            dictionary.get("additionalDiscountAmount")\
            if dictionary.get("additionalDiscountAmount")\
                else APIHelper.SKIP
        room_location =\
            dictionary.get("roomLocation")\
            if dictionary.get("roomLocation")\
                else APIHelper.SKIP
        special_program_code =\
            dictionary.get("specialProgramCode")\
            if dictionary.get("specialProgramCode")\
                else APIHelper.SKIP
        total_tax_amount =\
            dictionary.get("totalTaxAmount")\
            if dictionary.get("totalTaxAmount")\
                else APIHelper.SKIP
        prepaid_cost =\
            dictionary.get("prepaidCost")\
            if dictionary.get("prepaidCost")\
                else APIHelper.SKIP
        food_and_beverage_cost =\
            dictionary.get("foodAndBeverageCost")\
            if dictionary.get("foodAndBeverageCost")\
                else APIHelper.SKIP
        room_tax_amount =\
            dictionary.get("roomTaxAmount")\
            if dictionary.get("roomTaxAmount")\
                else APIHelper.SKIP
        adjustment_amount =\
            dictionary.get("adjustmentAmount")\
            if dictionary.get("adjustmentAmount")\
                else APIHelper.SKIP
        phone_cost =\
            dictionary.get("phoneCost")\
            if dictionary.get("phoneCost")\
                else APIHelper.SKIP
        restaurant_cost =\
            dictionary.get("restaurantCost")\
            if dictionary.get("restaurantCost")\
                else APIHelper.SKIP
        room_service_cost =\
            dictionary.get("roomServiceCost")\
            if dictionary.get("roomServiceCost")\
                else APIHelper.SKIP
        mini_bar_cost =\
            dictionary.get("miniBarCost")\
            if dictionary.get("miniBarCost")\
                else APIHelper.SKIP
        laundry_cost =\
            dictionary.get("laundryCost")\
            if dictionary.get("laundryCost")\
                else APIHelper.SKIP
        miscellaneous_cost =\
            dictionary.get("miscellaneousCost")\
            if dictionary.get("miscellaneousCost")\
                else APIHelper.SKIP
        gift_shop_cost =\
            dictionary.get("giftShopCost")\
            if dictionary.get("giftShopCost")\
                else APIHelper.SKIP
        movie_cost =\
            dictionary.get("movieCost")\
            if dictionary.get("movieCost")\
                else APIHelper.SKIP
        health_club_cost =\
            dictionary.get("healthClubCost")\
            if dictionary.get("healthClubCost")\
                else APIHelper.SKIP
        valet_parking_cost =\
            dictionary.get("valetParkingCost")\
            if dictionary.get("valetParkingCost")\
                else APIHelper.SKIP
        cash_disbursement_cost =\
            dictionary.get("cashDisbursementCost")\
            if dictionary.get("cashDisbursementCost")\
                else APIHelper.SKIP
        non_room_cost =\
            dictionary.get("nonRoomCost")\
            if dictionary.get("nonRoomCost")\
                else APIHelper.SKIP
        business_center_cost =\
            dictionary.get("businessCenterCost")\
            if dictionary.get("businessCenterCost")\
                else APIHelper.SKIP
        lounge_bar_cost =\
            dictionary.get("loungeBarCost")\
            if dictionary.get("loungeBarCost")\
                else APIHelper.SKIP
        transportation_cost =\
            dictionary.get("transportationCost")\
            if dictionary.get("transportationCost")\
                else APIHelper.SKIP
        gratuity_amount =\
            dictionary.get("gratuityAmount")\
            if dictionary.get("gratuityAmount")\
                else APIHelper.SKIP
        conference_room_cost =\
            dictionary.get("conferenceRoomCost")\
            if dictionary.get("conferenceRoomCost")\
                else APIHelper.SKIP
        audio_visual_cost =\
            dictionary.get("audioVisualCost")\
            if dictionary.get("audioVisualCost")\
                else APIHelper.SKIP
        banquest_cost =\
            dictionary.get("banquestCost")\
            if dictionary.get("banquestCost")\
                else APIHelper.SKIP
        non_room_tax_amount =\
            dictionary.get("nonRoomTaxAmount")\
            if dictionary.get("nonRoomTaxAmount")\
                else APIHelper.SKIP
        early_check_out_cost =\
            dictionary.get("earlyCheckOutCost")\
            if dictionary.get("earlyCheckOutCost")\
                else APIHelper.SKIP
        internet_access_cost =\
            dictionary.get("internetAccessCost")\
            if dictionary.get("internetAccessCost")\
                else APIHelper.SKIP
        name =\
            dictionary.get("name")\
            if dictionary.get("name")\
                else APIHelper.SKIP
        hotel_name =\
            dictionary.get("hotelName")\
            if dictionary.get("hotelName")\
                else APIHelper.SKIP
        check_in_date_time =\
            dictionary.get("checkInDateTime")\
            if dictionary.get("checkInDateTime")\
                else APIHelper.SKIP
        check_out_date_time =\
            dictionary.get("checkOutDateTime")\
            if dictionary.get("checkOutDateTime")\
                else APIHelper.SKIP

        additional_properties = APIHelper.get_additional_properties(
            dictionary={k: v for k, v in dictionary.items()
                        if k not in cls._names.values()},
            unboxing_function=lambda value: value)

        # Return an object of this model
        return cls(check_in_date,
                   check_out_date,
                   room,
                   smoking_preference,
                   number_of_rooms,
                   number_of_guests,
                   room_bed_type,
                   room_tax_type,
                   room_rate_type,
                   guest_name,
                   customer_service_phone_number,
                   corporate_client_code,
                   additional_discount_amount,
                   room_location,
                   special_program_code,
                   total_tax_amount,
                   prepaid_cost,
                   food_and_beverage_cost,
                   room_tax_amount,
                   adjustment_amount,
                   phone_cost,
                   restaurant_cost,
                   room_service_cost,
                   mini_bar_cost,
                   laundry_cost,
                   miscellaneous_cost,
                   gift_shop_cost,
                   movie_cost,
                   health_club_cost,
                   valet_parking_cost,
                   cash_disbursement_cost,
                   non_room_cost,
                   business_center_cost,
                   lounge_bar_cost,
                   transportation_cost,
                   gratuity_amount,
                   conference_room_cost,
                   audio_visual_cost,
                   banquest_cost,
                   non_room_tax_amount,
                   early_check_out_cost,
                   internet_access_cost,
                   name,
                   hotel_name,
                   check_in_date_time,
                   check_out_date_time,
                   additional_properties)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _check_in_date=(
            self.check_in_date
            if hasattr(self, "check_in_date")
            else None
        )
        _check_out_date=(
            self.check_out_date
            if hasattr(self, "check_out_date")
            else None
        )
        _room=(
            self.room
            if hasattr(self, "room")
            else None
        )
        _smoking_preference=(
            self.smoking_preference
            if hasattr(self, "smoking_preference")
            else None
        )
        _number_of_rooms=(
            self.number_of_rooms
            if hasattr(self, "number_of_rooms")
            else None
        )
        _number_of_guests=(
            self.number_of_guests
            if hasattr(self, "number_of_guests")
            else None
        )
        _room_bed_type=(
            self.room_bed_type
            if hasattr(self, "room_bed_type")
            else None
        )
        _room_tax_type=(
            self.room_tax_type
            if hasattr(self, "room_tax_type")
            else None
        )
        _room_rate_type=(
            self.room_rate_type
            if hasattr(self, "room_rate_type")
            else None
        )
        _guest_name=(
            self.guest_name
            if hasattr(self, "guest_name")
            else None
        )
        _customer_service_phone_number=(
            self.customer_service_phone_number
            if hasattr(self, "customer_service_phone_number")
            else None
        )
        _corporate_client_code=(
            self.corporate_client_code
            if hasattr(self, "corporate_client_code")
            else None
        )
        _additional_discount_amount=(
            self.additional_discount_amount
            if hasattr(self, "additional_discount_amount")
            else None
        )
        _room_location=(
            self.room_location
            if hasattr(self, "room_location")
            else None
        )
        _special_program_code=(
            self.special_program_code
            if hasattr(self, "special_program_code")
            else None
        )
        _total_tax_amount=(
            self.total_tax_amount
            if hasattr(self, "total_tax_amount")
            else None
        )
        _prepaid_cost=(
            self.prepaid_cost
            if hasattr(self, "prepaid_cost")
            else None
        )
        _food_and_beverage_cost=(
            self.food_and_beverage_cost
            if hasattr(self, "food_and_beverage_cost")
            else None
        )
        _room_tax_amount=(
            self.room_tax_amount
            if hasattr(self, "room_tax_amount")
            else None
        )
        _adjustment_amount=(
            self.adjustment_amount
            if hasattr(self, "adjustment_amount")
            else None
        )
        _phone_cost=(
            self.phone_cost
            if hasattr(self, "phone_cost")
            else None
        )
        _restaurant_cost=(
            self.restaurant_cost
            if hasattr(self, "restaurant_cost")
            else None
        )
        _room_service_cost=(
            self.room_service_cost
            if hasattr(self, "room_service_cost")
            else None
        )
        _mini_bar_cost=(
            self.mini_bar_cost
            if hasattr(self, "mini_bar_cost")
            else None
        )
        _laundry_cost=(
            self.laundry_cost
            if hasattr(self, "laundry_cost")
            else None
        )
        _miscellaneous_cost=(
            self.miscellaneous_cost
            if hasattr(self, "miscellaneous_cost")
            else None
        )
        _gift_shop_cost=(
            self.gift_shop_cost
            if hasattr(self, "gift_shop_cost")
            else None
        )
        _movie_cost=(
            self.movie_cost
            if hasattr(self, "movie_cost")
            else None
        )
        _health_club_cost=(
            self.health_club_cost
            if hasattr(self, "health_club_cost")
            else None
        )
        _valet_parking_cost=(
            self.valet_parking_cost
            if hasattr(self, "valet_parking_cost")
            else None
        )
        _cash_disbursement_cost=(
            self.cash_disbursement_cost
            if hasattr(self, "cash_disbursement_cost")
            else None
        )
        _non_room_cost=(
            self.non_room_cost
            if hasattr(self, "non_room_cost")
            else None
        )
        _business_center_cost=(
            self.business_center_cost
            if hasattr(self, "business_center_cost")
            else None
        )
        _lounge_bar_cost=(
            self.lounge_bar_cost
            if hasattr(self, "lounge_bar_cost")
            else None
        )
        _transportation_cost=(
            self.transportation_cost
            if hasattr(self, "transportation_cost")
            else None
        )
        _gratuity_amount=(
            self.gratuity_amount
            if hasattr(self, "gratuity_amount")
            else None
        )
        _conference_room_cost=(
            self.conference_room_cost
            if hasattr(self, "conference_room_cost")
            else None
        )
        _audio_visual_cost=(
            self.audio_visual_cost
            if hasattr(self, "audio_visual_cost")
            else None
        )
        _banquest_cost=(
            self.banquest_cost
            if hasattr(self, "banquest_cost")
            else None
        )
        _non_room_tax_amount=(
            self.non_room_tax_amount
            if hasattr(self, "non_room_tax_amount")
            else None
        )
        _early_check_out_cost=(
            self.early_check_out_cost
            if hasattr(self, "early_check_out_cost")
            else None
        )
        _internet_access_cost=(
            self.internet_access_cost
            if hasattr(self, "internet_access_cost")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _hotel_name=(
            self.hotel_name
            if hasattr(self, "hotel_name")
            else None
        )
        _check_in_date_time=(
            self.check_in_date_time
            if hasattr(self, "check_in_date_time")
            else None
        )
        _check_out_date_time=(
            self.check_out_date_time
            if hasattr(self, "check_out_date_time")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"check_in_date={_check_in_date!r}, "
            f"check_out_date={_check_out_date!r}, "
            f"room={_room!r}, "
            f"smoking_preference={_smoking_preference!r}, "
            f"number_of_rooms={_number_of_rooms!r}, "
            f"number_of_guests={_number_of_guests!r}, "
            f"room_bed_type={_room_bed_type!r}, "
            f"room_tax_type={_room_tax_type!r}, "
            f"room_rate_type={_room_rate_type!r}, "
            f"guest_name={_guest_name!r}, "
            f"customer_service_phone_number={_customer_service_phone_number!r}, "
            f"corporate_client_code={_corporate_client_code!r}, "
            f"additional_discount_amount={_additional_discount_amount!r}, "
            f"room_location={_room_location!r}, "
            f"special_program_code={_special_program_code!r}, "
            f"total_tax_amount={_total_tax_amount!r}, "
            f"prepaid_cost={_prepaid_cost!r}, "
            f"food_and_beverage_cost={_food_and_beverage_cost!r}, "
            f"room_tax_amount={_room_tax_amount!r}, "
            f"adjustment_amount={_adjustment_amount!r}, "
            f"phone_cost={_phone_cost!r}, "
            f"restaurant_cost={_restaurant_cost!r}, "
            f"room_service_cost={_room_service_cost!r}, "
            f"mini_bar_cost={_mini_bar_cost!r}, "
            f"laundry_cost={_laundry_cost!r}, "
            f"miscellaneous_cost={_miscellaneous_cost!r}, "
            f"gift_shop_cost={_gift_shop_cost!r}, "
            f"movie_cost={_movie_cost!r}, "
            f"health_club_cost={_health_club_cost!r}, "
            f"valet_parking_cost={_valet_parking_cost!r}, "
            f"cash_disbursement_cost={_cash_disbursement_cost!r}, "
            f"non_room_cost={_non_room_cost!r}, "
            f"business_center_cost={_business_center_cost!r}, "
            f"lounge_bar_cost={_lounge_bar_cost!r}, "
            f"transportation_cost={_transportation_cost!r}, "
            f"gratuity_amount={_gratuity_amount!r}, "
            f"conference_room_cost={_conference_room_cost!r}, "
            f"audio_visual_cost={_audio_visual_cost!r}, "
            f"banquest_cost={_banquest_cost!r}, "
            f"non_room_tax_amount={_non_room_tax_amount!r}, "
            f"early_check_out_cost={_early_check_out_cost!r}, "
            f"internet_access_cost={_internet_access_cost!r}, "
            f"name={_name!r}, "
            f"hotel_name={_hotel_name!r}, "
            f"check_in_date_time={_check_in_date_time!r}, "
            f"check_out_date_time={_check_out_date_time!r}, "
            f"additional_properties={_additional_properties!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _check_in_date=(
            self.check_in_date
            if hasattr(self, "check_in_date")
            else None
        )
        _check_out_date=(
            self.check_out_date
            if hasattr(self, "check_out_date")
            else None
        )
        _room=(
            self.room
            if hasattr(self, "room")
            else None
        )
        _smoking_preference=(
            self.smoking_preference
            if hasattr(self, "smoking_preference")
            else None
        )
        _number_of_rooms=(
            self.number_of_rooms
            if hasattr(self, "number_of_rooms")
            else None
        )
        _number_of_guests=(
            self.number_of_guests
            if hasattr(self, "number_of_guests")
            else None
        )
        _room_bed_type=(
            self.room_bed_type
            if hasattr(self, "room_bed_type")
            else None
        )
        _room_tax_type=(
            self.room_tax_type
            if hasattr(self, "room_tax_type")
            else None
        )
        _room_rate_type=(
            self.room_rate_type
            if hasattr(self, "room_rate_type")
            else None
        )
        _guest_name=(
            self.guest_name
            if hasattr(self, "guest_name")
            else None
        )
        _customer_service_phone_number=(
            self.customer_service_phone_number
            if hasattr(self, "customer_service_phone_number")
            else None
        )
        _corporate_client_code=(
            self.corporate_client_code
            if hasattr(self, "corporate_client_code")
            else None
        )
        _additional_discount_amount=(
            self.additional_discount_amount
            if hasattr(self, "additional_discount_amount")
            else None
        )
        _room_location=(
            self.room_location
            if hasattr(self, "room_location")
            else None
        )
        _special_program_code=(
            self.special_program_code
            if hasattr(self, "special_program_code")
            else None
        )
        _total_tax_amount=(
            self.total_tax_amount
            if hasattr(self, "total_tax_amount")
            else None
        )
        _prepaid_cost=(
            self.prepaid_cost
            if hasattr(self, "prepaid_cost")
            else None
        )
        _food_and_beverage_cost=(
            self.food_and_beverage_cost
            if hasattr(self, "food_and_beverage_cost")
            else None
        )
        _room_tax_amount=(
            self.room_tax_amount
            if hasattr(self, "room_tax_amount")
            else None
        )
        _adjustment_amount=(
            self.adjustment_amount
            if hasattr(self, "adjustment_amount")
            else None
        )
        _phone_cost=(
            self.phone_cost
            if hasattr(self, "phone_cost")
            else None
        )
        _restaurant_cost=(
            self.restaurant_cost
            if hasattr(self, "restaurant_cost")
            else None
        )
        _room_service_cost=(
            self.room_service_cost
            if hasattr(self, "room_service_cost")
            else None
        )
        _mini_bar_cost=(
            self.mini_bar_cost
            if hasattr(self, "mini_bar_cost")
            else None
        )
        _laundry_cost=(
            self.laundry_cost
            if hasattr(self, "laundry_cost")
            else None
        )
        _miscellaneous_cost=(
            self.miscellaneous_cost
            if hasattr(self, "miscellaneous_cost")
            else None
        )
        _gift_shop_cost=(
            self.gift_shop_cost
            if hasattr(self, "gift_shop_cost")
            else None
        )
        _movie_cost=(
            self.movie_cost
            if hasattr(self, "movie_cost")
            else None
        )
        _health_club_cost=(
            self.health_club_cost
            if hasattr(self, "health_club_cost")
            else None
        )
        _valet_parking_cost=(
            self.valet_parking_cost
            if hasattr(self, "valet_parking_cost")
            else None
        )
        _cash_disbursement_cost=(
            self.cash_disbursement_cost
            if hasattr(self, "cash_disbursement_cost")
            else None
        )
        _non_room_cost=(
            self.non_room_cost
            if hasattr(self, "non_room_cost")
            else None
        )
        _business_center_cost=(
            self.business_center_cost
            if hasattr(self, "business_center_cost")
            else None
        )
        _lounge_bar_cost=(
            self.lounge_bar_cost
            if hasattr(self, "lounge_bar_cost")
            else None
        )
        _transportation_cost=(
            self.transportation_cost
            if hasattr(self, "transportation_cost")
            else None
        )
        _gratuity_amount=(
            self.gratuity_amount
            if hasattr(self, "gratuity_amount")
            else None
        )
        _conference_room_cost=(
            self.conference_room_cost
            if hasattr(self, "conference_room_cost")
            else None
        )
        _audio_visual_cost=(
            self.audio_visual_cost
            if hasattr(self, "audio_visual_cost")
            else None
        )
        _banquest_cost=(
            self.banquest_cost
            if hasattr(self, "banquest_cost")
            else None
        )
        _non_room_tax_amount=(
            self.non_room_tax_amount
            if hasattr(self, "non_room_tax_amount")
            else None
        )
        _early_check_out_cost=(
            self.early_check_out_cost
            if hasattr(self, "early_check_out_cost")
            else None
        )
        _internet_access_cost=(
            self.internet_access_cost
            if hasattr(self, "internet_access_cost")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _hotel_name=(
            self.hotel_name
            if hasattr(self, "hotel_name")
            else None
        )
        _check_in_date_time=(
            self.check_in_date_time
            if hasattr(self, "check_in_date_time")
            else None
        )
        _check_out_date_time=(
            self.check_out_date_time
            if hasattr(self, "check_out_date_time")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"check_in_date={_check_in_date!s}, "
            f"check_out_date={_check_out_date!s}, "
            f"room={_room!s}, "
            f"smoking_preference={_smoking_preference!s}, "
            f"number_of_rooms={_number_of_rooms!s}, "
            f"number_of_guests={_number_of_guests!s}, "
            f"room_bed_type={_room_bed_type!s}, "
            f"room_tax_type={_room_tax_type!s}, "
            f"room_rate_type={_room_rate_type!s}, "
            f"guest_name={_guest_name!s}, "
            f"customer_service_phone_number={_customer_service_phone_number!s}, "
            f"corporate_client_code={_corporate_client_code!s}, "
            f"additional_discount_amount={_additional_discount_amount!s}, "
            f"room_location={_room_location!s}, "
            f"special_program_code={_special_program_code!s}, "
            f"total_tax_amount={_total_tax_amount!s}, "
            f"prepaid_cost={_prepaid_cost!s}, "
            f"food_and_beverage_cost={_food_and_beverage_cost!s}, "
            f"room_tax_amount={_room_tax_amount!s}, "
            f"adjustment_amount={_adjustment_amount!s}, "
            f"phone_cost={_phone_cost!s}, "
            f"restaurant_cost={_restaurant_cost!s}, "
            f"room_service_cost={_room_service_cost!s}, "
            f"mini_bar_cost={_mini_bar_cost!s}, "
            f"laundry_cost={_laundry_cost!s}, "
            f"miscellaneous_cost={_miscellaneous_cost!s}, "
            f"gift_shop_cost={_gift_shop_cost!s}, "
            f"movie_cost={_movie_cost!s}, "
            f"health_club_cost={_health_club_cost!s}, "
            f"valet_parking_cost={_valet_parking_cost!s}, "
            f"cash_disbursement_cost={_cash_disbursement_cost!s}, "
            f"non_room_cost={_non_room_cost!s}, "
            f"business_center_cost={_business_center_cost!s}, "
            f"lounge_bar_cost={_lounge_bar_cost!s}, "
            f"transportation_cost={_transportation_cost!s}, "
            f"gratuity_amount={_gratuity_amount!s}, "
            f"conference_room_cost={_conference_room_cost!s}, "
            f"audio_visual_cost={_audio_visual_cost!s}, "
            f"banquest_cost={_banquest_cost!s}, "
            f"non_room_tax_amount={_non_room_tax_amount!s}, "
            f"early_check_out_cost={_early_check_out_cost!s}, "
            f"internet_access_cost={_internet_access_cost!s}, "
            f"name={_name!s}, "
            f"hotel_name={_hotel_name!s}, "
            f"check_in_date_time={_check_in_date_time!s}, "
            f"check_out_date_time={_check_out_date_time!s}, "
            f"additional_properties={_additional_properties!s}, "
            f")"
        )
