Subversion Repositories SmartDukaan

Rev

Rev 2219 | Rev 2382 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
68 ashish 1
namespace java in.shop2020.model.v1.order
95 ashish 2
namespace py shop2020.thriftpy.model.v1.order
68 ashish 3
/***
4
	Order objects.
5
*/
483 rajveer 6
enum OrderStatus{
845 chandransh 7
	PAYMENT_PENDING,
8
	PAYMENT_FAILED,
483 rajveer 9
	INIT,
10
	SUBMITTED_FOR_PROCESSING,
11
	ACCEPTED,
12
	INVENTORY_LOW,
495 rajveer 13
	REJECTED,
483 rajveer 14
	BILLED,
15
	READY_FOR_SHIPPING,
16
	SHIPPED_FROM_WH,
17
	SHIPPED_TO_LOGST,
18
	IN_TRANSIT,
19
	DELIVERY_SUCCESS,
20
	DELIVERY_FAILED_FIRST_ATTEMPT,
21
	DELIVERY_FAILED_SECOND_ATTEMPT,
22
	DELIVERY_FAILED_THIRD_ATTEMPT,
23
	DELIVERY_FAILED_WORNG_ADDRESS
24
	COMPLETED,
25
	CANCELED,
845 chandransh 26
	FAILED
483 rajveer 27
}
28
 
29
enum TransactionStatus{
30
	INIT,
31
	IN_PROCESS,
32
	COMPLETED,
33
	FAILED
34
}
35
 
36
 
37
struct LineItem{
38
	1:i64 id,
698 chandransh 39
	2:i64 item_id,
956 chandransh 40
	3:string productGroup
41
	4:string brand,
42
	5:string model_number,
43
	6:string color
44
	7:string model_name,
45
	8:string extra_info,
46
	9:double quantity,
47
	10:double unit_price,
48
	11:double unit_weight,
49
	12:double total_price,
1000 varun.gupt 50
	13:double transfer_price,
2363 chandransh 51
	14:double total_weight,
52
	15:optional i64 imei_number
483 rajveer 53
}
54
 
55
 
56
struct Order{
57
	1:i64 id,
58
	2:i64 warehouse_id,
59
	/**
60
		item info
61
	**/
62
	3:list<LineItem> lineitems,
63
	/**
64
	  logistics info
65
	**/
66
	4:i64 logistics_provider_id,
67
	5:string airwaybill_no,
68
	6:string tracking_id,
69
	7:i64 expected_delivery_time,
70
	/**
71
	  customer info
72
	**/
73
	8:i64 customer_id,
74
	9:string customer_name,
75
	10:string customer_mobilenumber,
76
	11:string customer_pincode,
735 chandransh 77
	12:string customer_address1,
78
	13:string customer_address2,
79
	14:string customer_email,
80
	15:string customer_city,
81
	16:string customer_state,
483 rajveer 82
 
83
	/**
84
		status and misc info
85
	**/
735 chandransh 86
	17:OrderStatus status,
87
	18:string statusDescription,
88
	19:double total_amount,
89
	20:double total_weight,
483 rajveer 90
	/**
91
		billing info
92
	**/
735 chandransh 93
	21:string invoice_number,
94
	22:string billed_by,
483 rajveer 95
	/**
96
		timestamps
97
	**/
735 chandransh 98
	23:i64 created_timestamp,
99
	24:i64 accepted_timestamp,
100
	25:i64 billing_timestamp,
101
	26:i64 shipping_timestamp,
1115 chandransh 102
	27:i64 pickup_timestamp,
103
	28:i64 delivery_timestamp,
1210 chandransh 104
	29:i64 outofstock_timestamp,
105
	30:i64 jacket_number,
1223 chandransh 106
	31:string receiver,
107
	32:i64 batchNo,
2219 varun.gupt 108
	33:i64 serialNo
483 rajveer 109
}
110
 
111
struct Transaction{
112
	1:i64 id,
113
	2:list<Order> orders,
680 rajveer 114
	3:i64 createdOn,
115
	4:TransactionStatus transactionStatus,
116
	5:string statusDescription,
117
	6:i64 shoppingCartid,
2219 varun.gupt 118
	7:i64 customer_id,
119
	8:string coupon_code
483 rajveer 120
}
121
 
122
struct Alert{
123
	1:i64 id,
124
	2:i64 order_id,
125
	3:i64 type,
126
	4:i64 time_set,
127
	5:string comment,
128
	6:i64 time_unset
129
}
130
 
131
exception TransactionServiceException{
132
	1:i32 errorCode,
133
	2:string message
134
}
135
 
