import datetime
from dataclasses import dataclass
from decimal import Decimal
from typing import List, Optional
from channel_app.omnitron.constants import ResponseStatus, \
ChannelConfSchemaDataTypes
@dataclass
class CategoryNodeDto:
name: str
children: List['CategoryNodeDto']
remote_id: Optional[str] = ''
parent: Optional['CategoryNodeDto'] = None
@dataclass
class CategoryTreeDto:
root: CategoryNodeDto
@dataclass
class CategoryAttributeValueDto:
remote_id: str
name: str
@dataclass
class CategoryAttributeDto:
remote_id: str
name: str
required: bool
variant: bool
allow_custom_value: bool
values: List[CategoryAttributeValueDto]
@dataclass
class AttributeValueDto:
remote_id: str
name: str
@dataclass
class AttributeDto:
remote_id: str
name: str
values: List[AttributeValueDto]
@dataclass
class CategoryDto:
remote_id: str
name: str
attributes: List[CategoryAttributeDto]
@dataclass
class ChannelConfSchemaField:
required: bool
data_type: ChannelConfSchemaDataTypes
key: str
label: str
schema: Optional[dict] = None
@dataclass
class ErrorReportDto:
action_content_type: str
action_object_id: int
modified_date: str
raw_request: str = ""
raw_response: str = ""
error_code: str = "custom"
error_description: str = "custom"
is_ok: bool = False
target_content_type: Optional[str] = ''
target_object_id: Optional[str] = ''
@dataclass
class BatchRequestObjectsDto:
pk: int
version_date: str
content_type: str
failed_reason_type: Optional[str] = ''
remote_id: Optional[int] = 0
class BatchRequestDto:
channel: int
local_batch_id: str
content_type: str
pk: Optional[int] = 0
remote_batch_id: Optional[str] = ''
status: Optional[str] = ''
objects: Optional[List[BatchRequestObjectsDto]] = []
[belgeler]@dataclass
class ProductBatchRequestResponseDto:
status: ResponseStatus
sku: str
remote_id: Optional[str] = ''
message: Optional[str] = ''
@dataclass
class BatchRequestResponseDto:
status: ResponseStatus
remote_id: Optional[str] = ''
sku: Optional[str] = ''
message: Optional[str] = ''
@dataclass
class OrderBatchRequestResponseDto:
status: ResponseStatus
remote_id: str
number: str
message: Optional[str] = ''
@dataclass
class OmnitronOrderDto:
remote_id: str
number: str
channel: int
customer: int
shipping_address: int
billing_address: int
currency: str
amount: Decimal
shipping_amount: Decimal
shipping_tax_rate: Decimal
extra_field: dict
cargo_company: int
created_at: datetime.datetime
delivery_type: Optional[str] = None
discount_amount: Optional[Decimal] = "0.0"
net_shipping_amount: Optional[Decimal] = "0.0"
tracking_number: Optional[str] = None
carrier_shipping_code: Optional[str] = ""
remote_addr: Optional[str] = None
has_gift_box: Optional[bool] = False
gift_box_note: Optional[str] = ""
client_type: Optional[str] = ""
language_code: Optional[str] = ""
notes: Optional[str] = ""
delivery_range: Optional[str] = None
shipping_option_slug: Optional[str] = ""
status: Optional[str] = ""
@dataclass
class OrderItemDto:
remote_id: str
product: str
price_currency: str
price: Decimal
tax_rate: Decimal
extra_field: dict
status: Optional[str] = None
price_list: Optional[int] = None
stock_list: Optional[int] = None
tracking_number: Optional[str] = None
invoice_number: Optional[str] = None
invoice_date: Optional[str] = None
carrier_shipping_code: Optional[str] = ""
discount_amount: Optional[Decimal] = 0.0
retail_price: Optional[Decimal] = 0.0
attributes: Optional[dict] = None
attributes_kwargs: Optional[dict] = None
parent: Optional[str] = None
delivered_date: Optional[str] = None
estimated_delivery_date: Optional[str] = None
# dataclass used for omnitron.commands.orders.orders.CreateOrders
@dataclass
class OmnitronCreateOrderDto:
order: OmnitronOrderDto
order_item: List[OrderItemDto]
@dataclass
class CancelOrderDto:
order: str # remote order number
cancel_items: List[str] # order_item_remote_id list
reasons: dict # order_item_remote_id : reason code
is_cargo_refund: Optional[bool] = False # default False
forced_refund_amount: Optional[bool] = None # default False
refund_invoice_number: Optional[str] = None
@dataclass
class CustomerDto:
email: str # "john.doe@akinon.com"
first_name: str # "John"
last_name: str # "Doe"
channel_code: str # will be unique
extra_field: Optional[dict] = None
phone_number: Optional[str] = None # "05556667788"
is_active: Optional[bool] = True
@dataclass
class AddressDto:
email: str # "john.doe@akinon.com"
phone_number: str # "05556667788"
first_name: str # "John"
last_name: str # "Doe"
country: str # 1
city: str # 80
line: str # "Hemen sahil kenarı"
title: Optional[str] = None # "COMM-876"
township: Optional[str] = None # 933
district: Optional[str] = None # 71387
postcode: Optional[str] = None # ""
notes: Optional[str] = None # null
company_name: Optional[str] = None # ""
tax_office: Optional[str] = None # ""
tax_no: Optional[str] = None # ""
e_bill_taxpayer: Optional[bool] = False
remote_id: Optional[str] = None # null
identity_number: Optional[str] = None # null
extra_field: Optional[dict] = None # {}
is_active: Optional[bool] = True # true
retail_store: Optional[str] = None
@dataclass
class ChannelOrderDto(OmnitronOrderDto):
customer = CustomerDto
shipping_address = AddressDto
billing_address = AddressDto
cargo_company = str
@dataclass
class ChannelCreateOrderDto:
order: ChannelOrderDto
order_item: List[OrderItemDto]
@dataclass
class ChannelUpdateOrderItemDto:
remote_id: str
order_remote_id: Optional[str] = None
order_number: Optional[str] = None
status: Optional[str] = None
invoice_number: Optional[str] = None
invoice_date: Optional[str] = None
tracking_number: Optional[str] = None
extra_field: Optional[dict] = None