from ya_market_api.base.enum_toolkit import allow_unknown

from enum import Enum


@allow_unknown
class PaymentMethod(Enum):
	YANDEX = "YANDEX"		# банковской картой.
	APPLE_PAY = "APPLE_PAY"		# Apple Pay.
	GOOGLE_PAY = "GOOGLE_PAY"		# Google Pay.
	CREDIT = "CREDIT"		# в кредит.
	TINKOFF_CREDIT = "TINKOFF_CREDIT"		# в кредит в Тинькофф Банке.
	TINKOFF_INSTALLMENTS = "TINKOFF_INSTALLMENTS"		# рассрочка в Тинькофф Банке.
	EXTERNAL_CERTIFICATE = "EXTERNAL_CERTIFICATE"		# подарочным сертификатом (например, из приложения «Сбербанк Онлайн»).
	SBP = "SBP"		# через систему быстрых платежей.
	B2B_ACCOUNT_PREPAYMENT = "B2B_ACCOUNT_PREPAYMENT"		# заказ оплачивает организация.
	CARD_ON_DELIVERY = "CARD_ON_DELIVERY"		# банковской картой.
	BOUND_CARD_ON_DELIVERY = "BOUND_CARD_ON_DELIVERY"		# привязанной картой при получении.
	BNPL_BANK_ON_DELIVERY = "BNPL_BANK_ON_DELIVERY"		# супер Сплитом.
	BNPL_ON_DELIVERY = "BNPL_ON_DELIVERY"		# Сплитом.
	CASH_ON_DELIVERY = "CASH_ON_DELIVERY"		# наличными.
	B2B_ACCOUNT_POSTPAYMENT = "B2B_ACCOUNT_POSTPAYMENT"		# заказ оплачивает организация после доставки.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class PaymentType(Enum):
	PREPAID = "PREPAID"		# оплата при оформлении заказа.
	POSTPAID = "POSTPAID"		# оплата при получении заказа.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class OrderStatus(Enum):
	PLACING = "PLACING"		# оформляется, подготовка к резервированию.
	RESERVED = "RESERVED"		# зарезервирован, но недооформлен.
	UNPAID = "UNPAID"		# оформлен, но еще не оплачен (если выбрана оплата при оформлении).
	PROCESSING = "PROCESSING"		# находится в обработке.
	DELIVERY = "DELIVERY"		# передан в службу доставки.
	PICKUP = "PICKUP"		# доставлен в пункт самовывоза.
	DELIVERED = "DELIVERED"		# получен покупателем.
	CANCELLED = "CANCELLED"		# отменен.
	PENDING = "PENDING"		# ожидает обработки со стороны продавца.
	PARTIALLY_RETURNED = "PARTIALLY_RETURNED"		# возвращен частично.
	RETURNED = "RETURNED"		# возвращен полностью.
	UNKNOWN = "UNKNOWN"		# неизвестный статус.