136
service TransactionService{
137
 
763 rajveer 138
	/**
139
	* For closing the open session in sqlalchemy
140
	*/
141
	void closeSession(),
142
 
483 rajveer 143
	i64 createTransaction(1:Transaction transaction) throws (1:TransactionServiceException ex),
144
 
145
	//	Get transaction methods.
146
	Transaction getTransaction(1:i64 id) throws (1:TransactionServiceException ex),
147
	list<Transaction> getTransactionsForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:TransactionStatus status) throws (1:TransactionServiceException ex),
148
	list<Transaction> getTransactionsForShoppingCartId(1:i64 shoppingCartId) throws (1:TransactionServiceException ex),
149
	TransactionStatus getTransactionStatus(1:i64 transactionId) throws (1:TransactionServiceException ex),
150
	bool changeTransactionStatus(1:i64 transactionId, 2:TransactionStatus status, 3:string description) throws (1:TransactionServiceException ex),
1382 varun.gupt 151
 
1398 varun.gupt 152
	bool enqueueTransactionInfoEmail(1:i64 transactionId) throws (1:TransactionServiceException ex),
1382 varun.gupt 153
 
483 rajveer 154
	//	Order getter and setters
155
 
156
	/*
157
	list<Transaction> getTransactionsForShipmentStatus(1:ShipmentStatus status, 2:i64 from_date, 3:i64 to_date) throws (1:TransactionServiceException ex),
158
	list<Transaction> getTransactionsForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:TransactionStatus status) throws (1:TransactionServiceException ex),
159
	list<Transaction> getTransactionsForCustomerAndShipmentStatus(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:ShipmentStatus status) throws (1:TransactionServiceException ex),
160
	list<Transaction> getTransactionsForShoppingCartId(1:i64 shoppingCartId) throws (1:TransactionServiceException ex),
161
	TransactionStatus getTransactionStatus(1:i64 transactionId) throws (1:TransactionServiceException ex),
162
	bool changeTransactionStatus(1:i64 transactionId, 2:TransactionStatus status, 3:string description) throws (1:TransactionServiceException ex),
163
	*/
164
 
165
	list<Order> getAllOrders(1:OrderStatus status, 2:i64 from_date, 3:i64 to_date, 4:i64 warehouse_id) throws (1:TransactionServiceException ex),
1111 varun.gupt 166
 
1115 chandransh 167
	/**
168
	Returns orders within a range of their billing dates
169
	*/
1000 varun.gupt 170
	list<Order> getOrdersByBillingDate(1:OrderStatus status, 2:i64 start_billing_date, 3:i64 end_billing_date, 4:i64 warehouse_id) throws (1:TransactionServiceException ex),
1111 varun.gupt 171
 
1382 varun.gupt 172
	/**
173
	Returns order ids for orders which can be returned
174
	*/
175
	list<i64> getReturnableOrdersForCustomer(1:i64 customer_id, 2:i64 limit) throws (1:TransactionServiceException ex),
176
 
177
	/**
178
	Returns order ids for orders which can be cancelled
179
	*/
180
	list<i64> getCancellableOrdersForCustomer(1:i64 customer_id, 2:i64 limit) throws (1:TransactionServiceException ex),
181
 
483 rajveer 182
	bool changeOrderStatus(1:i64 orderId, 2:OrderStatus status, 3:string description) throws (1:TransactionServiceException ex),
1147 chandransh 183
 
184
	/**
185
	Add billing details such as the bill number and the biller to the Order.
186
	*/
187
	bool addBillingDetails(1:i64 orderId, 2:string invoice_number, 3:string billed_by) throws (1:TransactionServiceException ex),
188
 
189
	/**
2363 chandransh 190
	Adds jacket number and IMEI no. to the order. Doesn't update the IMEI no. if a -1 is supplied.
191
	Also marks the order as billed and sets the billing timestamp.
192
	Return false if it doesn't find the order with the given ID.
1147 chandransh 193
	*/
2363 chandransh 194
	bool addJacketNumber(1:i64 orderId, 2:i64 jacketNumber, 3:i64 imeiNumber, 4:string billedBy) throws (1:TransactionServiceException ex),
495 rajveer 195
 
922 rajveer 196
	bool acceptOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
197
	bool billOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
1000 varun.gupt 198
 
1529 ankur.sing 199
	/**
200
	Returns list of orders for given transaction Id. Also filters based on customer Id so that
201
	only user who owns the transaction can view its order details.
202
	*/
203
	list<Order> getOrdersForTransaction(1:i64 transactionId 2:i64 customerId)  throws (1:TransactionServiceException ex),
204
 
483 rajveer 205
	list<Order> getOrdersForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:OrderStatus status) throws (1:TransactionServiceException ex),
206
	i64 createOrder(1:Order order) throws (1:TransactionServiceException ex),
207
	Order getOrder(1:i64 id) throws (1:TransactionServiceException ex),
208
	list<LineItem> getLineItemsForOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
