# coding: utf-8

"""
    Mauve Admin API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class Product(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 = {
        'sku': 'str',
        'name': 'str',
        'product_type': 'str',
        'inactive': 'bool',
        'webshop_publish': 'bool',
        'webshop_sold_out': 'bool',
        'supplier_sold_out': 'bool',
        'purchase_quantity_min': 'float',
        'purchase_quantity_max': 'float',
        'purchase_quantity_warn': 'float',
        'description': 'str',
        'description_short': 'str',
        'additional_description': 'str',
        'note': 'str',
        'order_line_comment': 'str',
        'stock': 'float',
        'stock_external': 'float',
        'stock_available': 'float',
        'barcode': 'str',
        'packaging_information': 'PackagingInformation',
        'producer': 'Producer',
        'images': 'list[Image]',
        'prices': 'list[Price]',
        'prices_current': 'list[Price]',
        'vat_rate': 'float',
        'always_in_stock': 'bool',
        'bundle_skus': 'list[str]',
        'pharmacy_wholesaler_availabilities': 'list[PharmacyWholesalerAvailability]',
        'categories': 'list[Category]',
        'abda_artikelstamm': 'AbdaArtikelstamm',
        'abdata_laiendaten': 'AbdataLaiendaten',
        'abda_other_pack_sizes': 'list[AbdaOtherPackSize]',
        'bundle_items': 'list[BundleItem]',
        'translations': 'list[ProductTranslation]'
    }

    attribute_map = {
        'sku': 'sku',
        'name': 'name',
        'product_type': 'productType',
        'inactive': 'inactive',
        'webshop_publish': 'webshopPublish',
        'webshop_sold_out': 'webshopSoldOut',
        'supplier_sold_out': 'supplierSoldOut',
        'purchase_quantity_min': 'purchaseQuantityMin',
        'purchase_quantity_max': 'purchaseQuantityMax',
        'purchase_quantity_warn': 'purchaseQuantityWarn',
        'description': 'description',
        'description_short': 'descriptionShort',
        'additional_description': 'additionalDescription',
        'note': 'note',
        'order_line_comment': 'orderLineComment',
        'stock': 'stock',
        'stock_external': 'stockExternal',
        'stock_available': 'stockAvailable',
        'barcode': 'barcode',
        'packaging_information': 'packagingInformation',
        'producer': 'producer',
        'images': 'images',
        'prices': 'prices',
        'prices_current': 'pricesCurrent',
        'vat_rate': 'vatRate',
        'always_in_stock': 'alwaysInStock',
        'bundle_skus': 'bundleSkus',
        'pharmacy_wholesaler_availabilities': 'pharmacyWholesalerAvailabilities',
        'categories': 'categories',
        'abda_artikelstamm': 'abdaArtikelstamm',
        'abdata_laiendaten': 'abdataLaiendaten',
        'abda_other_pack_sizes': 'abdaOtherPackSizes',
        'bundle_items': 'bundleItems',
        'translations': 'translations'
    }

    def __init__(self, sku=None, name=None, product_type=None, inactive=None, webshop_publish=None, webshop_sold_out=None, supplier_sold_out=None, purchase_quantity_min=None, purchase_quantity_max=None, purchase_quantity_warn=None, description=None, description_short=None, additional_description=None, note=None, order_line_comment=None, stock=None, stock_external=None, stock_available=None, barcode=None, packaging_information=None, producer=None, images=None, prices=None, prices_current=None, vat_rate=None, always_in_stock=None, bundle_skus=None, pharmacy_wholesaler_availabilities=None, categories=None, abda_artikelstamm=None, abdata_laiendaten=None, abda_other_pack_sizes=None, bundle_items=None, translations=None):  # noqa: E501
        """Product - a model defined in Swagger"""  # noqa: E501
        self._sku = None
        self._name = None
        self._product_type = None
        self._inactive = None
        self._webshop_publish = None
        self._webshop_sold_out = None
        self._supplier_sold_out = None
        self._purchase_quantity_min = None
        self._purchase_quantity_max = None
        self._purchase_quantity_warn = None
        self._description = None
        self._description_short = None
        self._additional_description = None
        self._note = None
        self._order_line_comment = None
        self._stock = None
        self._stock_external = None
        self._stock_available = None
        self._barcode = None
        self._packaging_information = None
        self._producer = None
        self._images = None
        self._prices = None
        self._prices_current = None
        self._vat_rate = None
        self._always_in_stock = None
        self._bundle_skus = None
        self._pharmacy_wholesaler_availabilities = None
        self._categories = None
        self._abda_artikelstamm = None
        self._abdata_laiendaten = None
        self._abda_other_pack_sizes = None
        self._bundle_items = None
        self._translations = None
        self.discriminator = None
        if sku is not None:
            self.sku = sku
        if name is not None:
            self.name = name
        if product_type is not None:
            self.product_type = product_type
        if inactive is not None:
            self.inactive = inactive
        if webshop_publish is not None:
            self.webshop_publish = webshop_publish
        if webshop_sold_out is not None:
            self.webshop_sold_out = webshop_sold_out
        if supplier_sold_out is not None:
            self.supplier_sold_out = supplier_sold_out
        if purchase_quantity_min is not None:
            self.purchase_quantity_min = purchase_quantity_min
        if purchase_quantity_max is not None:
            self.purchase_quantity_max = purchase_quantity_max
        if purchase_quantity_warn is not None:
            self.purchase_quantity_warn = purchase_quantity_warn
        if description is not None:
            self.description = description
        if description_short is not None:
            self.description_short = description_short
        if additional_description is not None:
            self.additional_description = additional_description
        if note is not None:
            self.note = note
        if order_line_comment is not None:
            self.order_line_comment = order_line_comment
        if stock is not None:
            self.stock = stock
        if stock_external is not None:
            self.stock_external = stock_external
        if stock_available is not None:
            self.stock_available = stock_available
        if barcode is not None:
            self.barcode = barcode
        if packaging_information is not None:
            self.packaging_information = packaging_information
        if producer is not None:
            self.producer = producer
        if images is not None:
            self.images = images
        if prices is not None:
            self.prices = prices
        if prices_current is not None:
            self.prices_current = prices_current
        if vat_rate is not None:
            self.vat_rate = vat_rate
        if always_in_stock is not None:
            self.always_in_stock = always_in_stock
        if bundle_skus is not None:
            self.bundle_skus = bundle_skus
        if pharmacy_wholesaler_availabilities is not None:
            self.pharmacy_wholesaler_availabilities = pharmacy_wholesaler_availabilities
        if categories is not None:
            self.categories = categories
        if abda_artikelstamm is not None:
            self.abda_artikelstamm = abda_artikelstamm
        if abdata_laiendaten is not None:
            self.abdata_laiendaten = abdata_laiendaten
        if abda_other_pack_sizes is not None:
            self.abda_other_pack_sizes = abda_other_pack_sizes
        if bundle_items is not None:
            self.bundle_items = bundle_items
        if translations is not None:
            self.translations = translations

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

        Stock Keeping Unit (e.g. PZN)  # noqa: E501

        :return: The sku of this Product.  # noqa: E501
        :rtype: str
        """
        return self._sku

    @sku.setter
    def sku(self, sku):
        """Sets the sku of this Product.

        Stock Keeping Unit (e.g. PZN)  # noqa: E501

        :param sku: The sku of this Product.  # noqa: E501
        :type: str
        """

        self._sku = sku

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

        The product name in the base language  # noqa: E501

        :return: The name of this Product.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this Product.

        The product name in the base language  # noqa: E501

        :param name: The name of this Product.  # noqa: E501
        :type: str
        """

        self._name = name

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

        A categorization for the product (possible values: Normal, Master, BundleItem, Serie, Konfigurierbar, ShippingItem, PaymentItem)  # noqa: E501

        :return: The product_type of this Product.  # noqa: E501
        :rtype: str
        """
        return self._product_type

    @product_type.setter
    def product_type(self, product_type):
        """Sets the product_type of this Product.

        A categorization for the product (possible values: Normal, Master, BundleItem, Serie, Konfigurierbar, ShippingItem, PaymentItem)  # noqa: E501

        :param product_type: The product_type of this Product.  # noqa: E501
        :type: str
        """

        self._product_type = product_type

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

        Indicates whether the product is marked as inactive and is no longer available for selling  # noqa: E501

        :return: The inactive of this Product.  # noqa: E501
        :rtype: bool
        """
        return self._inactive

    @inactive.setter
    def inactive(self, inactive):
        """Sets the inactive of this Product.

        Indicates whether the product is marked as inactive and is no longer available for selling  # noqa: E501

        :param inactive: The inactive of this Product.  # noqa: E501
        :type: bool
        """

        self._inactive = inactive

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

        Indicates whether the product should be published in the webshop  # noqa: E501

        :return: The webshop_publish of this Product.  # noqa: E501
        :rtype: bool
        """
        return self._webshop_publish

    @webshop_publish.setter
    def webshop_publish(self, webshop_publish):
        """Sets the webshop_publish of this Product.

        Indicates whether the product should be published in the webshop  # noqa: E501

        :param webshop_publish: The webshop_publish of this Product.  # noqa: E501
        :type: bool
        """

        self._webshop_publish = webshop_publish

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

        Indicates whether the product is marked as sold out in the webshop  # noqa: E501

        :return: The webshop_sold_out of this Product.  # noqa: E501
        :rtype: bool
        """
        return self._webshop_sold_out

    @webshop_sold_out.setter
    def webshop_sold_out(self, webshop_sold_out):
        """Sets the webshop_sold_out of this Product.

        Indicates whether the product is marked as sold out in the webshop  # noqa: E501

        :param webshop_sold_out: The webshop_sold_out of this Product.  # noqa: E501
        :type: bool
        """

        self._webshop_sold_out = webshop_sold_out

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

        Indicates whether the product is marked as sold out by the supplier  # noqa: E501

        :return: The supplier_sold_out of this Product.  # noqa: E501
        :rtype: bool
        """
        return self._supplier_sold_out

    @supplier_sold_out.setter
    def supplier_sold_out(self, supplier_sold_out):
        """Sets the supplier_sold_out of this Product.

        Indicates whether the product is marked as sold out by the supplier  # noqa: E501

        :param supplier_sold_out: The supplier_sold_out of this Product.  # noqa: E501
        :type: bool
        """

        self._supplier_sold_out = supplier_sold_out

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


        :return: The purchase_quantity_min of this Product.  # noqa: E501
        :rtype: float
        """
        return self._purchase_quantity_min

    @purchase_quantity_min.setter
    def purchase_quantity_min(self, purchase_quantity_min):
        """Sets the purchase_quantity_min of this Product.


        :param purchase_quantity_min: The purchase_quantity_min of this Product.  # noqa: E501
        :type: float
        """

        self._purchase_quantity_min = purchase_quantity_min

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


        :return: The purchase_quantity_max of this Product.  # noqa: E501
        :rtype: float
        """
        return self._purchase_quantity_max

    @purchase_quantity_max.setter
    def purchase_quantity_max(self, purchase_quantity_max):
        """Sets the purchase_quantity_max of this Product.


        :param purchase_quantity_max: The purchase_quantity_max of this Product.  # noqa: E501
        :type: float
        """

        self._purchase_quantity_max = purchase_quantity_max

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


        :return: The purchase_quantity_warn of this Product.  # noqa: E501
        :rtype: float
        """
        return self._purchase_quantity_warn

    @purchase_quantity_warn.setter
    def purchase_quantity_warn(self, purchase_quantity_warn):
        """Sets the purchase_quantity_warn of this Product.


        :param purchase_quantity_warn: The purchase_quantity_warn of this Product.  # noqa: E501
        :type: float
        """

        self._purchase_quantity_warn = purchase_quantity_warn

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

        The product description in the base language  # noqa: E501

        :return: The description of this Product.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this Product.

        The product description in the base language  # noqa: E501

        :param description: The description of this Product.  # noqa: E501
        :type: str
        """

        self._description = description

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

        The product short description in the base language  # noqa: E501

        :return: The description_short of this Product.  # noqa: E501
        :rtype: str
        """
        return self._description_short

    @description_short.setter
    def description_short(self, description_short):
        """Sets the description_short of this Product.

        The product short description in the base language  # noqa: E501

        :param description_short: The description_short of this Product.  # noqa: E501
        :type: str
        """

        self._description_short = description_short

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

        The product additional description in the base language  # noqa: E501

        :return: The additional_description of this Product.  # noqa: E501
        :rtype: str
        """
        return self._additional_description

    @additional_description.setter
    def additional_description(self, additional_description):
        """Sets the additional_description of this Product.

        The product additional description in the base language  # noqa: E501

        :param additional_description: The additional_description of this Product.  # noqa: E501
        :type: str
        """

        self._additional_description = additional_description

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

        The product note in the base language  # noqa: E501

        :return: The note of this Product.  # noqa: E501
        :rtype: str
        """
        return self._note

    @note.setter
    def note(self, note):
        """Sets the note of this Product.

        The product note in the base language  # noqa: E501

        :param note: The note of this Product.  # noqa: E501
        :type: str
        """

        self._note = note

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

        The product order line comment in the base language  # noqa: E501

        :return: The order_line_comment of this Product.  # noqa: E501
        :rtype: str
        """
        return self._order_line_comment

    @order_line_comment.setter
    def order_line_comment(self, order_line_comment):
        """Sets the order_line_comment of this Product.

        The product order line comment in the base language  # noqa: E501

        :param order_line_comment: The order_line_comment of this Product.  # noqa: E501
        :type: str
        """

        self._order_line_comment = order_line_comment

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

        The calculated stock (not writable)  # noqa: E501

        :return: The stock of this Product.  # noqa: E501
        :rtype: float
        """
        return self._stock

    @stock.setter
    def stock(self, stock):
        """Sets the stock of this Product.

        The calculated stock (not writable)  # noqa: E501

        :param stock: The stock of this Product.  # noqa: E501
        :type: float
        """

        self._stock = stock

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

        The reported Stock from external systems  # noqa: E501

        :return: The stock_external of this Product.  # noqa: E501
        :rtype: float
        """
        return self._stock_external

    @stock_external.setter
    def stock_external(self, stock_external):
        """Sets the stock_external of this Product.

        The reported Stock from external systems  # noqa: E501

        :param stock_external: The stock_external of this Product.  # noqa: E501
        :type: float
        """

        self._stock_external = stock_external

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

        The available stock based on the calculated stock considering reserved items (not writable)  # noqa: E501

        :return: The stock_available of this Product.  # noqa: E501
        :rtype: float
        """
        return self._stock_available

    @stock_available.setter
    def stock_available(self, stock_available):
        """Sets the stock_available of this Product.

        The available stock based on the calculated stock considering reserved items (not writable)  # noqa: E501

        :param stock_available: The stock_available of this Product.  # noqa: E501
        :type: float
        """

        self._stock_available = stock_available

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

        An alphanumeric code to identify the product (e.g. EAN, GTIN, ASIN, IBAN)  # noqa: E501

        :return: The barcode of this Product.  # noqa: E501
        :rtype: str
        """
        return self._barcode

    @barcode.setter
    def barcode(self, barcode):
        """Sets the barcode of this Product.

        An alphanumeric code to identify the product (e.g. EAN, GTIN, ASIN, IBAN)  # noqa: E501

        :param barcode: The barcode of this Product.  # noqa: E501
        :type: str
        """

        self._barcode = barcode

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


        :return: The packaging_information of this Product.  # noqa: E501
        :rtype: PackagingInformation
        """
        return self._packaging_information

    @packaging_information.setter
    def packaging_information(self, packaging_information):
        """Sets the packaging_information of this Product.


        :param packaging_information: The packaging_information of this Product.  # noqa: E501
        :type: PackagingInformation
        """

        self._packaging_information = packaging_information

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


        :return: The producer of this Product.  # noqa: E501
        :rtype: Producer
        """
        return self._producer

    @producer.setter
    def producer(self, producer):
        """Sets the producer of this Product.


        :param producer: The producer of this Product.  # noqa: E501
        :type: Producer
        """

        self._producer = producer

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

        List of all product images (requires include parameter \"images\")  # noqa: E501

        :return: The images of this Product.  # noqa: E501
        :rtype: list[Image]
        """
        return self._images

    @images.setter
    def images(self, images):
        """Sets the images of this Product.

        List of all product images (requires include parameter \"images\")  # noqa: E501

        :param images: The images of this Product.  # noqa: E501
        :type: list[Image]
        """

        self._images = images

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

        List of all prices (requires include parameter \"prices\")  # noqa: E501

        :return: The prices of this Product.  # noqa: E501
        :rtype: list[Price]
        """
        return self._prices

    @prices.setter
    def prices(self, prices):
        """Sets the prices of this Product.

        List of all prices (requires include parameter \"prices\")  # noqa: E501

        :param prices: The prices of this Product.  # noqa: E501
        :type: list[Price]
        """

        self._prices = prices

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

        List of most current price per price group (requires include parameter \"prices_current\")  # noqa: E501

        :return: The prices_current of this Product.  # noqa: E501
        :rtype: list[Price]
        """
        return self._prices_current

    @prices_current.setter
    def prices_current(self, prices_current):
        """Sets the prices_current of this Product.

        List of most current price per price group (requires include parameter \"prices_current\")  # noqa: E501

        :param prices_current: The prices_current of this Product.  # noqa: E501
        :type: list[Price]
        """

        self._prices_current = prices_current

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

        Value added tax rate applied on product  # noqa: E501

        :return: The vat_rate of this Product.  # noqa: E501
        :rtype: float
        """
        return self._vat_rate

    @vat_rate.setter
    def vat_rate(self, vat_rate):
        """Sets the vat_rate of this Product.

        Value added tax rate applied on product  # noqa: E501

        :param vat_rate: The vat_rate of this Product.  # noqa: E501
        :type: float
        """

        self._vat_rate = vat_rate

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

        Indicates whether this product is marked as always in stock (in Mauve System3: Lagerartikel)  # noqa: E501

        :return: The always_in_stock of this Product.  # noqa: E501
        :rtype: bool
        """
        return self._always_in_stock

    @always_in_stock.setter
    def always_in_stock(self, always_in_stock):
        """Sets the always_in_stock of this Product.

        Indicates whether this product is marked as always in stock (in Mauve System3: Lagerartikel)  # noqa: E501

        :param always_in_stock: The always_in_stock of this Product.  # noqa: E501
        :type: bool
        """

        self._always_in_stock = always_in_stock

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

        Stock Keeping Unit of the bundles containing this product (requires include parameter \"bundles\")  # noqa: E501

        :return: The bundle_skus of this Product.  # noqa: E501
        :rtype: list[str]
        """
        return self._bundle_skus

    @bundle_skus.setter
    def bundle_skus(self, bundle_skus):
        """Sets the bundle_skus of this Product.

        Stock Keeping Unit of the bundles containing this product (requires include parameter \"bundles\")  # noqa: E501

        :param bundle_skus: The bundle_skus of this Product.  # noqa: E501
        :type: list[str]
        """

        self._bundle_skus = bundle_skus

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

        List of pharmacy wholesalers where the product is available (requires include parameter \"pharmacy_wholesaler_availabilities\")  # noqa: E501

        :return: The pharmacy_wholesaler_availabilities of this Product.  # noqa: E501
        :rtype: list[PharmacyWholesalerAvailability]
        """
        return self._pharmacy_wholesaler_availabilities

    @pharmacy_wholesaler_availabilities.setter
    def pharmacy_wholesaler_availabilities(self, pharmacy_wholesaler_availabilities):
        """Sets the pharmacy_wholesaler_availabilities of this Product.

        List of pharmacy wholesalers where the product is available (requires include parameter \"pharmacy_wholesaler_availabilities\")  # noqa: E501

        :param pharmacy_wholesaler_availabilities: The pharmacy_wholesaler_availabilities of this Product.  # noqa: E501
        :type: list[PharmacyWholesalerAvailability]
        """

        self._pharmacy_wholesaler_availabilities = pharmacy_wholesaler_availabilities

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

        List of all categories for the given ShopId (requires include parameter \"categories\")  # noqa: E501

        :return: The categories of this Product.  # noqa: E501
        :rtype: list[Category]
        """
        return self._categories

    @categories.setter
    def categories(self, categories):
        """Sets the categories of this Product.

        List of all categories for the given ShopId (requires include parameter \"categories\")  # noqa: E501

        :param categories: The categories of this Product.  # noqa: E501
        :type: list[Category]
        """

        self._categories = categories

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


        :return: The abda_artikelstamm of this Product.  # noqa: E501
        :rtype: AbdaArtikelstamm
        """
        return self._abda_artikelstamm

    @abda_artikelstamm.setter
    def abda_artikelstamm(self, abda_artikelstamm):
        """Sets the abda_artikelstamm of this Product.


        :param abda_artikelstamm: The abda_artikelstamm of this Product.  # noqa: E501
        :type: AbdaArtikelstamm
        """

        self._abda_artikelstamm = abda_artikelstamm

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


        :return: The abdata_laiendaten of this Product.  # noqa: E501
        :rtype: AbdataLaiendaten
        """
        return self._abdata_laiendaten

    @abdata_laiendaten.setter
    def abdata_laiendaten(self, abdata_laiendaten):
        """Sets the abdata_laiendaten of this Product.


        :param abdata_laiendaten: The abdata_laiendaten of this Product.  # noqa: E501
        :type: AbdataLaiendaten
        """

        self._abdata_laiendaten = abdata_laiendaten

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

        List of other pack sizes of this product (https://abdata.de/produkte/abda-artikelstamm/) (requires include parameter \"abda_other_pack_sizes\")  # noqa: E501

        :return: The abda_other_pack_sizes of this Product.  # noqa: E501
        :rtype: list[AbdaOtherPackSize]
        """
        return self._abda_other_pack_sizes

    @abda_other_pack_sizes.setter
    def abda_other_pack_sizes(self, abda_other_pack_sizes):
        """Sets the abda_other_pack_sizes of this Product.

        List of other pack sizes of this product (https://abdata.de/produkte/abda-artikelstamm/) (requires include parameter \"abda_other_pack_sizes\")  # noqa: E501

        :param abda_other_pack_sizes: The abda_other_pack_sizes of this Product.  # noqa: E501
        :type: list[AbdaOtherPackSize]
        """

        self._abda_other_pack_sizes = abda_other_pack_sizes

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

        List of items in this product bundle (requires include parameter \"bundles\")  # noqa: E501

        :return: The bundle_items of this Product.  # noqa: E501
        :rtype: list[BundleItem]
        """
        return self._bundle_items

    @bundle_items.setter
    def bundle_items(self, bundle_items):
        """Sets the bundle_items of this Product.

        List of items in this product bundle (requires include parameter \"bundles\")  # noqa: E501

        :param bundle_items: The bundle_items of this Product.  # noqa: E501
        :type: list[BundleItem]
        """

        self._bundle_items = bundle_items

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

        List of translations of the product (requires include parameter \"translations\")  # noqa: E501

        :return: The translations of this Product.  # noqa: E501
        :rtype: list[ProductTranslation]
        """
        return self._translations

    @translations.setter
    def translations(self, translations):
        """Sets the translations of this Product.

        List of translations of the product (requires include parameter \"translations\")  # noqa: E501

        :param translations: The translations of this Product.  # noqa: E501
        :type: list[ProductTranslation]
        """

        self._translations = translations

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

        return self.__dict__ == other.__dict__

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