@allow_unknown
class OrderSubstatus(Enum):
	RESERVATION_EXPIRED = "RESERVATION_EXPIRED"
	USER_NOT_PAID = "USER_NOT_PAID"
	USER_UNREACHABLE = "USER_UNREACHABLE"
	USER_CHANGED_MIND = "USER_CHANGED_MIND"
	USER_REFUSED_DELIVERY = "USER_REFUSED_DELIVERY"
	USER_REFUSED_PRODUCT = "USER_REFUSED_PRODUCT"
	SHOP_FAILED = "SHOP_FAILED"
	USER_REFUSED_QUALITY = "USER_REFUSED_QUALITY"
	REPLACING_ORDER = "REPLACING_ORDER"
	PROCESSING_EXPIRED = "PROCESSING_EXPIRED"
	PENDING_EXPIRED = "PENDING_EXPIRED"
	SHOP_PENDING_CANCELLED = "SHOP_PENDING_CANCELLED"
	PENDING_CANCELLED = "PENDING_CANCELLED"
	USER_FRAUD = "USER_FRAUD"
	RESERVATION_FAILED = "RESERVATION_FAILED"
	USER_PLACED_OTHER_ORDER = "USER_PLACED_OTHER_ORDER"
	USER_BOUGHT_CHEAPER = "USER_BOUGHT_CHEAPER"
	MISSING_ITEM = "MISSING_ITEM"
	BROKEN_ITEM = "BROKEN_ITEM"
	WRONG_ITEM = "WRONG_ITEM"
	PICKUP_EXPIRED = "PICKUP_EXPIRED"
	DELIVERY_PROBLEMS = "DELIVERY_PROBLEMS"
	LATE_CONTACT = "LATE_CONTACT"
	CUSTOM = "CUSTOM"
	DELIVERY_SERVICE_FAILED = "DELIVERY_SERVICE_FAILED"
	WAREHOUSE_FAILED_TO_SHIP = "WAREHOUSE_FAILED_TO_SHIP"
	DELIVERY_SERVICE_UNDELIVERED = "DELIVERY_SERVICE_UNDELIVERED"
	PREORDER = "PREORDER"
	AWAIT_CONFIRMATION = "AWAIT_CONFIRMATION"
	STARTED = "STARTED"
	PACKAGING = "PACKAGING"
	READY_TO_SHIP = "READY_TO_SHIP"
	SHIPPED = "SHIPPED"
	ASYNC_PROCESSING = "ASYNC_PROCESSING"
	WAITING_USER_INPUT = "WAITING_USER_INPUT"
	WAITING_BANK_DECISION = "WAITING_BANK_DECISION"
	BANK_REJECT_CREDIT_OFFER = "BANK_REJECT_CREDIT_OFFER"
	CUSTOMER_REJECT_CREDIT_OFFER = "CUSTOMER_REJECT_CREDIT_OFFER"
	CREDIT_OFFER_FAILED = "CREDIT_OFFER_FAILED"
	AWAIT_DELIVERY_DATES_CONFIRMATION = "AWAIT_DELIVERY_DATES_CONFIRMATION"
	SERVICE_FAULT = "SERVICE_FAULT"
	DELIVERY_SERVICE_RECEIVED = "DELIVERY_SERVICE_RECEIVED"
	USER_RECEIVED = "USER_RECEIVED"
	WAITING_FOR_STOCKS = "WAITING_FOR_STOCKS"
	AS_PART_OF_MULTI_ORDER = "AS_PART_OF_MULTI_ORDER"
	READY_FOR_LAST_MILE = "READY_FOR_LAST_MILE"
	LAST_MILE_STARTED = "LAST_MILE_STARTED"
	ANTIFRAUD = "ANTIFRAUD"
	DELIVERY_USER_NOT_RECEIVED = "DELIVERY_USER_NOT_RECEIVED"
	DELIVERY_SERVICE_DELIVERED = "DELIVERY_SERVICE_DELIVERED"
	DELIVERED_USER_NOT_RECEIVED = "DELIVERED_USER_NOT_RECEIVED"
	USER_WANTED_ANOTHER_PAYMENT_METHOD = "USER_WANTED_ANOTHER_PAYMENT_METHOD"
	USER_RECEIVED_TECHNICAL_ERROR = "USER_RECEIVED_TECHNICAL_ERROR"
	USER_FORGOT_TO_USE_BONUS = "USER_FORGOT_TO_USE_BONUS"
	DELIVERY_SERVICE_NOT_RECEIVED = "DELIVERY_SERVICE_NOT_RECEIVED"
	DELIVERY_SERVICE_LOST = "DELIVERY_SERVICE_LOST"
	SHIPPED_TO_WRONG_DELIVERY_SERVICE = "SHIPPED_TO_WRONG_DELIVERY_SERVICE"
	DELIVERED_USER_RECEIVED = "DELIVERED_USER_RECEIVED"
	WAITING_TINKOFF_DECISION = "WAITING_TINKOFF_DECISION"
	COURIER_SEARCH = "COURIER_SEARCH"
	COURIER_FOUND = "COURIER_FOUND"
	COURIER_IN_TRANSIT_TO_SENDER = "COURIER_IN_TRANSIT_TO_SENDER"
	COURIER_ARRIVED_TO_SENDER = "COURIER_ARRIVED_TO_SENDER"
	COURIER_RECEIVED = "COURIER_RECEIVED"
	COURIER_NOT_FOUND = "COURIER_NOT_FOUND"
	COURIER_NOT_DELIVER_ORDER = "COURIER_NOT_DELIVER_ORDER"
	COURIER_RETURNS_ORDER = "COURIER_RETURNS_ORDER"
	COURIER_RETURNED_ORDER = "COURIER_RETURNED_ORDER"
	WAITING_USER_DELIVERY_INPUT = "WAITING_USER_DELIVERY_INPUT"
	PICKUP_SERVICE_RECEIVED = "PICKUP_SERVICE_RECEIVED"
	PICKUP_USER_RECEIVED = "PICKUP_USER_RECEIVED"
	CANCELLED_COURIER_NOT_FOUND = "CANCELLED_COURIER_NOT_FOUND"
	COURIER_NOT_COME_FOR_ORDER = "COURIER_NOT_COME_FOR_ORDER"
	DELIVERY_NOT_MANAGED_REGION = "DELIVERY_NOT_MANAGED_REGION"
	INCOMPLETE_CONTACT_INFORMATION = "INCOMPLETE_CONTACT_INFORMATION"
	INCOMPLETE_MULTI_ORDER = "INCOMPLETE_MULTI_ORDER"
	INAPPROPRIATE_WEIGHT_SIZE = "INAPPROPRIATE_WEIGHT_SIZE"
	TECHNICAL_ERROR = "TECHNICAL_ERROR"
	SORTING_CENTER_LOST = "SORTING_CENTER_LOST"
	COURIER_SEARCH_NOT_STARTED = "COURIER_SEARCH_NOT_STARTED"
	LOST = "LOST"
	AWAIT_PAYMENT = "AWAIT_PAYMENT"
	AWAIT_LAVKA_RESERVATION = "AWAIT_LAVKA_RESERVATION"
	USER_WANTS_TO_CHANGE_ADDRESS = "USER_WANTS_TO_CHANGE_ADDRESS"
	FULL_NOT_RANSOM = "FULL_NOT_RANSOM"
	PRESCRIPTION_MISMATCH = "PRESCRIPTION_MISMATCH"
	DROPOFF_LOST = "DROPOFF_LOST"
	DROPOFF_CLOSED = "DROPOFF_CLOSED"
	DELIVERY_TO_STORE_STARTED = "DELIVERY_TO_STORE_STARTED"
	USER_WANTS_TO_CHANGE_DELIVERY_DATE = "USER_WANTS_TO_CHANGE_DELIVERY_DATE"
	WRONG_ITEM_DELIVERED = "WRONG_ITEM_DELIVERED"
	DAMAGED_BOX = "DAMAGED_BOX"
	AWAIT_DELIVERY_DATES = "AWAIT_DELIVERY_DATES"
	LAST_MILE_COURIER_SEARCH = "LAST_MILE_COURIER_SEARCH"
	PICKUP_POINT_CLOSED = "PICKUP_POINT_CLOSED"
	LEGAL_INFO_CHANGED = "LEGAL_INFO_CHANGED"
	USER_HAS_NO_TIME_TO_PICKUP_ORDER = "USER_HAS_NO_TIME_TO_PICKUP_ORDER"
	DELIVERY_CUSTOMS_ARRIVED = "DELIVERY_CUSTOMS_ARRIVED"
	DELIVERY_CUSTOMS_CLEARED = "DELIVERY_CUSTOMS_CLEARED"
	FIRST_MILE_DELIVERY_SERVICE_RECEIVED = "FIRST_MILE_DELIVERY_SERVICE_RECEIVED"
	AWAIT_AUTO_DELIVERY_DATES = "AWAIT_AUTO_DELIVERY_DATES"
	AWAIT_USER_PERSONAL_DATA = "AWAIT_USER_PERSONAL_DATA"
	NO_PERSONAL_DATA_EXPIRED = "NO_PERSONAL_DATA_EXPIRED"
	CUSTOMS_PROBLEMS = "CUSTOMS_PROBLEMS"
	AWAIT_CASHIER = "AWAIT_CASHIER"
	WAITING_POSTPAID_BUDGET_RESERVATION = "WAITING_POSTPAID_BUDGET_RESERVATION"
	AWAIT_SERVICEABLE_CONFIRMATION = "AWAIT_SERVICEABLE_CONFIRMATION"
	POSTPAID_BUDGET_RESERVATION_FAILED = "POSTPAID_BUDGET_RESERVATION_FAILED"
	AWAIT_CUSTOM_PRICE_CONFIRMATION = "AWAIT_CUSTOM_PRICE_CONFIRMATION"
	READY_FOR_PICKUP = "READY_FOR_PICKUP"
	TOO_MANY_DELIVERY_DATE_CHANGES = "TOO_MANY_DELIVERY_DATE_CHANGES"
	TOO_LONG_DELIVERY = "TOO_LONG_DELIVERY"
	DEFERRED_PAYMENT = "DEFERRED_PAYMENT"
	POSTPAID_FAILED = "POSTPAID_FAILED"
	UNKNOWN = "UNKNOWN"


