-
Notifications
You must be signed in to change notification settings - Fork 3
/
ordersheet.py
219 lines (165 loc) · 6.22 KB
/
ordersheet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
import json
import urllib.parse
from coupang.common import coupang
##############################################################################
# 배송(일부 환불) 관련 함수 #
##############################################################################
@coupang
def get_ordersheet(path, query):
'''발주서 목록 조회
(일단위 조회)
최대 31일까지 조회가능
날짜는 yyyy-mm-dd 형태(2020-09-03)
(분단위 조회)
24시간 이내의 분단위 구간 조회
날짜는 yyyy-mm-ddT00:00 형태(2020-09-03T21:52)
쿼리에 searchType=timeFrame 추가
'''
return {
'method': "GET",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{path.get('vendorId')}/ordersheets",
'query': urllib.parse.urlencode(query)
}
@coupang
def get_ordersheet_by_shipmentboxid(path):
'''발주서 조회
shipment_box_id(배송번호)를 이용하여 조회
'''
return {
'method': "GET",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{path.get('vendorId')}/ordersheets"+\
f"/{path.get('shipmentBoxId')}"
}
@coupang
def get_ordersheet_by_orderid(path):
'''발주서 조회
order_id(주문번호)를 이용하여 발주서 조회
'''
return {
'method': "GET",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{path.get('vendorId')}"+\
f"/{path.get('orderId')}/ordersheets"
}
@coupang
def get_ordersheet_history(path):
'''배송상태 변경 히스토리 조회
특정 주문에 대한 배송상태 히스토리 조회
'''
return {
'method': "GET",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{path.get('vendorId')}/ordersheets"+\
f"/{path.get('shipmentBoxId')}/history"
}
@coupang
def update_ordersheet_status(body):
'''주문상태를 '결제완료'에서 '상품준비중'으로 변경
묶음배송번호를 이용하여 상태변경
한번에 최대 50개까지 처리 가능
'''
return {
'method': "PUT",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{body.get('vendorId')}/ordersheets/acknowledgement",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def update_order_shipping_info(body):
'''송장 업로드
'상품준비중'에서 '배송지시'로 상태가 변경됨
6개월 이내에 중복된 송장번호 입력시 에러 발생
'''
return {
'method': "POST",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{body.get('vendorId')}/orders/invoices",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def update_order_invoice(body):
'''송장 업데이트(수정)
잘못 등록한 운송장 내용을 변경
배송상태는 배송지시(DEPARTURE)로 변경되며 이후 트래킹 정보 연동에 따라 변경
[주의]
배송지시(DEPARTURE),
배송중(DELIVERING),
배송완료(FINAL_DELIVERY),
업체직송(NONE_TRACKING)
위 4가지 상태일 때만 운송장 정보 변경이 가능
'''
return {
'method': "POST",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{body.get('vendorId')}/orders/updateInvoices",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def stop_return_request_shipment(body):
'''출고중지 완료
아직 상품을 발송하지 않아,
고객 요청대로 상품을 출고하지 않았을 때 사용
고객이 주문을 취소하여
상태가 출고중지요청(RELEASE_STOP_UNCHECKED) 이거나
반품접수미확인(RETURNS_UNCHECKED) 이면서
releaseStatus가 "N" 일 경우에 사용가능
'''
return {
'method': "PUT",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{body.get('vendorId')}/returnRequests"+\
f"/{body.get('receiptId')}/stoppedShipment",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def stop_return_request_by_receipt(body):
'''이미출고
판매자가 상품을 발송한 후,
송장 업로드를 하기 전에
고객이 주문을 취소했을 때 사용
고객이 주문을 취소하여
출고중지요청(RELEASE_STOP_UNCHECKED) 이거나
반품접수미확인(RETURNS_UNCHECKED) 이면서
releaseStatus가 "N" 일 경우에 사용
[주의]
왕복 반품 배송비는 판매자의 귀책
'''
return {
'method': "PUT",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{body.get('vendorId')}/returnRequests"+\
f"/{body.get('receiptId')}/completedShipment",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def cancel_order_processing(body):
'''주문상품 취소
[결제완료] 또는 [상품준비중] 상태에 있는 주문을 취소
[결제완료] 상태에 있는 주문에 대해서는 즉시 취소
[상품준비중] 상테애 있는 주문에 대해서는 출고중지됨
[주의]
판매자 점수 하락
'''
return {
'method': "POST",
'path': "/v2/providers/openapi/apis/api/v5/vendors"+\
f"/{body.get('vendorId')}/orders"+\
f"/{body.get('orderId')}/cancel",
'body': json.dumps(body).encode('utf-8')
}
@coupang
def update_invoice_delivery_by_invoice_no(path, body):
'''장기미배송 배송완료 처리
송장 업로드 후 1달이 경과하였으나,
배송추적 결과를 확인할 수 없는 내용에 대해 배송완료로 상태를 변경
송장 업로드 후 1달이 지난,
배송지시, 배송중 상태인 주문만 처리 가능
'''
return {
'method': "POST",
'path': "/v2/providers/openapi/apis/api/v4/vendors"+\
f"/{path.get('vendorId')}/completeLongTermUndelivery",
'body': json.dumps(body).encode('utf-8')
}