Subversion Repositories SmartDukaan

Rev

Rev 1407 | Rev 1599 | 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,
51
	14:double total_weight,
483 rajveer 52
}
53
 
54
 
55
struct Order{
56
	1:i64 id,
57
	2:i64 warehouse_id,
58
	/**
59
		item info
60
	**/
61
	3:list<LineItem> lineitems,
62
	/**
63
	  logistics info
64
	**/
65
	4:i64 logistics_provider_id,
66
	5:string airwaybill_no,
67
	6:string tracking_id,
68
	7:i64 expected_delivery_time,
69
	/**
70
	  customer info
71
	**/
72
	8:i64 customer_id,
73
	9:string customer_name,
74
	10:string customer_mobilenumber,
75
	11:string customer_pincode,
735 chandransh 76
	12:string customer_address1,
77
	13:string customer_address2,
78
	14:string customer_email,
79
	15:string customer_city,
80
	16:string customer_state,
483 rajveer 81
 
82
	/**
83
		status and misc info
84
	**/
735 chandransh 85
	17:OrderStatus status,
86
	18:string statusDescription,
87
	19:double total_amount,
88
	20:double total_weight,
483 rajveer 89
	/**
90
		billing info
91
	**/
735 chandransh 92
	21:string invoice_number,
93
	22:string billed_by,
483 rajveer 94
	/**
95
		timestamps
96
	**/
735 chandransh 97
	23:i64 created_timestamp,
98
	24:i64 accepted_timestamp,
99
	25:i64 billing_timestamp,
100
	26:i64 shipping_timestamp,
1115 chandransh 101
	27:i64 pickup_timestamp,
102
	28:i64 delivery_timestamp,
1210 chandransh 103
	29:i64 outofstock_timestamp,
104
	30:i64 jacket_number,
1223 chandransh 105
	31:string receiver,
106
	32:i64 batchNo,
107
	33:i64 serialNo
483 rajveer 108
}
109
 
110
struct Transaction{
111
	1:i64 id,
112
	2:list<Order> orders,
680 rajveer 113
	3:i64 createdOn,
114
	4:TransactionStatus transactionStatus,
115
	5:string statusDescription,
116
	6:i64 shoppingCartid,
117
	7:i64 customer_id
483 rajveer 118
}
119
 
120
struct Alert{
121
	1:i64 id,
122
	2:i64 order_id,
123
	3:i64 type,
124
	4:i64 time_set,
125
	5:string comment,
126
	6:i64 time_unset
127
}
128
 
129
exception TransactionServiceException{
130
	1:i32 errorCode,
131
	2:string message
132
}
133
 
134
service TransactionService{
135
 
763 rajveer 136
	/**
137
	* For closing the open session in sqlalchemy
138
	*/
139
	void closeSession(),
140
 
483 rajveer 141
	i64 createTransaction(1:Transaction transaction) throws (1:TransactionServiceException ex),
142
 
143
	//	Get transaction methods.
144
	Transaction getTransaction(1:i64 id) throws (1:TransactionServiceException ex),
145
	list<Transaction> getTransactionsForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:TransactionStatus status) throws (1:TransactionServiceException ex),
146
	list<Transaction> getTransactionsForShoppingCartId(1:i64 shoppingCartId) throws (1:TransactionServiceException ex),
147
	TransactionStatus getTransactionStatus(1:i64 transactionId) throws (1:TransactionServiceException ex),
148
	bool changeTransactionStatus(1:i64 transactionId, 2:TransactionStatus status, 3:string description) throws (1:TransactionServiceException ex),
1382 varun.gupt 149
 
1398 varun.gupt 150
	bool enqueueTransactionInfoEmail(1:i64 transactionId) throws (1:TransactionServiceException ex),
1382 varun.gupt 151
 
483 rajveer 152
	//	Order getter and setters
153
 
154
	/*
155
	list<Transaction> getTransactionsForShipmentStatus(1:ShipmentStatus status, 2:i64 from_date, 3:i64 to_date) throws (1:TransactionServiceException ex),
156
	list<Transaction> getTransactionsForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:TransactionStatus status) throws (1:TransactionServiceException ex),
157
	list<Transaction> getTransactionsForCustomerAndShipmentStatus(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:ShipmentStatus status) throws (1:TransactionServiceException ex),
158
	list<Transaction> getTransactionsForShoppingCartId(1:i64 shoppingCartId) throws (1:TransactionServiceException ex),
159
	TransactionStatus getTransactionStatus(1:i64 transactionId) throws (1:TransactionServiceException ex),
160
	bool changeTransactionStatus(1:i64 transactionId, 2:TransactionStatus status, 3:string description) throws (1:TransactionServiceException ex),
161
	*/
162
 
163
	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 164
 
1115 chandransh 165
	/**
166
	Returns orders within a range of their billing dates
167
	*/
1000 varun.gupt 168
	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 169
 
1382 varun.gupt 170
	/**
171
	Returns order ids for orders which can be returned
172
	*/
173
	list<i64> getReturnableOrdersForCustomer(1:i64 customer_id, 2:i64 limit) throws (1:TransactionServiceException ex),
174
 
175
	/**
176
	Returns order ids for orders which can be cancelled
177
	*/
178
	list<i64> getCancellableOrdersForCustomer(1:i64 customer_id, 2:i64 limit) throws (1:TransactionServiceException ex),