@allow_unknown
class OrderTaxSystem(Enum):
	ECHN = "ECHN"		# единый сельскохозяйственный налог (ЕСХН).
	ENVD = "ENVD"		# единый налог на вмененный доход (ЕНВД).
	OSN = "OSN"		# общая система налогообложения (ОСН).
	PSN = "PSN"		# патентная система налогообложения (ПСН).
	USN = "USN"		# упрощенная система налогообложения (УСН).
	USN_MINUS_COST = "USN_MINUS_COST"		# упрощенная система налогообложения, доходы, уменьшенные на величину расходов (УСН «Доходы минус расходы»).
	NPD = "NPD"		# налог на профессиональный доход (НПД).
	UNKNOWN_VALUE = "UNKNOWN_VALUE"		# неизвестное значение


@allow_unknown
class OrderBuyerType(Enum):
	PERSON = "PERSON"
	BUSINESS = "BUSINESS"


@allow_unknown
class OrderSubsidyType(Enum):
	YANDEX_CASHBACK = "YANDEX_CASHBACK"		# скидка по подписке Яндекс Плюс.
	SUBSIDY = "SUBSIDY"		# скидка Маркета (по акциям, промокодам, купонам и т. д.)
	DELIVERY = "DELIVERY"		# скидка за доставку (DBS).