209
 
1529 ankur.sing 210
 
757 chandransh 211
	/**
1529 ankur.sing 212
	Returns an order for the order Id. Also checks if the order belongs to the customer whose Id is passed.
213
	Throws exception if either order Id is invalid or order does not below to the customer whose Id is passed.
214
	*/
215
	Order getOrderForCustomer(1:i64 orderId, 2:i64 customerId) throws (1:TransactionServiceException ex),
216
 
217
	/**
1223 chandransh 218
	 Create a batch of all the pending orders for the given warehouse.
219
	 The returned list is orderd by created_timestamp.
220
	 If there are no pending orders, an empty list is returned.
1244 chandransh 221
	 */
1223 chandransh 222
	list<Order> batchOrders(1:i64 warehouseId) throws (1:TransactionServiceException ex),
223
 
224
	/**
225
	Mark the given order as out of stock. Throws an exception if the order with the given Id couldn't be found. 
1244 chandransh 226
	*/
1210 chandransh 227
	bool markOrderAsOutOfStock(1:i64 orderId) throws (1:TransactionServiceException ex),
228
 
229
	/**
757 chandransh 230
	Marks all BILLED orders for a warehouse and a provider as SHIPPED_FROM_WH
231
	*/
232
	bool markOrdersAsManifested(1:i64 warehouseId, 2:i64 providerId) throws (1:TransactionServiceException ex),
1115 chandransh 233
 
234
	/**
235
	Marks all SHIPPED_FROM_WH orders of the previous day for a provider as SHIPPED_TO_LOGISTICS.
236
	Returns a list of orders that were shipped from warehouse but did not appear in the pick-up report.
237
	Raises an exception if we encounter report for an AWB number that we did not ship.
238
	*/
1244 chandransh 239
	list<Order> markOrdersAsPickedUp(1:i64 providerId, 2:map<string, string> pickupDetails) throws (1:TransactionServiceException ex),
1134 chandransh 240
 
241
	/**
242
	Marks all orders with AWBs in the given map as delivered. Also sets the delivery timestamp and
243
	the name of the receiver.
244
	Raises an exception if we encounter report for an AWB number that we did not ship.
245
	*/
246
	void markOrdersAsDelivered(1:i64 providerId, 2:map<string, string> deliveredOrders) throws (1:TransactionServiceException ex),
247
 
248
	/**
249
	Mark all orders with AWBs in the given map as failed. Also sets the delivery timestamp.
250
	Raises an exception if we encounter report for an AWB number that we did not ship.
251
	*/
252
	void markOrdersAsFailed(1:i64 providerId, 2:map<string, string> returnedOrders) throws (1:TransactionServiceException ex),
253
 
1244 chandransh 254
	/**
255
	Update the status description of orders whose AWB numbers are keys of the Map.
256
	*/
257
	void updateNonDeliveryReason(1:i64 providerId, 2:map<string, string> undeliveredOrders) throws (1:TransactionServiceException ex),
258
 
1407 ankur.sing 259
	/**
260
	Returns the list of orders whose delivery time has passed but have not been
261
	delivered yet for the given provider and warehouse. To get a complete list of
262
	undelivered orders, pass them as -1. 
263
	Returns an empty list if no such orders exist.
264
	*/
265
	list<Order> getUndeliveredOrders(1:i64 providerId, 2:i64 warehouseId),
266
 
483 rajveer 267
	//Alerts apis 
268
	list<Alert> getAlerts(1:i64 orderId, 2:bool valid),
269
	void setAlert(1:i64 orderId, 2:bool unset, 3:i64 type, 4: string comment),
1599 ankur.sing 270
 
271
	/**
272
	Return the number of valid orders. (OrderStatus >= OrderStatus.SUBMITTED_FOR_PROCESSING)
273
	*/
1628 ankur.sing 274
	i64 getValidOrderCount(),
275
 
276
	/**
277
	Returns the number of distinct customers who have done successful transactions
278
	*/
279
	i64 getNoOfCustomersWithSuccessfulTransaction(),
280
 
281
	/**
1731 ankur.sing 282
	Returns the minimum and maximum amounts of a valid order. (OrderStatus >= OrderStatus.SUBMITTED_FOR_PROCESSING)
283
	List contains two values, first minimum amount and second maximum amount.	
1628 ankur.sing 284
	*/
1886 ankur.sing 285
	list<double> getValidOrdersAmountRange(),
1628 ankur.sing 286
 
1886 ankur.sing 287
	/**
288
	Returns list of Orders in descending order by Order creation date. List is restricted to limit Orders.
289
	If limit is passed as 0, then all valid Orders are returned. 
290
	*/
291
	list<Order> getValidOrders(1:i64 limit)
1628 ankur.sing 292
 
1115 chandransh 293
}