# 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 Ptsv2payoutsProcessingInformationPayoutsOptions(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 = {
        'acquirer_merchant_id': 'str',
        'acquirer_bin': 'str',
        'retrieval_reference_number': 'str',
        'account_funding_reference_id': 'str'
    }

    attribute_map = {
        'acquirer_merchant_id': 'acquirerMerchantId',
        'acquirer_bin': 'acquirerBin',
        'retrieval_reference_number': 'retrievalReferenceNumber',
        'account_funding_reference_id': 'accountFundingReferenceId'
    }

    def __init__(self, acquirer_merchant_id=None, acquirer_bin=None, retrieval_reference_number=None, account_funding_reference_id=None):
        """
        Ptsv2payoutsProcessingInformationPayoutsOptions - a model defined in Swagger
        """

        self._acquirer_merchant_id = None
        self._acquirer_bin = None
        self._retrieval_reference_number = None
        self._account_funding_reference_id = None

        if acquirer_merchant_id is not None:
          self.acquirer_merchant_id = acquirer_merchant_id
        if acquirer_bin is not None:
          self.acquirer_bin = acquirer_bin
        if retrieval_reference_number is not None:
          self.retrieval_reference_number = retrieval_reference_number
        if account_funding_reference_id is not None:
          self.account_funding_reference_id = account_funding_reference_id

    @property
    def acquirer_merchant_id(self):
        """
        Gets the acquirer_merchant_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This field identifies the card acceptor for defining the point of service terminal in both local and interchange environments. An acquirer-assigned code identifying the card acceptor for the transaction.  Depending on the acquirer and merchant billing and reporting requirements, the code can represent a merchant, a specific merchant location, or a specific merchant location terminal. Acquiring Institution Identification Code uniquely identifies the merchant. The value from the original is required in any subsequent messages, including reversals, chargebacks, and representments. * Applicable only for CTV for Payouts. 

        :return: The acquirer_merchant_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        :rtype: str
        """
        return self._acquirer_merchant_id

    @acquirer_merchant_id.setter
    def acquirer_merchant_id(self, acquirer_merchant_id):
        """
        Sets the acquirer_merchant_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This field identifies the card acceptor for defining the point of service terminal in both local and interchange environments. An acquirer-assigned code identifying the card acceptor for the transaction.  Depending on the acquirer and merchant billing and reporting requirements, the code can represent a merchant, a specific merchant location, or a specific merchant location terminal. Acquiring Institution Identification Code uniquely identifies the merchant. The value from the original is required in any subsequent messages, including reversals, chargebacks, and representments. * Applicable only for CTV for Payouts. 

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

        self._acquirer_merchant_id = acquirer_merchant_id

    @property
    def acquirer_bin(self):
        """
        Gets the acquirer_bin of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This code identifies the financial institution acting as the acquirer of this customer transaction. The acquirer is the member or system user that signed the merchant or ADM or dispensed cash.  This number is usually Visa-assigned. * Applicable only for CTV for Payouts. 

        :return: The acquirer_bin of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        :rtype: str
        """
        return self._acquirer_bin

    @acquirer_bin.setter
    def acquirer_bin(self, acquirer_bin):
        """
        Sets the acquirer_bin of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This code identifies the financial institution acting as the acquirer of this customer transaction. The acquirer is the member or system user that signed the merchant or ADM or dispensed cash.  This number is usually Visa-assigned. * Applicable only for CTV for Payouts. 

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

        self._acquirer_bin = acquirer_bin

    @property
    def retrieval_reference_number(self):
        """
        Gets the retrieval_reference_number of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This field contains a number that is used with other data elements as a key to identify and track all messages related to a given cardholder transaction; that is, to a given transaction set.  Format:   Positions 1-4: The `yddd` equivalent of the date, where `y` = 0-9 and `ddd` = 001 – 366.   Positions 5-12: A unique identification number generated by the merchant  * Applicable only for CTV for Payouts. 

        :return: The retrieval_reference_number of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        :rtype: str
        """
        return self._retrieval_reference_number

    @retrieval_reference_number.setter
    def retrieval_reference_number(self, retrieval_reference_number):
        """
        Sets the retrieval_reference_number of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        This field contains a number that is used with other data elements as a key to identify and track all messages related to a given cardholder transaction; that is, to a given transaction set.  Format:   Positions 1-4: The `yddd` equivalent of the date, where `y` = 0-9 and `ddd` = 001 – 366.   Positions 5-12: A unique identification number generated by the merchant  * Applicable only for CTV for Payouts. 

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

        self._retrieval_reference_number = retrieval_reference_number

    @property
    def account_funding_reference_id(self):
        """
        Gets the account_funding_reference_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        Visa-generated transaction identifier (TID) that is unique for each original authorization and financial request. * Applicable only for CTV for Payouts. 

        :return: The account_funding_reference_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        :rtype: str
        """
        return self._account_funding_reference_id

    @account_funding_reference_id.setter
    def account_funding_reference_id(self, account_funding_reference_id):
        """
        Sets the account_funding_reference_id of this Ptsv2payoutsProcessingInformationPayoutsOptions.
        Visa-generated transaction identifier (TID) that is unique for each original authorization and financial request. * Applicable only for CTV for Payouts. 

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

        self._account_funding_reference_id = account_funding_reference_id

    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, Ptsv2payoutsProcessingInformationPayoutsOptions):
            return False

        return self.__dict__ == other.__dict__

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