@allow_unknown
class OrderVatType(Enum):
	NO_VAT = "NO_VAT"
	VAT_0 = "VAT_0"
	VAT_10 = "VAT_10"
	VAT_10_110 = "VAT_10_110"
	VAT_20 = "VAT_20"
	VAT_20_120 = "VAT_20_120"
	VAT_18 = "VAT_18"
	VAT_18_118 = "VAT_18_118"
	VAT_12 = "VAT_12"
	VAT_05 = "VAT_05"
	VAT_07 = "VAT_07"
	UNKNOWN_VALUE = "UNKNOWN_VALUE"


@allow_unknown
class OrderItemInstanceType(Enum):
	CIS = "CIS"		# КИЗ, идентификатор единицы товара в системе «Честный ЗНАК» или «ASL BELGISI» (для продавцов Market Yandex Go). Обязателен для заполнения.
	CIS_OPTIONAL = "CIS_OPTIONAL"		# КИЗ, идентификатор единицы товара в системе «Честный ЗНАК». Необязателен для заполнения, но в ближайшее время потребуется его передача.
	UIN = "UIN"		# УИН, уникальный идентификационный номер.
	RNPT = "RNPT"		# РНПТ, регистрационный номер партии товара.
	GTD = "GTD"		# номер ГТД, грузовой таможенной декларации.


