# coding: utf-8

"""
    Getir-Locals Integration Swagger Documentation

    This documentation is created by Getir Developers for Getir-Locals Integration.For this integration, you need to take CLIENT NAME and CLIENT SECRET keys from Getir-dev team and use these keys for authentication. You also need to use access token provided after successful login to be able to use all other endpoints  You can view information about the active order through /orders/unapproved endpoints. The status of the order is managed via verify, prepare, handover and cancel endpoints. Details on order management are as follows:  For orders to be made by the Getir courier, the flow is as follows:  Supplier confirms order --verify<br />Supplier prepares order --prepare (1-2 minutes must pass before delivery)<br />Supplier hands over the order to Getir courier --handover<br />For Getir delivery, transactions are made by the Getir courier after handover.  A valid reason will be requested from the supplier to cancel an order. Valid reasons may vary depending on the instant status of the order. For this reason, before canceling an order, you have to get instant valid order cancellation reasons from /orders/{orderId}/cancel-options endpoint.   # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class FilterLineOrderResponse(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 = {
        'id': 'str',
        'shop_id': 'str',
        'status': 'float',
        'checkout_date': 'str',
        'client_note': 'str',
        'confirmation_id': 'str',
        'total_price': 'float',
        'max_possible_amount_merchant_can_charge': 'float',
        'min_possible_amount_merchant_can_charge': 'float',
        'do_not_knock': 'bool',
        'drop_off_at_door': 'bool',
        'is_eco_friendly': 'bool',
        'delivery_type': 'int',
        'payment_method': 'int',
        'payment_method_text': 'PaymentMethodTextResponse',
        'customer': 'CustomerResponse',
        'invoice_address': 'InvoiceAddressResponse',
        'products': 'list[ProductResponse]'
    }

    attribute_map = {
        'id': 'id',
        'shop_id': 'shopId',
        'status': 'status',
        'checkout_date': 'checkoutDate',
        'client_note': 'clientNote',
        'confirmation_id': 'confirmationId',
        'total_price': 'totalPrice',
        'max_possible_amount_merchant_can_charge': 'maxPossibleAmountMerchantCanCharge',
        'min_possible_amount_merchant_can_charge': 'minPossibleAmountMerchantCanCharge',
        'do_not_knock': 'doNotKnock',
        'drop_off_at_door': 'dropOffAtDoor',
        'is_eco_friendly': 'isEcoFriendly',
        'delivery_type': 'deliveryType',
        'payment_method': 'paymentMethod',
        'payment_method_text': 'paymentMethodText',
        'customer': 'customer',
        'invoice_address': 'invoiceAddress',
        'products': 'products'
    }

    def __init__(self, id=None, shop_id=None, status=None, checkout_date=None, client_note=None, confirmation_id=None, total_price=None, max_possible_amount_merchant_can_charge=None, min_possible_amount_merchant_can_charge=None, do_not_knock=None, drop_off_at_door=None, is_eco_friendly=None, delivery_type=None, payment_method=None, payment_method_text=None, customer=None, invoice_address=None, products=None):  # noqa: E501
        """FilterLineOrderResponse - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._shop_id = None
        self._status = None
        self._checkout_date = None
        self._client_note = None
        self._confirmation_id = None
        self._total_price = None
        self._max_possible_amount_merchant_can_charge = None
        self._min_possible_amount_merchant_can_charge = None
        self._do_not_knock = None
        self._drop_off_at_door = None
        self._is_eco_friendly = None
        self._delivery_type = None
        self._payment_method = None
        self._payment_method_text = None
        self._customer = None
        self._invoice_address = None
        self._products = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if shop_id is not None:
            self.shop_id = shop_id
        if status is not None:
            self.status = status
        if checkout_date is not None:
            self.checkout_date = checkout_date
        if client_note is not None:
            self.client_note = client_note
        if confirmation_id is not None:
            self.confirmation_id = confirmation_id
        if total_price is not None:
            self.total_price = total_price
        if max_possible_amount_merchant_can_charge is not None:
            self.max_possible_amount_merchant_can_charge = max_possible_amount_merchant_can_charge
        if min_possible_amount_merchant_can_charge is not None:
            self.min_possible_amount_merchant_can_charge = min_possible_amount_merchant_can_charge
        if do_not_knock is not None:
            self.do_not_knock = do_not_knock
        if drop_off_at_door is not None:
            self.drop_off_at_door = drop_off_at_door
        if is_eco_friendly is not None:
            self.is_eco_friendly = is_eco_friendly
        if delivery_type is not None:
            self.delivery_type = delivery_type
        if payment_method is not None:
            self.payment_method = payment_method
        if payment_method_text is not None:
            self.payment_method_text = payment_method_text
        if customer is not None:
            self.customer = customer
        if invoice_address is not None:
            self.invoice_address = invoice_address
        if products is not None:
            self.products = products

    @property
    def id(self):
        """Gets the id of this FilterLineOrderResponse.  # noqa: E501


        :return: The id of this FilterLineOrderResponse.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this FilterLineOrderResponse.


        :param id: The id of this FilterLineOrderResponse.  # noqa: E501
        :type: str
        """

        self._id = id

    @property
    def shop_id(self):
        """Gets the shop_id of this FilterLineOrderResponse.  # noqa: E501


        :return: The shop_id of this FilterLineOrderResponse.  # noqa: E501
        :rtype: str
        """
        return self._shop_id

    @shop_id.setter
    def shop_id(self, shop_id):
        """Sets the shop_id of this FilterLineOrderResponse.


        :param shop_id: The shop_id of this FilterLineOrderResponse.  # noqa: E501
        :type: str
        """

        self._shop_id = shop_id

    @property
    def status(self):
        """Gets the status of this FilterLineOrderResponse.  # noqa: E501


        :return: The status of this FilterLineOrderResponse.  # noqa: E501
        :rtype: float
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this FilterLineOrderResponse.


        :param status: The status of this FilterLineOrderResponse.  # noqa: E501
        :type: float
        """

        self._status = status

    @property
    def checkout_date(self):
        """Gets the checkout_date of this FilterLineOrderResponse.  # noqa: E501


        :return: The checkout_date of this FilterLineOrderResponse.  # noqa: E501
        :rtype: str
        """
        return self._checkout_date

    @checkout_date.setter
    def checkout_date(self, checkout_date):
        """Sets the checkout_date of this FilterLineOrderResponse.


        :param checkout_date: The checkout_date of this FilterLineOrderResponse.  # noqa: E501
        :type: str
        """

        self._checkout_date = checkout_date

    @property
    def client_note(self):
        """Gets the client_note of this FilterLineOrderResponse.  # noqa: E501


        :return: The client_note of this FilterLineOrderResponse.  # noqa: E501
        :rtype: str
        """
        return self._client_note

    @client_note.setter
    def client_note(self, client_note):
        """Sets the client_note of this FilterLineOrderResponse.


        :param client_note: The client_note of this FilterLineOrderResponse.  # noqa: E501
        :type: str
        """

        self._client_note = client_note

    @property
    def confirmation_id(self):
        """Gets the confirmation_id of this FilterLineOrderResponse.  # noqa: E501


        :return: The confirmation_id of this FilterLineOrderResponse.  # noqa: E501
        :rtype: str
        """
        return self._confirmation_id

    @confirmation_id.setter
    def confirmation_id(self, confirmation_id):
        """Sets the confirmation_id of this FilterLineOrderResponse.


        :param confirmation_id: The confirmation_id of this FilterLineOrderResponse.  # noqa: E501
        :type: str
        """

        self._confirmation_id = confirmation_id

    @property
    def total_price(self):
        """Gets the total_price of this FilterLineOrderResponse.  # noqa: E501


        :return: The total_price of this FilterLineOrderResponse.  # noqa: E501
        :rtype: float
        """
        return self._total_price

    @total_price.setter
    def total_price(self, total_price):
        """Sets the total_price of this FilterLineOrderResponse.


        :param total_price: The total_price of this FilterLineOrderResponse.  # noqa: E501
        :type: float
        """

        self._total_price = total_price

    @property
    def max_possible_amount_merchant_can_charge(self):
        """Gets the max_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501


        :return: The max_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501
        :rtype: float
        """
        return self._max_possible_amount_merchant_can_charge

    @max_possible_amount_merchant_can_charge.setter
    def max_possible_amount_merchant_can_charge(self, max_possible_amount_merchant_can_charge):
        """Sets the max_possible_amount_merchant_can_charge of this FilterLineOrderResponse.


        :param max_possible_amount_merchant_can_charge: The max_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501
        :type: float
        """

        self._max_possible_amount_merchant_can_charge = max_possible_amount_merchant_can_charge

    @property
    def min_possible_amount_merchant_can_charge(self):
        """Gets the min_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501


        :return: The min_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501
        :rtype: float
        """
        return self._min_possible_amount_merchant_can_charge

    @min_possible_amount_merchant_can_charge.setter
    def min_possible_amount_merchant_can_charge(self, min_possible_amount_merchant_can_charge):
        """Sets the min_possible_amount_merchant_can_charge of this FilterLineOrderResponse.


        :param min_possible_amount_merchant_can_charge: The min_possible_amount_merchant_can_charge of this FilterLineOrderResponse.  # noqa: E501
        :type: float
        """

        self._min_possible_amount_merchant_can_charge = min_possible_amount_merchant_can_charge

    @property
    def do_not_knock(self):
        """Gets the do_not_knock of this FilterLineOrderResponse.  # noqa: E501


        :return: The do_not_knock of this FilterLineOrderResponse.  # noqa: E501
        :rtype: bool
        """
        return self._do_not_knock

    @do_not_knock.setter
    def do_not_knock(self, do_not_knock):
        """Sets the do_not_knock of this FilterLineOrderResponse.


        :param do_not_knock: The do_not_knock of this FilterLineOrderResponse.  # noqa: E501
        :type: bool
        """

        self._do_not_knock = do_not_knock

    @property
    def drop_off_at_door(self):
        """Gets the drop_off_at_door of this FilterLineOrderResponse.  # noqa: E501


        :return: The drop_off_at_door of this FilterLineOrderResponse.  # noqa: E501
        :rtype: bool
        """
        return self._drop_off_at_door

    @drop_off_at_door.setter
    def drop_off_at_door(self, drop_off_at_door):
        """Sets the drop_off_at_door of this FilterLineOrderResponse.


        :param drop_off_at_door: The drop_off_at_door of this FilterLineOrderResponse.  # noqa: E501
        :type: bool
        """

        self._drop_off_at_door = drop_off_at_door

    @property
    def is_eco_friendly(self):
        """Gets the is_eco_friendly of this FilterLineOrderResponse.  # noqa: E501


        :return: The is_eco_friendly of this FilterLineOrderResponse.  # noqa: E501
        :rtype: bool
        """
        return self._is_eco_friendly

    @is_eco_friendly.setter
    def is_eco_friendly(self, is_eco_friendly):
        """Sets the is_eco_friendly of this FilterLineOrderResponse.


        :param is_eco_friendly: The is_eco_friendly of this FilterLineOrderResponse.  # noqa: E501
        :type: bool
        """

        self._is_eco_friendly = is_eco_friendly

    @property
    def delivery_type(self):
        """Gets the delivery_type of this FilterLineOrderResponse.  # noqa: E501


        :return: The delivery_type of this FilterLineOrderResponse.  # noqa: E501
        :rtype: int
        """
        return self._delivery_type

    @delivery_type.setter
    def delivery_type(self, delivery_type):
        """Sets the delivery_type of this FilterLineOrderResponse.


        :param delivery_type: The delivery_type of this FilterLineOrderResponse.  # noqa: E501
        :type: int
        """

        self._delivery_type = delivery_type

    @property
    def payment_method(self):
        """Gets the payment_method of this FilterLineOrderResponse.  # noqa: E501


        :return: The payment_method of this FilterLineOrderResponse.  # noqa: E501
        :rtype: int
        """
        return self._payment_method

    @payment_method.setter
    def payment_method(self, payment_method):
        """Sets the payment_method of this FilterLineOrderResponse.


        :param payment_method: The payment_method of this FilterLineOrderResponse.  # noqa: E501
        :type: int
        """

        self._payment_method = payment_method

    @property
    def payment_method_text(self):
        """Gets the payment_method_text of this FilterLineOrderResponse.  # noqa: E501


        :return: The payment_method_text of this FilterLineOrderResponse.  # noqa: E501
        :rtype: PaymentMethodTextResponse
        """
        return self._payment_method_text

    @payment_method_text.setter
    def payment_method_text(self, payment_method_text):
        """Sets the payment_method_text of this FilterLineOrderResponse.


        :param payment_method_text: The payment_method_text of this FilterLineOrderResponse.  # noqa: E501
        :type: PaymentMethodTextResponse
        """

        self._payment_method_text = payment_method_text

    @property
    def customer(self):
        """Gets the customer of this FilterLineOrderResponse.  # noqa: E501


        :return: The customer of this FilterLineOrderResponse.  # noqa: E501
        :rtype: CustomerResponse
        """
        return self._customer

    @customer.setter
    def customer(self, customer):
        """Sets the customer of this FilterLineOrderResponse.


        :param customer: The customer of this FilterLineOrderResponse.  # noqa: E501
        :type: CustomerResponse
        """

        self._customer = customer

    @property
    def invoice_address(self):
        """Gets the invoice_address of this FilterLineOrderResponse.  # noqa: E501


        :return: The invoice_address of this FilterLineOrderResponse.  # noqa: E501
        :rtype: InvoiceAddressResponse
        """
        return self._invoice_address

    @invoice_address.setter
    def invoice_address(self, invoice_address):
        """Sets the invoice_address of this FilterLineOrderResponse.


        :param invoice_address: The invoice_address of this FilterLineOrderResponse.  # noqa: E501
        :type: InvoiceAddressResponse
        """

        self._invoice_address = invoice_address

    @property
    def products(self):
        """Gets the products of this FilterLineOrderResponse.  # noqa: E501


        :return: The products of this FilterLineOrderResponse.  # noqa: E501
        :rtype: list[ProductResponse]
        """
        return self._products

    @products.setter
    def products(self, products):
        """Sets the products of this FilterLineOrderResponse.


        :param products: The products of this FilterLineOrderResponse.  # noqa: E501
        :type: list[ProductResponse]
        """

        self._products = products

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

        for attr, _ in six.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
        if issubclass(FilterLineOrderResponse, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.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, FilterLineOrderResponse):
            return False

        return self.__dict__ == other.__dict__

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