179
 
483 rajveer 180
	bool changeOrderStatus(1:i64 orderId, 2:OrderStatus status, 3:string description) throws (1:TransactionServiceException ex),
1147 chandransh 181
 
182
	/**
183
	Add billing details such as the bill number and the biller to the Order.
184
	*/
185
	bool addBillingDetails(1:i64 orderId, 2:string invoice_number, 3:string billed_by) throws (1:TransactionServiceException ex),
186
 
187
	/**
188
	Adds jacket number to the order. Return false if it doesn't find the order with the given ID.
189
	*/
190
	bool addJacketNumber(1:i64 orderId, 2:i64 jacketNumber) throws (1:TransactionServiceException ex),
495 rajveer 191
 
922 rajveer 192
	bool acceptOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
193
	bool billOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
1000 varun.gupt 194
 
1529 ankur.sing 195
	/**
196
	Returns list of orders for given transaction Id. Also filters based on customer Id so that
197
	only user who owns the transaction can view its order details.
198
	*/
199
	list<Order> getOrdersForTransaction(1:i64 transactionId 2:i64 customerId)  throws (1:TransactionServiceException ex),
200
 
483 rajveer 201
	list<Order> getOrdersForCustomer(1:i64 customerId, 2:i64 from_date, 3:i64 to_date, 4:OrderStatus status) throws (1:TransactionServiceException ex),
202
	i64 createOrder(1:Order order) throws (1:TransactionServiceException ex),
203
	Order getOrder(1:i64 id) throws (1:TransactionServiceException ex),
204
	list<LineItem> getLineItemsForOrder(1:i64 orderId) throws (1:TransactionServiceException ex),
205
 
1529 ankur.sing 206
 
757 chandransh 207
	/**
1529 ankur.sing 208
	Returns an order for the order Id. Also checks if the order belongs to the customer whose Id is passed.
209
	Throws exception if either order Id is invalid or order does not below to the customer whose Id is passed.
210
	*/
211
	Order getOrderForCustomer(1:i64 orderId, 2:i64 customerId) throws (1:TransactionServiceException ex),
212
 
213
	/**
1223 chandransh 214
	 Create a batch of all the pending orders for the given warehouse.
215
	 The returned list is orderd by created_timestamp.
216
	 If there are no pending orders, an empty list is returned.
1244 chandransh 217
	 */
1223 chandransh 218
	list<Order> batchOrders(1:i64 warehouseId) throws (1:TransactionServiceException ex),
219
 
220
	/**
221
	Mark the given order as out of stock. Throws an exception if the order with the given Id couldn't be found. 
1244 chandransh 222
	*/
1210 chandransh 223
	bool markOrderAsOutOfStock(1:i64 orderId) throws (1:TransactionServiceException ex),
224
 
225
	/**
757 chandransh 226
	Marks all BILLED orders for a warehouse and a provider as SHIPPED_FROM_WH
227
	*/
228
	bool markOrdersAsManifested(1:i64 warehouseId, 2:i64 providerId) throws (1:TransactionServiceException ex),
1115 chandransh 229
 
230
	/**
231
	Marks all SHIPPED_FROM_WH orders of the previous day for a provider as SHIPPED_TO_LOGISTICS.
232
	Returns a list of orders that were shipped from warehouse but did not appear in the pick-up report.
233
	Raises an exception if we encounter report for an AWB number that we did not ship.
234
	*/
1244 chandransh 235
	list<Order> markOrdersAsPickedUp(1:i64 providerId, 2:map<string, string> pickupDetails) throws (1:TransactionServiceException ex),
1134 chandransh 236
 
237
	/**
238
	Marks all orders with AWBs in the given map as delivered. Also sets the delivery timestamp and
239
	the name of the receiver.
240
	Raises an exception if we encounter report for an AWB number that we did not ship.
241
	*/
242
	void markOrdersAsDelivered(1:i64 providerId, 2:map<string, string> deliveredOrders) throws (1:TransactionServiceException ex),
243
 
244
	/**
245
	Mark all orders with AWBs in the given map as failed. Also sets the delivery timestamp.
246
	Raises an exception if we encounter report for an AWB number that we did not ship.
247
	*/
248
	void markOrdersAsFailed(1:i64 providerId, 2:map<string, string> returnedOrders) throws (1:TransactionServiceException ex),
249
 
1244 chandransh 250
	/**
251
	Update the status description of orders whose AWB numbers are keys of the Map.
252
	*/
253
	void updateNonDeliveryReason(1:i64 providerId, 2:map<string, string> undeliveredOrders) throws (1:TransactionServiceException ex),
254
 
1407 ankur.sing 255
	/**
256
	Returns the list of orders whose delivery time has passed but have not been
257
	delivered yet for the given provider and warehouse. To get a complete list of
258
	undelivered orders, pass them as -1. 
259
	Returns an empty list if no such orders exist.
260
	*/
261
	list<Order> getUndeliveredOrders(1:i64 providerId, 2:i64 warehouseId),
262
 
483 rajveer 263
	//Alerts apis 
264
	list<Alert> getAlerts(1:i64 orderId, 2:bool valid),
265
	void setAlert(1:i64 orderId, 2:bool unset, 3:i64 type, 4: string comment),
1115 chandransh 266
}