@allow_unknown
class OrderItemTag(Enum):
	ULTIMA = "ULTIMA"		# премиум-товар.
	SAFE_TAG = "SAFE_TAG"		# товар с защитной меткой.
	TURBO = "TURBO"		# товар, который быстро раскупают.


@allow_unknown
class OrderDeliveryPartnerType(Enum):
	SHOP = "SHOP"		# магазин работает со службой доставки напрямую или доставляет заказы самостоятельно.
	YANDEX_MARKET = "YANDEX_MARKET"		# магазин работает со службой доставки через Маркет.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class OrderDeliveryType(Enum):
	DELIVERY = "DELIVERY"		# курьерская доставка.
	PICKUP = "PICKUP"		# самовывоз.
	POST = "POST"		# почта.
	DIGITAL = "DIGITAL"		# для цифровых товаров.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class OrderDeliveryDispatchType(Enum):
	BUYER = "BUYER"		# доставка покупателю.
	MARKET_BRANDED_OUTLET = "MARKET_BRANDED_OUTLET"		# доставка в пункт выдачи заказов Маркета.
	SHOP_OUTLET = "SHOP_OUTLET"		# доставка в пункт выдачи заказов магазина.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class OrderDeliveryEacType(Enum):
	MERCHANT_TO_COURIER = "MERCHANT_TO_COURIER"
	COURIER_TO_MERCHANT = "COURIER_TO_MERCHANT"
	CHECKING_BY_MERCHANT = "CHECKING_BY_MERCHANT"


@allow_unknown
class OrderLiftType(Enum):
	NOT_NEEDED = "NOT_NEEDED"		# не требуется.
	MANUAL = "MANUAL"		# ручной.
	ELEVATOR = "ELEVATOR"		# лифт.
	CARGO_ELEVATOR = "CARGO_ELEVATOR"		# грузовой лифт.
	FREE = "FREE"		# любой из перечисленных выше, если включена опция бесплатного подъема.
	UNKNOWN = "UNKNOWN"		# неизвестный тип.


@allow_unknown
class OrderItemStatusType(Enum):
	REJECTED = "REJECTED"		# невыкупленный.
	RETURNED = "RETURNED"		# возвращенный.


@allow_unknown
class OrderPromoType(Enum):
	DIRECT_DISCOUNT = "DIRECT_DISCOUNT"
	BLUE_SET = "BLUE_SET"
	BLUE_FLASH = "BLUE_FLASH"
	GENERIC_BUNDLE = "GENERIC_BUNDLE"
	MARKET_COUPON = "MARKET_COUPON"
	MARKET_PROMOCODE = "MARKET_PROMOCODE"
	MARKET_BLUE = "MARKET_BLUE"
	MARKET_COIN = "MARKET_COIN"
	PRICE_DROP_AS_YOU_SHOP = "PRICE_DROP_AS_YOU_SHOP"
	SECRET_SALE = "SECRET_SALE"
	CHEAPEST_AS_GIFT = "CHEAPEST_AS_GIFT"
	CASHBACK = "CASHBACK"
	SPREAD_DISCOUNT_COUNT = "SPREAD_DISCOUNT_COUNT"
	SPREAD_DISCOUNT_RECEIPT = "SPREAD_DISCOUNT_RECEIPT"
	DISCOUNT_BY_PAYMENT_TYPE = "DISCOUNT_BY_PAYMENT_TYPE"
	PERCENT_DISCOUNT = "PERCENT_DISCOUNT"
	DCO_EXTRA_DISCOUNT = "DCO_EXTRA_DISCOUNT"
	UNKNOWN = "UNKNOWN"


@allow_unknown
class OrderItemSubsidyType(Enum):
	YANDEX_CASHBACK = "YANDEX_CASHBACK"		# скидка по подписке Яндекс Плюс.
	SUBSIDY = "SUBSIDY"		# скидка Маркета (по акциям, промокодам, купонам и т. д.).
