# coding: utf-8

"""
    CyberSource Merged Spec

    All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html

    OpenAPI spec version: 0.0.1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


from pprint import pformat
from six import iteritems
import re


class Ptsv2paymentsTravelInformationAutoRental(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """


    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'no_show_indicator': 'bool',
        'customer_name': 'str',
        'vehicle_class': 'str',
        'distance_travelled': 'str',
        'distance_unit': 'str',
        'return_date_time': 'str',
        'rental_date_time': 'str',
        'max_free_distance': 'str',
        'insurance_indicator': 'bool',
        'program_code': 'str',
        'return_address': 'Ptsv2paymentsTravelInformationAutoRentalReturnAddress',
        'rental_address': 'Ptsv2paymentsTravelInformationAutoRentalRentalAddress',
        'agreement_number': 'str',
        'odometer_reading': 'str',
        'vehicle_identification_number': 'str',
        'company_id': 'str',
        'number_of_additional_drivers': 'str',
        'driver_age': 'str',
        'special_program_code': 'str',
        'vehicle_make': 'str',
        'vehicle_model': 'str',
        'time_period': 'str',
        'commodity_code': 'str',
        'customer_service_phone_number': 'str',
        'tax_details': 'Ptsv2paymentsTravelInformationAutoRentalTaxDetails',
        'insurance_amount': 'str',
        'one_way_drop_off_amount': 'str',
        'adjusted_amount_indicator': 'str',
        'adjusted_amount': 'str',
        'fuel_charges': 'str',
        'weekly_rental_rate': 'str',
        'daily_rental_rate': 'str',
        'rate_per_mile': 'str',
        'mileage_charge': 'str',
        'extra_mileage_charge': 'str',
        'late_fee_amount': 'str',
        'towing_charge': 'str',
        'extra_charge': 'str',
        'gps_charge': 'str',
        'phone_charge': 'str',
        'parking_violation_charge': 'str',
        'other_charges': 'str'
    }

    attribute_map = {
        'no_show_indicator': 'noShowIndicator',
        'customer_name': 'customerName',
        'vehicle_class': 'vehicleClass',
        'distance_travelled': 'distanceTravelled',
        'distance_unit': 'distanceUnit',
        'return_date_time': 'returnDateTime',
        'rental_date_time': 'rentalDateTime',
        'max_free_distance': 'maxFreeDistance',
        'insurance_indicator': 'insuranceIndicator',
        'program_code': 'programCode',
        'return_address': 'returnAddress',
        'rental_address': 'rentalAddress',
        'agreement_number': 'agreementNumber',
        'odometer_reading': 'odometerReading',
        'vehicle_identification_number': 'vehicleIdentificationNumber',
        'company_id': 'companyId',
        'number_of_additional_drivers': 'numberOfAdditionalDrivers',
        'driver_age': 'driverAge',
        'special_program_code': 'specialProgramCode',
        'vehicle_make': 'vehicleMake',
        'vehicle_model': 'vehicleModel',
        'time_period': 'timePeriod',
        'commodity_code': 'commodityCode',
        'customer_service_phone_number': 'customerServicePhoneNumber',
        'tax_details': 'taxDetails',
        'insurance_amount': 'insuranceAmount',
        'one_way_drop_off_amount': 'oneWayDropOffAmount',
        'adjusted_amount_indicator': 'adjustedAmountIndicator',
        'adjusted_amount': 'adjustedAmount',
        'fuel_charges': 'fuelCharges',
        'weekly_rental_rate': 'weeklyRentalRate',
        'daily_rental_rate': 'dailyRentalRate',
        'rate_per_mile': 'ratePerMile',
        'mileage_charge': 'mileageCharge',
        'extra_mileage_charge': 'extraMileageCharge',
        'late_fee_amount': 'lateFeeAmount',
        'towing_charge': 'towingCharge',
        'extra_charge': 'extraCharge',
        'gps_charge': 'gpsCharge',
        'phone_charge': 'phoneCharge',
        'parking_violation_charge': 'parkingViolationCharge',
        'other_charges': 'otherCharges'
    }

    def __init__(self, no_show_indicator=None, customer_name=None, vehicle_class=None, distance_travelled=None, distance_unit=None, return_date_time=None, rental_date_time=None, max_free_distance=None, insurance_indicator=None, program_code=None, return_address=None, rental_address=None, agreement_number=None, odometer_reading=None, vehicle_identification_number=None, company_id=None, number_of_additional_drivers=None, driver_age=None, special_program_code=None, vehicle_make=None, vehicle_model=None, time_period=None, commodity_code=None, customer_service_phone_number=None, tax_details=None, insurance_amount=None, one_way_drop_off_amount=None, adjusted_amount_indicator=None, adjusted_amount=None, fuel_charges=None, weekly_rental_rate=None, daily_rental_rate=None, rate_per_mile=None, mileage_charge=None, extra_mileage_charge=None, late_fee_amount=None, towing_charge=None, extra_charge=None, gps_charge=None, phone_charge=None, parking_violation_charge=None, other_charges=None):
        """
        Ptsv2paymentsTravelInformationAutoRental - a model defined in Swagger
        """

        self._no_show_indicator = None
        self._customer_name = None
        self._vehicle_class = None
        self._distance_travelled = None
        self._distance_unit = None
        self._return_date_time = None
        self._rental_date_time = None
        self._max_free_distance = None
        self._insurance_indicator = None
        self._program_code = None
        self._return_address = None
        self._rental_address = None
        self._agreement_number = None
        self._odometer_reading = None
        self._vehicle_identification_number = None
        self._company_id = None
        self._number_of_additional_drivers = None
        self._driver_age = None
        self._special_program_code = None
        self._vehicle_make = None
        self._vehicle_model = None
        self._time_period = None
        self._commodity_code = None
        self._customer_service_phone_number = None
        self._tax_details = None
        self._insurance_amount = None
        self._one_way_drop_off_amount = None
        self._adjusted_amount_indicator = None
        self._adjusted_amount = None
        self._fuel_charges = None
        self._weekly_rental_rate = None
        self._daily_rental_rate = None
        self._rate_per_mile = None
        self._mileage_charge = None
        self._extra_mileage_charge = None
        self._late_fee_amount = None
        self._towing_charge = None
        self._extra_charge = None
        self._gps_charge = None
        self._phone_charge = None
        self._parking_violation_charge = None
        self._other_charges = None

        if no_show_indicator is not None:
          self.no_show_indicator = no_show_indicator
        if customer_name is not None:
          self.customer_name = customer_name
        if vehicle_class is not None:
          self.vehicle_class = vehicle_class
        if distance_travelled is not None:
          self.distance_travelled = distance_travelled
        if distance_unit is not None:
          self.distance_unit = distance_unit
        if return_date_time is not None:
          self.return_date_time = return_date_time
        if rental_date_time is not None:
          self.rental_date_time = rental_date_time
        if max_free_distance is not None:
          self.max_free_distance = max_free_distance
        if insurance_indicator is not None:
          self.insurance_indicator = insurance_indicator
        if program_code is not None:
          self.program_code = program_code
        if return_address is not None:
          self.return_address = return_address
        if rental_address is not None:
          self.rental_address = rental_address
        if agreement_number is not None:
          self.agreement_number = agreement_number
        if odometer_reading is not None:
          self.odometer_reading = odometer_reading
        if vehicle_identification_number is not None:
          self.vehicle_identification_number = vehicle_identification_number
        if company_id is not None:
          self.company_id = company_id
        if number_of_additional_drivers is not None:
          self.number_of_additional_drivers = number_of_additional_drivers
        if driver_age is not None:
          self.driver_age = driver_age
        if special_program_code is not None:
          self.special_program_code = special_program_code
        if vehicle_make is not None:
          self.vehicle_make = vehicle_make
        if vehicle_model is not None:
          self.vehicle_model = vehicle_model
        if time_period is not None:
          self.time_period = time_period
        if commodity_code is not None:
          self.commodity_code = commodity_code
        if customer_service_phone_number is not None:
          self.customer_service_phone_number = customer_service_phone_number
        if tax_details is not None:
          self.tax_details = tax_details
        if insurance_amount is not None:
          self.insurance_amount = insurance_amount
        if one_way_drop_off_amount is not None:
          self.one_way_drop_off_amount = one_way_drop_off_amount
        if adjusted_amount_indicator is not None:
          self.adjusted_amount_indicator = adjusted_amount_indicator
        if adjusted_amount is not None:
          self.adjusted_amount = adjusted_amount
        if fuel_charges is not None:
          self.fuel_charges = fuel_charges
        if weekly_rental_rate is not None:
          self.weekly_rental_rate = weekly_rental_rate
        if daily_rental_rate is not None:
          self.daily_rental_rate = daily_rental_rate
        if rate_per_mile is not None:
          self.rate_per_mile = rate_per_mile
        if mileage_charge is not None:
          self.mileage_charge = mileage_charge
        if extra_mileage_charge is not None:
          self.extra_mileage_charge = extra_mileage_charge
        if late_fee_amount is not None:
          self.late_fee_amount = late_fee_amount
        if towing_charge is not None:
          self.towing_charge = towing_charge
        if extra_charge is not None:
          self.extra_charge = extra_charge
        if gps_charge is not None:
          self.gps_charge = gps_charge
        if phone_charge is not None:
          self.phone_charge = phone_charge
        if parking_violation_charge is not None:
          self.parking_violation_charge = parking_violation_charge
        if other_charges is not None:
          self.other_charges = other_charges

    @property
    def no_show_indicator(self):
        """
        Gets the no_show_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        No Show Indicator provides an indicator noting that the individual did not show up after making a reservation for a vehicle. Possible values: - true - false 

        :return: The no_show_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: bool
        """
        return self._no_show_indicator

    @no_show_indicator.setter
    def no_show_indicator(self, no_show_indicator):
        """
        Sets the no_show_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        No Show Indicator provides an indicator noting that the individual did not show up after making a reservation for a vehicle. Possible values: - true - false 

        :param no_show_indicator: The no_show_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :type: bool
        """

        self._no_show_indicator = no_show_indicator

    @property
    def customer_name(self):
        """
        Gets the customer_name of this Ptsv2paymentsTravelInformationAutoRental.
        Name of the individual making the rental agreement.  Valid data lengths by card:  |Card Specific Validation|VISA|MasterCard|Discover|AMEX| |--- |--- |--- |--- | | Filed Length| 40| 40| 29| 26| | Field Type| AN| ANS| AN| AN| | M/O/C| O| M| M| M| 

        :return: The customer_name of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._customer_name

    @customer_name.setter
    def customer_name(self, customer_name):
        """
        Sets the customer_name of this Ptsv2paymentsTravelInformationAutoRental.
        Name of the individual making the rental agreement.  Valid data lengths by card:  |Card Specific Validation|VISA|MasterCard|Discover|AMEX| |--- |--- |--- |--- | | Filed Length| 40| 40| 29| 26| | Field Type| AN| ANS| AN| AN| | M/O/C| O| M| M| M| 

        :param customer_name: The customer_name of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if customer_name is not None and len(customer_name) > 40:
            raise ValueError("Invalid value for `customer_name`, length must be less than or equal to `40`")

        self._customer_name = customer_name

    @property
    def vehicle_class(self):
        """
        Gets the vehicle_class of this Ptsv2paymentsTravelInformationAutoRental.
        Classification of the rented auto.  **NOTE** For VISA, this is a 2-byte optional code.  Valid values for American Express & MasterCard:  |American Express |MasterCard |Description| |--- |--- |--- | | 0001| 0001| Mini| | 0002| 0002| Subcompact| | 0003| 0003| Economy| | 0004| 0004| Compact| | 0005| 0005| Midsize| | 0006| 0006| Intermediate| | 0007| 0007| Standard| | 0008| 0008| Fulll size| | 0009| 0009| Luxury| | 0010| 0010| Premium| | 0011| 0011| Minivan| | 0012| 0012| 12-passenger van| | 0013| 0013| Moving van| | 0014| 0014| 15-passenger van| | 0015| 0015| Cargo van| | 0016| 0016| 12-foot truck| | 0017| 0017| 20-foot truck| | 0018| 0018| 24-foot truck| | 0019| 0019| 26-foot truck| | 0020| 0020| Moped| | 0021| 0021| Stretch| | 0022| 0022| Regular| | 0023| 0023| Unique| | 0024| 0024| Exotic| | 0025| 0025| Small/medium truck| | 0026| 0026| Large truck| | 0027| 0027| Small SUV| | 0028| 0028| Medium SUV| | 0029| 0029| Large SUV| | 0030| 0030| Exotic SUV| | 9999| 9999| Miscellaneous|  Additional Values allowed **only** for `American Express`:  |American Express|MasterCard|Description| |--- |--- |--- | | 0031| NA| Four Wheel Drive| | 0032| NA| Special| | 0099| NA| Taxi| 

        :return: The vehicle_class of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._vehicle_class

    @vehicle_class.setter
    def vehicle_class(self, vehicle_class):
        """
        Sets the vehicle_class of this Ptsv2paymentsTravelInformationAutoRental.
        Classification of the rented auto.  **NOTE** For VISA, this is a 2-byte optional code.  Valid values for American Express & MasterCard:  |American Express |MasterCard |Description| |--- |--- |--- | | 0001| 0001| Mini| | 0002| 0002| Subcompact| | 0003| 0003| Economy| | 0004| 0004| Compact| | 0005| 0005| Midsize| | 0006| 0006| Intermediate| | 0007| 0007| Standard| | 0008| 0008| Fulll size| | 0009| 0009| Luxury| | 0010| 0010| Premium| | 0011| 0011| Minivan| | 0012| 0012| 12-passenger van| | 0013| 0013| Moving van| | 0014| 0014| 15-passenger van| | 0015| 0015| Cargo van| | 0016| 0016| 12-foot truck| | 0017| 0017| 20-foot truck| | 0018| 0018| 24-foot truck| | 0019| 0019| 26-foot truck| | 0020| 0020| Moped| | 0021| 0021| Stretch| | 0022| 0022| Regular| | 0023| 0023| Unique| | 0024| 0024| Exotic| | 0025| 0025| Small/medium truck| | 0026| 0026| Large truck| | 0027| 0027| Small SUV| | 0028| 0028| Medium SUV| | 0029| 0029| Large SUV| | 0030| 0030| Exotic SUV| | 9999| 9999| Miscellaneous|  Additional Values allowed **only** for `American Express`:  |American Express|MasterCard|Description| |--- |--- |--- | | 0031| NA| Four Wheel Drive| | 0032| NA| Special| | 0099| NA| Taxi| 

        :param vehicle_class: The vehicle_class of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if vehicle_class is not None and len(vehicle_class) > 4:
            raise ValueError("Invalid value for `vehicle_class`, length must be less than or equal to `4`")

        self._vehicle_class = vehicle_class

    @property
    def distance_travelled(self):
        """
        Gets the distance_travelled of this Ptsv2paymentsTravelInformationAutoRental.
        Total number of miles driven by the customer. This field is supported only for MasterCard and American Express. 

        :return: The distance_travelled of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._distance_travelled

    @distance_travelled.setter
    def distance_travelled(self, distance_travelled):
        """
        Sets the distance_travelled of this Ptsv2paymentsTravelInformationAutoRental.
        Total number of miles driven by the customer. This field is supported only for MasterCard and American Express. 

        :param distance_travelled: The distance_travelled of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if distance_travelled is not None and len(distance_travelled) > 5:
            raise ValueError("Invalid value for `distance_travelled`, length must be less than or equal to `5`")

        self._distance_travelled = distance_travelled

    @property
    def distance_unit(self):
        """
        Gets the distance_unit of this Ptsv2paymentsTravelInformationAutoRental.
        Miles/Kilometers Indicator shows whether the “miles” fields are expressed in miles or kilometers.  Allowed values: - `K` - Kilometers - `M` - Miles 

        :return: The distance_unit of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._distance_unit

    @distance_unit.setter
    def distance_unit(self, distance_unit):
        """
        Sets the distance_unit of this Ptsv2paymentsTravelInformationAutoRental.
        Miles/Kilometers Indicator shows whether the “miles” fields are expressed in miles or kilometers.  Allowed values: - `K` - Kilometers - `M` - Miles 

        :param distance_unit: The distance_unit of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if distance_unit is not None and len(distance_unit) > 1:
            raise ValueError("Invalid value for `distance_unit`, length must be less than or equal to `1`")

        self._distance_unit = distance_unit

    @property
    def return_date_time(self):
        """
        Gets the return_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        Date/time the auto was returned to the rental agency. Format: ``yyyy-MM-dd HH-mm-ss z`` This field is supported for Visa, MasterCard, and American Express. 

        :return: The return_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._return_date_time

    @return_date_time.setter
    def return_date_time(self, return_date_time):
        """
        Sets the return_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        Date/time the auto was returned to the rental agency. Format: ``yyyy-MM-dd HH-mm-ss z`` This field is supported for Visa, MasterCard, and American Express. 

        :param return_date_time: The return_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if return_date_time is not None and len(return_date_time) > 21:
            raise ValueError("Invalid value for `return_date_time`, length must be less than or equal to `21`")

        self._return_date_time = return_date_time

    @property
    def rental_date_time(self):
        """
        Gets the rental_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        Date/time the auto was picked up from the rental agency. Format: `yyyy-MM-dd HH-mm-ss z` This field is supported for Visa, MasterCard, and American Express. 

        :return: The rental_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._rental_date_time

    @rental_date_time.setter
    def rental_date_time(self, rental_date_time):
        """
        Sets the rental_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        Date/time the auto was picked up from the rental agency. Format: `yyyy-MM-dd HH-mm-ss z` This field is supported for Visa, MasterCard, and American Express. 

        :param rental_date_time: The rental_date_time of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if rental_date_time is not None and len(rental_date_time) > 21:
            raise ValueError("Invalid value for `rental_date_time`, length must be less than or equal to `21`")

        self._rental_date_time = rental_date_time

    @property
    def max_free_distance(self):
        """
        Gets the max_free_distance of this Ptsv2paymentsTravelInformationAutoRental.
        Maximum number of free miles or kilometers allowed to a customer for the duration of the auto rental agreement. This field is supported only for MasterCard and American Express. 

        :return: The max_free_distance of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._max_free_distance

    @max_free_distance.setter
    def max_free_distance(self, max_free_distance):
        """
        Sets the max_free_distance of this Ptsv2paymentsTravelInformationAutoRental.
        Maximum number of free miles or kilometers allowed to a customer for the duration of the auto rental agreement. This field is supported only for MasterCard and American Express. 

        :param max_free_distance: The max_free_distance of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if max_free_distance is not None and len(max_free_distance) > 4:
            raise ValueError("Invalid value for `max_free_distance`, length must be less than or equal to `4`")

        self._max_free_distance = max_free_distance

    @property
    def insurance_indicator(self):
        """
        Gets the insurance_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        Used for MC and Discover  Valid values: - `true` - Yes (insurance was purchased) - `false` - No (insurance was not purchased) 

        :return: The insurance_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: bool
        """
        return self._insurance_indicator

    @insurance_indicator.setter
    def insurance_indicator(self, insurance_indicator):
        """
        Sets the insurance_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        Used for MC and Discover  Valid values: - `true` - Yes (insurance was purchased) - `false` - No (insurance was not purchased) 

        :param insurance_indicator: The insurance_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :type: bool
        """

        self._insurance_indicator = insurance_indicator

    @property
    def program_code(self):
        """
        Gets the program_code of this Ptsv2paymentsTravelInformationAutoRental.
        Used to identify special circumstances applicable to the Card Transaction or Cardholder, such as \"renter” or ”show”.  This code is `2 digit` value agreed by Merchant and processor. 

        :return: The program_code of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._program_code

    @program_code.setter
    def program_code(self, program_code):
        """
        Sets the program_code of this Ptsv2paymentsTravelInformationAutoRental.
        Used to identify special circumstances applicable to the Card Transaction or Cardholder, such as \"renter” or ”show”.  This code is `2 digit` value agreed by Merchant and processor. 

        :param program_code: The program_code of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if program_code is not None and len(program_code) > 2:
            raise ValueError("Invalid value for `program_code`, length must be less than or equal to `2`")

        self._program_code = program_code

    @property
    def return_address(self):
        """
        Gets the return_address of this Ptsv2paymentsTravelInformationAutoRental.

        :return: The return_address of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: Ptsv2paymentsTravelInformationAutoRentalReturnAddress
        """
        return self._return_address

    @return_address.setter
    def return_address(self, return_address):
        """
        Sets the return_address of this Ptsv2paymentsTravelInformationAutoRental.

        :param return_address: The return_address of this Ptsv2paymentsTravelInformationAutoRental.
        :type: Ptsv2paymentsTravelInformationAutoRentalReturnAddress
        """

        self._return_address = return_address

    @property
    def rental_address(self):
        """
        Gets the rental_address of this Ptsv2paymentsTravelInformationAutoRental.

        :return: The rental_address of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: Ptsv2paymentsTravelInformationAutoRentalRentalAddress
        """
        return self._rental_address

    @rental_address.setter
    def rental_address(self, rental_address):
        """
        Sets the rental_address of this Ptsv2paymentsTravelInformationAutoRental.

        :param rental_address: The rental_address of this Ptsv2paymentsTravelInformationAutoRental.
        :type: Ptsv2paymentsTravelInformationAutoRentalRentalAddress
        """

        self._rental_address = rental_address

    @property
    def agreement_number(self):
        """
        Gets the agreement_number of this Ptsv2paymentsTravelInformationAutoRental.
        Auto rental agency’s agreement (invoice) number provided to the customer. It is used to trace any inquiries about transactions. This field is supported for Visa, MasterCard, and American Express. This Merchant-defined value, which may be composed of any combination of characters and/or numerals, may become part of the descriptive bill on the Cardmember's statement. 

        :return: The agreement_number of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._agreement_number

    @agreement_number.setter
    def agreement_number(self, agreement_number):
        """
        Sets the agreement_number of this Ptsv2paymentsTravelInformationAutoRental.
        Auto rental agency’s agreement (invoice) number provided to the customer. It is used to trace any inquiries about transactions. This field is supported for Visa, MasterCard, and American Express. This Merchant-defined value, which may be composed of any combination of characters and/or numerals, may become part of the descriptive bill on the Cardmember's statement. 

        :param agreement_number: The agreement_number of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if agreement_number is not None and len(agreement_number) > 25:
            raise ValueError("Invalid value for `agreement_number`, length must be less than or equal to `25`")

        self._agreement_number = agreement_number

    @property
    def odometer_reading(self):
        """
        Gets the odometer_reading of this Ptsv2paymentsTravelInformationAutoRental.
        Odometer reading at time of vehicle rental. 

        :return: The odometer_reading of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._odometer_reading

    @odometer_reading.setter
    def odometer_reading(self, odometer_reading):
        """
        Sets the odometer_reading of this Ptsv2paymentsTravelInformationAutoRental.
        Odometer reading at time of vehicle rental. 

        :param odometer_reading: The odometer_reading of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if odometer_reading is not None and len(odometer_reading) > 8:
            raise ValueError("Invalid value for `odometer_reading`, length must be less than or equal to `8`")

        self._odometer_reading = odometer_reading

    @property
    def vehicle_identification_number(self):
        """
        Gets the vehicle_identification_number of this Ptsv2paymentsTravelInformationAutoRental.
        This field contains a unique identifier assigned by the company to the vehicle. 

        :return: The vehicle_identification_number of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._vehicle_identification_number

    @vehicle_identification_number.setter
    def vehicle_identification_number(self, vehicle_identification_number):
        """
        Sets the vehicle_identification_number of this Ptsv2paymentsTravelInformationAutoRental.
        This field contains a unique identifier assigned by the company to the vehicle. 

        :param vehicle_identification_number: The vehicle_identification_number of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if vehicle_identification_number is not None and len(vehicle_identification_number) > 20:
            raise ValueError("Invalid value for `vehicle_identification_number`, length must be less than or equal to `20`")

        self._vehicle_identification_number = vehicle_identification_number

    @property
    def company_id(self):
        """
        Gets the company_id of this Ptsv2paymentsTravelInformationAutoRental.
        Corporate Identifier provides the unique identifier of the corporation or entity renting the vehicle:  |Card Specific Validation|VISA|MasterCard|Discover|AMEX| |--- |--- |--- |--- | | Filed Length| NA| 12| NA| NA| | Field Type| NA| AN| NA| NA| | M/O/C| NA| O| NA| NA| 

        :return: The company_id of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._company_id

    @company_id.setter
    def company_id(self, company_id):
        """
        Sets the company_id of this Ptsv2paymentsTravelInformationAutoRental.
        Corporate Identifier provides the unique identifier of the corporation or entity renting the vehicle:  |Card Specific Validation|VISA|MasterCard|Discover|AMEX| |--- |--- |--- |--- | | Filed Length| NA| 12| NA| NA| | Field Type| NA| AN| NA| NA| | M/O/C| NA| O| NA| NA| 

        :param company_id: The company_id of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if company_id is not None and len(company_id) > 12:
            raise ValueError("Invalid value for `company_id`, length must be less than or equal to `12`")

        self._company_id = company_id

    @property
    def number_of_additional_drivers(self):
        """
        Gets the number_of_additional_drivers of this Ptsv2paymentsTravelInformationAutoRental.
        The number of additional drivers included on the rental agreement not including the individual who signed the rental agreement. 

        :return: The number_of_additional_drivers of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._number_of_additional_drivers

    @number_of_additional_drivers.setter
    def number_of_additional_drivers(self, number_of_additional_drivers):
        """
        Sets the number_of_additional_drivers of this Ptsv2paymentsTravelInformationAutoRental.
        The number of additional drivers included on the rental agreement not including the individual who signed the rental agreement. 

        :param number_of_additional_drivers: The number_of_additional_drivers of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if number_of_additional_drivers is not None and len(number_of_additional_drivers) > 1:
            raise ValueError("Invalid value for `number_of_additional_drivers`, length must be less than or equal to `1`")

        self._number_of_additional_drivers = number_of_additional_drivers

    @property
    def driver_age(self):
        """
        Gets the driver_age of this Ptsv2paymentsTravelInformationAutoRental.
        Age of the driver renting the vehicle. 

        :return: The driver_age of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._driver_age

    @driver_age.setter
    def driver_age(self, driver_age):
        """
        Sets the driver_age of this Ptsv2paymentsTravelInformationAutoRental.
        Age of the driver renting the vehicle. 

        :param driver_age: The driver_age of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if driver_age is not None and len(driver_age) > 3:
            raise ValueError("Invalid value for `driver_age`, length must be less than or equal to `3`")

        self._driver_age = driver_age

    @property
    def special_program_code(self):
        """
        Gets the special_program_code of this Ptsv2paymentsTravelInformationAutoRental.
        Program code used to identify special circumstances, such as “frequent renter” or “no show” status for the renter. Possible values: - `0`: not applicable (default) - `1`: frequent renter - `2`: no show  For authorizations, this field is supported only for Visa.  For captures, this field is supported for Visa, MasterCard, and American Express.  Code for special programs applicable to the Card Transaction or the Cardholder. 

        :return: The special_program_code of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._special_program_code

    @special_program_code.setter
    def special_program_code(self, special_program_code):
        """
        Sets the special_program_code of this Ptsv2paymentsTravelInformationAutoRental.
        Program code used to identify special circumstances, such as “frequent renter” or “no show” status for the renter. Possible values: - `0`: not applicable (default) - `1`: frequent renter - `2`: no show  For authorizations, this field is supported only for Visa.  For captures, this field is supported for Visa, MasterCard, and American Express.  Code for special programs applicable to the Card Transaction or the Cardholder. 

        :param special_program_code: The special_program_code of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if special_program_code is not None and len(special_program_code) > 2:
            raise ValueError("Invalid value for `special_program_code`, length must be less than or equal to `2`")

        self._special_program_code = special_program_code

    @property
    def vehicle_make(self):
        """
        Gets the vehicle_make of this Ptsv2paymentsTravelInformationAutoRental.
        Make of the vehicle being rented (e.g., Chevrolet or Ford). 

        :return: The vehicle_make of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._vehicle_make

    @vehicle_make.setter
    def vehicle_make(self, vehicle_make):
        """
        Sets the vehicle_make of this Ptsv2paymentsTravelInformationAutoRental.
        Make of the vehicle being rented (e.g., Chevrolet or Ford). 

        :param vehicle_make: The vehicle_make of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if vehicle_make is not None and len(vehicle_make) > 10:
            raise ValueError("Invalid value for `vehicle_make`, length must be less than or equal to `10`")

        self._vehicle_make = vehicle_make

    @property
    def vehicle_model(self):
        """
        Gets the vehicle_model of this Ptsv2paymentsTravelInformationAutoRental.
        Model of the vehicle being rented (e.g., Cavalier or Focus). 

        :return: The vehicle_model of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._vehicle_model

    @vehicle_model.setter
    def vehicle_model(self, vehicle_model):
        """
        Sets the vehicle_model of this Ptsv2paymentsTravelInformationAutoRental.
        Model of the vehicle being rented (e.g., Cavalier or Focus). 

        :param vehicle_model: The vehicle_model of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if vehicle_model is not None and len(vehicle_model) > 10:
            raise ValueError("Invalid value for `vehicle_model`, length must be less than or equal to `10`")

        self._vehicle_model = vehicle_model

    @property
    def time_period(self):
        """
        Gets the time_period of this Ptsv2paymentsTravelInformationAutoRental.
        Indicates the time period for which the vehicle rental rate applies (e.g., daily, weekly or monthly). Daily, Weekly and Monthly are valid values. 

        :return: The time_period of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._time_period

    @time_period.setter
    def time_period(self, time_period):
        """
        Sets the time_period of this Ptsv2paymentsTravelInformationAutoRental.
        Indicates the time period for which the vehicle rental rate applies (e.g., daily, weekly or monthly). Daily, Weekly and Monthly are valid values. 

        :param time_period: The time_period of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if time_period is not None and len(time_period) > 7:
            raise ValueError("Invalid value for `time_period`, length must be less than or equal to `7`")

        self._time_period = time_period

    @property
    def commodity_code(self):
        """
        Gets the commodity_code of this Ptsv2paymentsTravelInformationAutoRental.
        Commodity code or International description code used to classify the item. Contact your acquirer for a list of codes. 

        :return: The commodity_code of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._commodity_code

    @commodity_code.setter
    def commodity_code(self, commodity_code):
        """
        Sets the commodity_code of this Ptsv2paymentsTravelInformationAutoRental.
        Commodity code or International description code used to classify the item. Contact your acquirer for a list of codes. 

        :param commodity_code: The commodity_code of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if commodity_code is not None and len(commodity_code) > 15:
            raise ValueError("Invalid value for `commodity_code`, length must be less than or equal to `15`")

        self._commodity_code = commodity_code

    @property
    def customer_service_phone_number(self):
        """
        Gets the customer_service_phone_number of this Ptsv2paymentsTravelInformationAutoRental.
        Customer service telephone number that is used to resolve questions or disputes. Include the area code, exchange, and number. This field is supported only for MasterCard and American Express. 

        :return: The customer_service_phone_number of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._customer_service_phone_number

    @customer_service_phone_number.setter
    def customer_service_phone_number(self, customer_service_phone_number):
        """
        Sets the customer_service_phone_number of this Ptsv2paymentsTravelInformationAutoRental.
        Customer service telephone number that is used to resolve questions or disputes. Include the area code, exchange, and number. This field is supported only for MasterCard and American Express. 

        :param customer_service_phone_number: The customer_service_phone_number of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if customer_service_phone_number is not None and len(customer_service_phone_number) > 17:
            raise ValueError("Invalid value for `customer_service_phone_number`, length must be less than or equal to `17`")

        self._customer_service_phone_number = customer_service_phone_number

    @property
    def tax_details(self):
        """
        Gets the tax_details of this Ptsv2paymentsTravelInformationAutoRental.

        :return: The tax_details of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: Ptsv2paymentsTravelInformationAutoRentalTaxDetails
        """
        return self._tax_details

    @tax_details.setter
    def tax_details(self, tax_details):
        """
        Sets the tax_details of this Ptsv2paymentsTravelInformationAutoRental.

        :param tax_details: The tax_details of this Ptsv2paymentsTravelInformationAutoRental.
        :type: Ptsv2paymentsTravelInformationAutoRentalTaxDetails
        """

        self._tax_details = tax_details

    @property
    def insurance_amount(self):
        """
        Gets the insurance_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Insurance charges. Field is conditional and can include decimal point. 

        :return: The insurance_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._insurance_amount

    @insurance_amount.setter
    def insurance_amount(self, insurance_amount):
        """
        Sets the insurance_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Insurance charges. Field is conditional and can include decimal point. 

        :param insurance_amount: The insurance_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if insurance_amount is not None and len(insurance_amount) > 12:
            raise ValueError("Invalid value for `insurance_amount`, length must be less than or equal to `12`")

        self._insurance_amount = insurance_amount

    @property
    def one_way_drop_off_amount(self):
        """
        Gets the one_way_drop_off_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges incurred for a one-way rental agreement for the auto. This field is supported only for Visa. 

        :return: The one_way_drop_off_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._one_way_drop_off_amount

    @one_way_drop_off_amount.setter
    def one_way_drop_off_amount(self, one_way_drop_off_amount):
        """
        Sets the one_way_drop_off_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges incurred for a one-way rental agreement for the auto. This field is supported only for Visa. 

        :param one_way_drop_off_amount: The one_way_drop_off_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if one_way_drop_off_amount is not None and len(one_way_drop_off_amount) > 12:
            raise ValueError("Invalid value for `one_way_drop_off_amount`, length must be less than or equal to `12`")

        self._one_way_drop_off_amount = one_way_drop_off_amount

    @property
    def adjusted_amount_indicator(self):
        """
        Gets the adjusted_amount_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        For **MasterCard** and **Discover**: Adjusted amount indicator code that indicates any miscellaneous charges incurred after the auto was returned. Possible values: - `A` - Drop-off charges - `B` - Delivery charges - `C` - Parking expenses - `D` - Extra hours - `E` - Violations - `X` - More than one of the above charges  For **American Express**: Audit indicator code that indicates any adjustment for mileage, fuel, auto damage, etc. made to a rental agreement and whether the cardholder was notified.  Possible value for the authorization service: - `A` (default): adjustment amount greater than 0 (zero)  Possible values for the capture service: - `X` - Multiple adjustments - `Y` - One adjustment only; Cardmember notified - `Z` - One adjustment only; Cardmember not notified. This value is used as the default if the request does not include this field and includes an adjustment amount greater than 0 (zero). This is an optional field. 

        :return: The adjusted_amount_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._adjusted_amount_indicator

    @adjusted_amount_indicator.setter
    def adjusted_amount_indicator(self, adjusted_amount_indicator):
        """
        Sets the adjusted_amount_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        For **MasterCard** and **Discover**: Adjusted amount indicator code that indicates any miscellaneous charges incurred after the auto was returned. Possible values: - `A` - Drop-off charges - `B` - Delivery charges - `C` - Parking expenses - `D` - Extra hours - `E` - Violations - `X` - More than one of the above charges  For **American Express**: Audit indicator code that indicates any adjustment for mileage, fuel, auto damage, etc. made to a rental agreement and whether the cardholder was notified.  Possible value for the authorization service: - `A` (default): adjustment amount greater than 0 (zero)  Possible values for the capture service: - `X` - Multiple adjustments - `Y` - One adjustment only; Cardmember notified - `Z` - One adjustment only; Cardmember not notified. This value is used as the default if the request does not include this field and includes an adjustment amount greater than 0 (zero). This is an optional field. 

        :param adjusted_amount_indicator: The adjusted_amount_indicator of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if adjusted_amount_indicator is not None and len(adjusted_amount_indicator) > 1:
            raise ValueError("Invalid value for `adjusted_amount_indicator`, length must be less than or equal to `1`")

        self._adjusted_amount_indicator = adjusted_amount_indicator

    @property
    def adjusted_amount(self):
        """
        Gets the adjusted_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Adjusted Amount indicates whether any miscellaneous charges were incurred after the vehicle was returned.  For authorizations, this field is supported only for American Express.  For captures, this field is supported only for MasterCard and American Express. **NOTE** For American Express, this field is required if the `travelInformation.autoRental.adjustedAmountIndicator` field is included in the request and has a value; otherwise, this field is optional.  For all other card types, this field is ignored. 

        :return: The adjusted_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._adjusted_amount

    @adjusted_amount.setter
    def adjusted_amount(self, adjusted_amount):
        """
        Sets the adjusted_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Adjusted Amount indicates whether any miscellaneous charges were incurred after the vehicle was returned.  For authorizations, this field is supported only for American Express.  For captures, this field is supported only for MasterCard and American Express. **NOTE** For American Express, this field is required if the `travelInformation.autoRental.adjustedAmountIndicator` field is included in the request and has a value; otherwise, this field is optional.  For all other card types, this field is ignored. 

        :param adjusted_amount: The adjusted_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if adjusted_amount is not None and len(adjusted_amount) > 12:
            raise ValueError("Invalid value for `adjusted_amount`, length must be less than or equal to `12`")

        self._adjusted_amount = adjusted_amount

    @property
    def fuel_charges(self):
        """
        Gets the fuel_charges of this Ptsv2paymentsTravelInformationAutoRental.
        Extra gasoline charges that extend beyond the basic rental agreement. This field is supported only for Visa. 

        :return: The fuel_charges of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._fuel_charges

    @fuel_charges.setter
    def fuel_charges(self, fuel_charges):
        """
        Sets the fuel_charges of this Ptsv2paymentsTravelInformationAutoRental.
        Extra gasoline charges that extend beyond the basic rental agreement. This field is supported only for Visa. 

        :param fuel_charges: The fuel_charges of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if fuel_charges is not None and len(fuel_charges) > 12:
            raise ValueError("Invalid value for `fuel_charges`, length must be less than or equal to `12`")

        self._fuel_charges = fuel_charges

    @property
    def weekly_rental_rate(self):
        """
        Gets the weekly_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        Weekly Rental Amount provides the amount charged for a seven-day rental period. Field - Time Period needs to be populated with Weekly if this field is present 

        :return: The weekly_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._weekly_rental_rate

    @weekly_rental_rate.setter
    def weekly_rental_rate(self, weekly_rental_rate):
        """
        Sets the weekly_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        Weekly Rental Amount provides the amount charged for a seven-day rental period. Field - Time Period needs to be populated with Weekly if this field is present 

        :param weekly_rental_rate: The weekly_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if weekly_rental_rate is not None and len(weekly_rental_rate) > 12:
            raise ValueError("Invalid value for `weekly_rental_rate`, length must be less than or equal to `12`")

        self._weekly_rental_rate = weekly_rental_rate

    @property
    def daily_rental_rate(self):
        """
        Gets the daily_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        Daily auto rental rate charged. This field is supported only for MasterCard and American Express.  Field - Time Period needs to be populated with Daily if this field is present 

        :return: The daily_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._daily_rental_rate

    @daily_rental_rate.setter
    def daily_rental_rate(self, daily_rental_rate):
        """
        Sets the daily_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        Daily auto rental rate charged. This field is supported only for MasterCard and American Express.  Field - Time Period needs to be populated with Daily if this field is present 

        :param daily_rental_rate: The daily_rental_rate of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if daily_rental_rate is not None and len(daily_rental_rate) > 12:
            raise ValueError("Invalid value for `daily_rental_rate`, length must be less than or equal to `12`")

        self._daily_rental_rate = daily_rental_rate

    @property
    def rate_per_mile(self):
        """
        Gets the rate_per_mile of this Ptsv2paymentsTravelInformationAutoRental.
        Rate charged for each mile. This field is supported only for MasterCard and American Express. 

        :return: The rate_per_mile of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._rate_per_mile

    @rate_per_mile.setter
    def rate_per_mile(self, rate_per_mile):
        """
        Sets the rate_per_mile of this Ptsv2paymentsTravelInformationAutoRental.
        Rate charged for each mile. This field is supported only for MasterCard and American Express. 

        :param rate_per_mile: The rate_per_mile of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if rate_per_mile is not None and len(rate_per_mile) > 12:
            raise ValueError("Invalid value for `rate_per_mile`, length must be less than or equal to `12`")

        self._rate_per_mile = rate_per_mile

    @property
    def mileage_charge(self):
        """
        Gets the mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Regular Mileage Charge provides the amount charged for regular miles traveled during vehicle rental. Two decimal places 

        :return: The mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._mileage_charge

    @mileage_charge.setter
    def mileage_charge(self, mileage_charge):
        """
        Sets the mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Regular Mileage Charge provides the amount charged for regular miles traveled during vehicle rental. Two decimal places 

        :param mileage_charge: The mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if mileage_charge is not None and len(mileage_charge) > 12:
            raise ValueError("Invalid value for `mileage_charge`, length must be less than or equal to `12`")

        self._mileage_charge = mileage_charge

    @property
    def extra_mileage_charge(self):
        """
        Gets the extra_mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Extra mileage charges that extend beyond the basic rental agreement. This field is supported only for Visa. 

        :return: The extra_mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._extra_mileage_charge

    @extra_mileage_charge.setter
    def extra_mileage_charge(self, extra_mileage_charge):
        """
        Sets the extra_mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Extra mileage charges that extend beyond the basic rental agreement. This field is supported only for Visa. 

        :param extra_mileage_charge: The extra_mileage_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if extra_mileage_charge is not None and len(extra_mileage_charge) > 12:
            raise ValueError("Invalid value for `extra_mileage_charge`, length must be less than or equal to `12`")

        self._extra_mileage_charge = extra_mileage_charge

    @property
    def late_fee_amount(self):
        """
        Gets the late_fee_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges related to a late return of the rented auto. This field is supported only for Visa. 

        :return: The late_fee_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._late_fee_amount

    @late_fee_amount.setter
    def late_fee_amount(self, late_fee_amount):
        """
        Sets the late_fee_amount of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges related to a late return of the rented auto. This field is supported only for Visa. 

        :param late_fee_amount: The late_fee_amount of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if late_fee_amount is not None and len(late_fee_amount) > 12:
            raise ValueError("Invalid value for `late_fee_amount`, length must be less than or equal to `12`")

        self._late_fee_amount = late_fee_amount

    @property
    def towing_charge(self):
        """
        Gets the towing_charge of this Ptsv2paymentsTravelInformationAutoRental.
        (Towing Charges) provides the amount charged to tow the rental vehicle. 

        :return: The towing_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._towing_charge

    @towing_charge.setter
    def towing_charge(self, towing_charge):
        """
        Sets the towing_charge of this Ptsv2paymentsTravelInformationAutoRental.
        (Towing Charges) provides the amount charged to tow the rental vehicle. 

        :param towing_charge: The towing_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if towing_charge is not None and len(towing_charge) > 4:
            raise ValueError("Invalid value for `towing_charge`, length must be less than or equal to `4`")

        self._towing_charge = towing_charge

    @property
    def extra_charge(self):
        """
        Gets the extra_charge of this Ptsv2paymentsTravelInformationAutoRental.
        (Extra Charges) provides the extra charges associated with the vehicle rental. 

        :return: The extra_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._extra_charge

    @extra_charge.setter
    def extra_charge(self, extra_charge):
        """
        Sets the extra_charge of this Ptsv2paymentsTravelInformationAutoRental.
        (Extra Charges) provides the extra charges associated with the vehicle rental. 

        :param extra_charge: The extra_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if extra_charge is not None and len(extra_charge) > 12:
            raise ValueError("Invalid value for `extra_charge`, length must be less than or equal to `12`")

        self._extra_charge = extra_charge

    @property
    def gps_charge(self):
        """
        Gets the gps_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Amount charged for renting a Global Positioning Service (GPS). 

        :return: The gps_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._gps_charge

    @gps_charge.setter
    def gps_charge(self, gps_charge):
        """
        Sets the gps_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Amount charged for renting a Global Positioning Service (GPS). 

        :param gps_charge: The gps_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if gps_charge is not None and len(gps_charge) > 12:
            raise ValueError("Invalid value for `gps_charge`, length must be less than or equal to `12`")

        self._gps_charge = gps_charge

    @property
    def phone_charge(self):
        """
        Gets the phone_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Additional charges incurred for phone usage included on the total bill. 

        :return: The phone_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._phone_charge

    @phone_charge.setter
    def phone_charge(self, phone_charge):
        """
        Sets the phone_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Additional charges incurred for phone usage included on the total bill. 

        :param phone_charge: The phone_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if phone_charge is not None and len(phone_charge) > 12:
            raise ValueError("Invalid value for `phone_charge`, length must be less than or equal to `12`")

        self._phone_charge = phone_charge

    @property
    def parking_violation_charge(self):
        """
        Gets the parking_violation_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges incurred due to a parking violation for the auto. This field is supported only for Visa. 

        :return: The parking_violation_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._parking_violation_charge

    @parking_violation_charge.setter
    def parking_violation_charge(self, parking_violation_charge):
        """
        Sets the parking_violation_charge of this Ptsv2paymentsTravelInformationAutoRental.
        Extra charges incurred due to a parking violation for the auto. This field is supported only for Visa. 

        :param parking_violation_charge: The parking_violation_charge of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if parking_violation_charge is not None and len(parking_violation_charge) > 12:
            raise ValueError("Invalid value for `parking_violation_charge`, length must be less than or equal to `12`")

        self._parking_violation_charge = parking_violation_charge

    @property
    def other_charges(self):
        """
        Gets the other_charges of this Ptsv2paymentsTravelInformationAutoRental.
        Total amount charged for all other miscellaneous charges not previously defined. 

        :return: The other_charges of this Ptsv2paymentsTravelInformationAutoRental.
        :rtype: str
        """
        return self._other_charges

    @other_charges.setter
    def other_charges(self, other_charges):
        """
        Sets the other_charges of this Ptsv2paymentsTravelInformationAutoRental.
        Total amount charged for all other miscellaneous charges not previously defined. 

        :param other_charges: The other_charges of this Ptsv2paymentsTravelInformationAutoRental.
        :type: str
        """
        if other_charges is not None and len(other_charges) > 12:
            raise ValueError("Invalid value for `other_charges`, length must be less than or equal to `12`")

        self._other_charges = other_charges

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        if not isinstance(other, Ptsv2paymentsTravelInformationAutoRental):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """
        Returns true if both objects are not equal
        """
        return not self == other
