Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
104 ashish 1
'''
2
Created on 29-Mar-2010
3
 
4
@author: ashish
5
'''
6056 amit.gupta 6
from elixir import session
11902 amit.gupta 7
from shop2020.model.v1.order.impl import DataService, RedExpressUpdateService, \
7363 rajveer 8
    RechargeService
6000 mandeep.dh 9
from shop2020.model.v1.order.impl.Convertors import to_t_transaction, to_t_alert, \
10
    to_t_order, to_t_lineitem, to_t_payment_settlement, to_t_verification_agent, \
11902 amit.gupta 11
    to_t_attribute, to_t_rechargeTransaction, to_t_frc, to_t_hotspot, \
12
    to_t_sourcedetail, to_t_amazonorder, to_t_storeOrderDetail, \
13
    to_t_storeOrderCollection, to_t_hotspotServiceMatrix, to_t_ebayOrder, \
14134 amit.gupta 14
    to_t_amazonFbaSalesSnapshot, to_t_snapdealOrder, to_t_flipkartOrder, \
19836 amit.gupta 15
    to_t_amazonFbaOrderReturn, to_t_flipkartAdvantageOrder, to_t_hsOrder, \
16
    to_t_Creditor, to_t_CreditHistory, to_t_UserSanction, to_t_LoanHistory, \
17
    to_t_PaginatedCreditHistory, to_t_PaginatedLoanHistory, \
18
    to_t_PaginatedUserSanction, to_t_returnOrderInfo, to_t_returnTransaction, \
21090 kshitij.so 19
    to_t_rPickupRequest, to_t_OutstandingPayments, to_t_ShipmentLogisticsCostDetail, to_t_pmsa
6000 mandeep.dh 20
from shop2020.model.v1.order.impl.DataAccessors import create_transaction, \
21
    get_transactions_for_customer, get_transaction_status, get_line_items_for_order, \
22
    get_transaction, get_transactions_for_shopping_cart_id, \
23
    change_transaction_status, get_orders_for_customer, get_orders_for_transaction, \
24
    get_order, get_returnable_orders_for_customer, \
25
    get_cancellable_orders_for_customer, get_orders_by_billing_date, get_all_orders, \
26
    change_order_status, get_alerts, add_alert, add_billing_details, close_session, \
27
    accept_order, mark_orders_as_picked_up, mark_orders_as_delivered, \
28
    mark_orders_as_rto, order_outofstock, batch_orders, update_non_delivery_reason, \
29
    enqueue_transaction_info_email, get_undelivered_orders, get_order_for_customer, \
30
    get_valid_order_count, get_cust_count_with_successful_txn, \
31
    get_valid_orders_amount_range, get_valid_orders, toggle_doa_flag, \
32
    request_pickup_number, authorize_pickup, receive_return, validate_doa, \
33
    reship_order, refund_order, get_return_orders, process_return, get_return_order, \
34
    mark_doas_as_picked_up, verify_order, is_alive, get_orders_by_shipping_date, \
35
    update_weight, change_warehouse, change_product, add_delay_reason, \
36
    reconcile_cod_collection, get_transactions_requiring_extra_processing, \
37
    mark_transaction_as_processed, get_item_wise_risky_orders_count, \
38
    accept_order_for_item, get_orders_in_batch, get_order_count, \
39
    get_ebs_settlement_summaries, mark_order_cancellation_request_received, \
40
    mark_order_cancellation_request_denied, refund_transaction, \
41
    mark_order_cancellation_request_confirmed, \
42
    mark_transaction_as_payment_flag_removed, accept_orders_for_item_id, \
43
    mark_orders_as_po_raised, mark_orders_as_reversal_initiated, \
44
    mark_orders_as_not_available, update_shipment_address, mark_orders_as_timeout, \
45
    get_order_for_awb, mark_orders_as_shipped_from_warehouse, mark_alerts_as_seen, \
46
    mark_order_doa_request_received, mark_order_doa_request_authorized, \
47
    mark_order_return_request_received, mark_order_return_request_authorized, \
48
    add_invoice_number, get_reshipped_order_ids, validate_return_product, \
49
    get_orders_for_provider_for_status, save_ebs_settlement_summary, \
50
    get_ebs_settlement_date, save_payment_settlements, mark_ebs_settlement_uploaded, \
51
    get_billed_orders_for_vendor, get_settlement_for_Prepaid, \
52
    get_settlements_by_date, get_slipped_sipping_date_orders, \
53
    mark_order_as_lost_in_transit, get_cancelled_orders, mark_order_as_delivered, \
54
    mark_return_orders_as_picked_up, update_orders_as_PORaised, \
55
    get_order_distribution_by_status, get_orders_not_met_expected_delivery_date, \
56
    mark_orders_as_local_connected, mark_orders_as_destinationCityReached, \
57
    mark_orders_as_firstDeliveryAttempted, get_non_delivered_orders_by_courier, \
58
    get_orders_not_local_connected, get_doas_not_picked_up, \
59
    get_return_orders_not_picked_up, get_orders_not_picked_up, get_rto_orders, \
60
    get_order_list, get_order_ids_for_status, update_orders_as_paid_to_vendor, \
61
    update_COD_agent, get_refunded_orders_marked_paid, get_settlement_for_Cod, \
62
    get_order_list_for_vendor, update_order_only_as_paid_to_vendor, \
63
    get_all_verification_agents, get_all_attributes_for_order_id, \
64
    set_order_attribute_for_transaction, get_billed_orders, get_all_return_orders, \
65
    mark_order_as_received_at_store, get_receive_pending_orders, \
66
    get_received_at_store_orders, mark_orders_as_returned_from_store, \
6056 amit.gupta 67
    set_order_attributes, get_orders_collection_at_store, get_order_attribute_value, \
68
    change_jacket_number, mark_order_as_rto_in_transit, get_recharge_order, \
69
    get_recharge_orders, update_recharge_order_status, activate_recharge_txn, \
70
    get_user_wallet, get_user_wallet_history, get_service_providers, \
6396 amit.gupta 71
    get_service_provider_for_device, get_recharge_orders_for_transaction, \
20931 kshitij.so 72
    get_recharge_orders_for_device, \
6396 amit.gupta 73
    get_recharge_orders_for_status, get_plans_for_operator, get_recharge_statistics, \
74
    validate_recharge, get_recharge_denominations, update_availability_status, \
6821 amar.kumar 75
    get_misc_charges, get_available_emi_schemes, refund_recharge_order, \
7073 anupam.sin 76
    create_recharge_transaction, get_physical_orders, get_document, retrieve_invoice, \
7125 amit.gupta 77
    change_shipping_address, get_recharge_transactions, get_recharge_transaction, \
7151 amit.gupta 78
    get_frcs, get_hotspot_store, get_circle, retrieve_hotspot_recharge_invoice, \
7190 amar.kumar 79
    get_recharge_trans, split_freebie_order, get_recharge_transactions_by_number, \
11902 amit.gupta 80
    update_hotspot_store_password, get_source_detail, get_all_circles, delete_frcs, \
81
    topup_company_wallet, get_wallet_balance_for_company, add_amazon_order, \
82
    update_amazon_order_status, get_amazon_order, get_amazon_orders_shipped, \
83
    get_amazon_orders_cancelled, get_orders_for_store, \
84
    get_store_order_advance_invoice, add_frc, add_series, get_store_order_detail, \
85
    save_store_order_detail, get_all_edc_banks, save_refund_amounts_for_store_order, \
86
    get_collections_for_store, get_amazon_orders_to_acknowledge, \
87
    change_amazon_order_status, update_timestamp_for_amazon_order, \
88
    update_source_detail_timestamp, get_amazon_order_by_amazonorderid, \
89
    get_orders_by_mobile_number, get_orders_by_amazon_id, change_courier_provider, \
90
    convert_store_to_normal, update_freebie_item, update_order_AWB, \
20641 amit.gupta 91
    get_hotspot_service_matrices, get_orders_by_vendor, \
92
    get_orders_count_created_after_timestamp_for_source, \
11902 amit.gupta 93
    get_min_created_timestamp_undelivered_orders_for_source, \
20641 amit.gupta 94
    get_recharge_order_status, get_recharge_transaction_status, \
95
    accept_package_orders, get_group_orders_by_logistics_txn_id, \
96
    add_billing_details_for_groupped_orders, get_invoice_format_logistics_txn_id, \
97
    split_bulk_order, move_orders_to_correct_warehouse, \
98
    verify_orders_for_transaction, get_creditor_info, update_creditor_info, \
99
    get_user_sanction_details, update_user_sanction, get_credit_history_records, \
100
    process_credit_transaction, get_loan_payable_for_user_to_creditor, \
101
    get_loan_history_records, process_loan_transaction, \
102
    get_credit_history_records_paginated, get_loan_history_records_paginated, \
103
    get_user_sanction_details_paginated, get_orders_in_batch_as_promised_shipping, \
19836 amit.gupta 104
    set_order_attribute_for_master_order_id, update_master_order_awb, \
105
    add_or_update_shipment_logistics_cost_details, get_return_order_info, \
106
    get_return_orders_info_map, update_return_order_info, \
107
    bulk_update_return_order_info, get_return_orders_as_per_warehouse, \
108
    create_return_transaction, get_return_transactions_for_customer, \
109
    get_return_transaction, change_return_transaction_status, \
110
    create_return_pickup_request, update_return_pickup_request, \
111
    get_return_orders_for_return_transaction, receive_return_pickup, \
112
    validate_return_pickup, process_return_pickup, mark_return_transaction_complete, \
113
    refund_return_transaction_payment, get_eligible_orders_for_return, \
114
    get_eligible_return_orders_for_pickup, validate_return_transaction, \
115
    get_return_pickup_request, mark_return_not_required_orders_as_processed, \
19973 amit.gupta 116
    get_all_return_orders_for_return_pickup_request, unaccept_order, \
19980 amit.gupta 117
    get_outstanding_payments, mark_payment_settled, get_seller_info, \
20122 kshitij.so 118
    get_warehouse_address, get_buyer_by_warehouse, add_shipment_delay, \
22452 amit.gupta 119
    refund_return_order, get_cost_detail_for_logistics_txn_id, \
120
    add_shipment_logistic_detail, create_payment, calculate_payment_amount, \
121
    add_amount_in_wallet, get_billed_orders_for_manifest_gen, register_rsa, \
122
    add_sales_associate, search_pmsa, get_pmsa_user, update_pmsa_user, \
123
    get_pending_pmsa, get_pmsa_users, get_stats_for_associates, credit_user_wallet, \
124
    is_private_deal_transaction, add_invoice_details_to_orders, \
125
    mark_order_for_registered_gst_invoice
14134 amit.gupta 126
from shop2020.model.v1.order.impl.DataService import DtrBatchCreditTracker
20641 amit.gupta 127
from shop2020.model.v1.order.impl.ObsoleteDataAccessors import create_ebay_order, \
128
    get_ebay_order_by_orderId, get_ebay_order_by_sales_rec_number, get_ebay_order, \
129
    update_ebay_order, ebay_order_exists, update_order_for_ebay, split_ebay_order, \
130
    add_or_update_amazon_fba_sales_snapshot, get_amazon_fba_sales_snapshot_for_days, \
131
    get_amazon_fba_sales_latest_snapshot_for_item, create_snapdeal_order, \
132
    get_snapdeal_order, snapdeal_order_exists, update_latest_fba_prices_for_item, \
133
    flipkart_order_exists, create_flipkart_order, get_flipkart_order, \
134
    get_flipkart_order_by_subOrderId, update_flipkart_order_dates_and_awb, \
135
    update_snapdeal_orders_status, update_flipkart_orders_status, \
136
    bulk_add_or_update_amazon_fba_sales_snapshot, get_created_orders_for_flipkart, \
137
    change_easyship_mfn_order_txn_status, update_amazon_fba_order_returns, \
138
    get_all_amazon_fba_order_returns, get_total_sale_returns_fba_skus_curent_time, \
139
    get_amazon_fba_sales_latest_snapshot_for_item_location_wise, \
140
    get_verification_pending_orders_fk, get_fa_order_by_fk_order_id, \
141
    get_all_fa_orders_list, add_update_fa_orders_bulk, flipkart_fa_order_exists, \
142
    create_homeshop_order, get_homeshop_order, homeshop_order_exists
6000 mandeep.dh 143
from shop2020.model.v1.order.impl.model.DTHRechargeOrder import DTHRechargeOrder
6056 amit.gupta 144
from shop2020.model.v1.order.impl.model.DigitalTransaction import \
145
    DigitalTransaction
6000 mandeep.dh 146
from shop2020.model.v1.order.impl.model.MobileRechargeOrder import \
147
    MobileRechargeOrder
14134 amit.gupta 148
from shop2020.model.v1.order.impl.model.UserWalletHistory import \
149
    UserWalletHistory
22452 amit.gupta 150
from shop2020.model.v1.order.script.RechargeUnknownReport import order_list
11902 amit.gupta 151
from shop2020.model.v1.user.impl.Converters import to_t_address
6000 mandeep.dh 152
from shop2020.thriftpy.model.v1.order.ttypes import TransactionServiceException, \
20927 kshitij.so 153
    RechargeType, AmazonOrdersToAcknowledge, WalletReferenceType
6000 mandeep.dh 154
from shop2020.utils.Utils import to_py_date, get_fdate_tdate, to_java_date
20122 kshitij.so 155
import datetime
156
import json
1405 ankur.sing 157
 
5527 anupam.sin 158
 
20122 kshitij.so 159
 
104 ashish 160
class OrderServiceHandler:
161
 
3187 rajveer 162
    def __init__(self, dbname='transaction', db_hostname='localhost'):
483 rajveer 163
        """
104 ashish 164
        Constructor
483 rajveer 165
        """
3187 rajveer 166
        DataService.initialize(dbname, db_hostname)
104 ashish 167
 
168
    def createTransaction(self, transaction):
169
        """
170
        Parameters:
171
         - transaction
172
        """
766 rajveer 173
        try:
174
            return create_transaction(transaction)
175
        finally:
176
            close_session()
177
 
104 ashish 178
    def getTransaction(self, id):
179
        """
180
            Get transaction methods.
181
 
182
        Parameters:
183
         - id
184
        """
766 rajveer 185
        try:
186
            transaction = get_transaction(id)
187
            return to_t_transaction(transaction)
188
        finally:
189
            close_session()
190
 
483 rajveer 191
    def getTransactionsForCustomer(self, customerId, from_date, to_date, status):
104 ashish 192
        """
193
        Parameters:
483 rajveer 194
         - customerId
104 ashish 195
         - from_date
196
         - to_date
483 rajveer 197
         - status
104 ashish 198
        """
766 rajveer 199
        try:
200
            current_from_date, current_to_date = get_fdate_tdate(from_date, to_date)
201
 
202
            transactions = get_transactions_for_customer(customerId, current_from_date, current_to_date, status)
203
            t_transaction = []
204
            for transaction in transactions:
205
                t_transaction.append(to_t_transaction(transaction))
206
            return t_transaction
207
        finally:
208
            close_session()
483 rajveer 209
 
210
    def getTransactionsForShoppingCartId(self, shoppingCartId):
211
        """
212
        Parameters:
213
            - shoppingCartId
214
        """
766 rajveer 215
        try:
216
            transactions = get_transactions_for_shopping_cart_id(shoppingCartId)
217
            t_transaction = []
218
            for transaction in transactions:
219
                t_transaction.append(to_t_transaction(transaction))
220
            return t_transaction
221
        finally:
222
            close_session()
104 ashish 223
 
483 rajveer 224
    def getTransactionStatus(self, transactionId):
104 ashish 225
        """
226
        Parameters:
483 rajveer 227
         - transactionId
228
        """
766 rajveer 229
        try:
230
            return get_transaction_status(transactionId)
231
        finally:
232
            close_session()
233
 
7293 anupam.sin 234
    def changeTransactionStatus(self, transactionId, status, description, pickUp, orderType, source):
483 rajveer 235
        """
236
        Parameters:
237
         - transactionId
104 ashish 238
         - status
483 rajveer 239
         - description
5387 rajveer 240
         - selfPickup
483 rajveer 241
        """
766 rajveer 242
        try:
7293 anupam.sin 243
            return change_transaction_status(transactionId, status, description, pickUp, orderType, source)
766 rajveer 244
        finally:
245
            close_session()
246
 
1528 ankur.sing 247
    def getOrdersForTransaction(self, transactionId, customerId):
483 rajveer 248
        """
1528 ankur.sing 249
        Returns list of orders for given transaction Id. Also filters based on customer Id so that
250
        only user who owns the transaction can view its order details.
251
 
483 rajveer 252
        Parameters:
253
         - transactionId
1528 ankur.sing 254
         - customerId
483 rajveer 255
        """
766 rajveer 256
        try:
1528 ankur.sing 257
            orders = get_orders_for_transaction(transactionId, customerId)
766 rajveer 258
            return [to_t_order(order) for order in orders]    
259
        finally:
260
            close_session()
261
 
4801 anupam.sin 262
    def getAllOrders(self, statuses, from_date, to_date, warehouse_id):
483 rajveer 263
        """
264
        Parameters:
265
         - status
104 ashish 266
         - from_date
267
         - to_date
483 rajveer 268
         - warehouse_id
104 ashish 269
        """
766 rajveer 270
        try:
271
            current_from_date, current_to_date = get_fdate_tdate(from_date, to_date)        
4801 anupam.sin 272
            orders = get_all_orders(statuses, current_from_date, current_to_date, warehouse_id)
766 rajveer 273
            return [to_t_order(order) for order in orders]
274
        finally:
275
            close_session()
4133 chandransh 276
 
8303 amar.kumar 277
    def getOrdersInBatch(self, statuses, offset, limit, warehouse_id, source):
4133 chandransh 278
        """
279
        Returns at most 'limit' orders with the given statuses for the given warehouse starting from the given offset.
280
        Pass the status as null and the limit as 0 to ignore them.
281
 
282
        Parameters:
283
         - statuses
284
         - offset
285
         - limit
286
         - warehouse_id
287
        """
288
        try:
8303 amar.kumar 289
            orders = get_orders_in_batch(statuses, offset, limit, warehouse_id, source)
4133 chandransh 290
            return [to_t_order(order) for order in orders]
291
        finally:
292
            close_session()
293
 
8303 amar.kumar 294
    def getOrderCount(self, statuses, warehouseId, source):
4133 chandransh 295
        """
296
        Returns the count of orders with the given statuses assigned to the given warehouse.
297
 
298
        Parameters:
299
         - statuses
300
         - warehouseId
301
        """
302
        try:
8303 amar.kumar 303
            return get_order_count(statuses, warehouseId, source)
4133 chandransh 304
        finally:
305
            close_session()
306
 
995 varun.gupt 307
    def getOrdersByBillingDate(self, status, start_billing_date, end_billing_date, warehouse_id):
308
        """
309
        Parameters:
310
         - status
311
         - start_billing_date
312
         - end_billing_date
313
         - warehouse_id
314
        """
315
        try:
316
            current_start_billing_date, current_end_billing_date = get_fdate_tdate(start_billing_date, end_billing_date)
317
            orders = get_orders_by_billing_date(status, current_start_billing_date, current_end_billing_date, warehouse_id)
318
            return [to_t_order(order) for order in orders]
319
        finally:
320
            close_session()
1382 varun.gupt 321
 
3451 chandransh 322
    def getOrdersByShippingDate(self, fromShippingDate, toShippingDate, providerId, warehouseId, cod):
3427 chandransh 323
        """
324
        Returns orders for a particular provider and warehouse which were shipped between the given dates.
3451 chandransh 325
        Returned orders comprise of COD orders if cod parameter is true. It comprises of prepaid orders otherwise.
326
        Pass providerId and warehouseId as -1 to ignore both these parameters.
3427 chandransh 327
 
328
        Parameters:
329
         - fromShippingDate
330
         - toShippingDate
331
         - providerId
332
         - warehouseId
3451 chandransh 333
         - cod
3427 chandransh 334
        """
335
        try:
336
            from_shipping_date, to_shipping_date = get_fdate_tdate(fromShippingDate, toShippingDate)
3451 chandransh 337
            orders = get_orders_by_shipping_date(from_shipping_date, to_shipping_date, providerId, warehouseId, cod)
3427 chandransh 338
            return [to_t_order(order) for order in orders]
339
        finally:
340
            close_session()
341
 
1382 varun.gupt 342
    def getReturnableOrdersForCustomer(self, customerId, limit = None):
343
        """
344
        Parameters:
345
         - customerId
346
         - limit
347
        """
348
        try:
349
            return get_returnable_orders_for_customer(customerId, limit)
350
        finally:
351
            close_session()
995 varun.gupt 352
 
1382 varun.gupt 353
    def getCancellableOrdersForCustomer(self, customerId, limit = None):
354
        """
355
        Parameters:
356
         - customerId
357
         - limit
358
        """
359
        try:
360
            return get_cancellable_orders_for_customer(customerId, limit)
361
        finally:
362
            close_session()
363
 
483 rajveer 364
    def changeOrderStatus(self, orderId, status, description):
365
        """
366
        Parameters:
367
         - orderId
368
         - status
369
         - description
370
         - 
371
        """
766 rajveer 372
        try:
373
            return change_order_status(self, orderId, status, description)
374
        finally:
375
            close_session()
921 rajveer 376
 
3064 chandransh 377
    def verifyOrder(self, orderId):
378
        """
379
        Marks the given order as SUBMITTED_FOR_PROCESSING and updates the verified
380
        timestamp. It is intended to be used for COD orders but can be harmlessly
381
        used for all other orders as well.
382
        Throws an exception if no such order exists.
383
 
384
        Parameters:
385
         - orderId
386
        """
387
        try:
7391 rajveer 388
            return verify_order(orderId)
3064 chandransh 389
        finally:
390
            close_session()
391
 
921 rajveer 392
    def acceptOrder(self, orderId):
393
        """
3064 chandransh 394
        Marks the given order as ACCEPTED and updates the accepted timestamp. If the
395
        given order is not a COD order, it also captures the payment if the same has
396
        not been captured.
397
        Throws an exception if no such order exists.
398
 
921 rajveer 399
        Parameters:
400
         - orderId
401
        """
402
        try:
4285 rajveer 403
            return accept_order(orderId)
921 rajveer 404
        finally:
405
            close_session()
19832 amit.gupta 406
 
407
    def unacceptOrder(self, orderId):
408
        """
409
        Rollsback to Processing State
410
 
411
        Parameters:
412
         - orderId
413
        """
414
        try:
19836 amit.gupta 415
            return unaccept_order(orderId)
19832 amit.gupta 416
        finally:
417
            close_session()
921 rajveer 418
 
3014 chandransh 419
    def getOrdersForCustomer(self, customerId, from_date, to_date, statuses):
104 ashish 420
        """
3014 chandransh 421
        Returns list of orders for the given customer created between the given dates and having the given statuses.
422
        Pass and empty list to ignore filtering on statuses.
423
 
104 ashish 424
        Parameters:
425
         - customerId
426
         - from_date
427
         - to_date
3014 chandransh 428
         - statuses
104 ashish 429
        """
766 rajveer 430
        try:
431
            current_from_date, current_to_date = get_fdate_tdate(from_date, to_date)
432
 
3014 chandransh 433
            orders = get_orders_for_customer(customerId, current_from_date, current_to_date, statuses)
766 rajveer 434
            return [to_t_order(order) for order in orders]
435
        finally:
436
            close_session()
1528 ankur.sing 437
 
438
    def getOrderForCustomer(self, orderId, customerId):
439
        """
440
        Returns an order for the order Id. Also checks if the order belongs to the customer whose Id is passed.
441
        Throws exception if either order Id is invalid or order does not below to the customer whose Id is passed.
442
 
443
        Parameters:
444
         - customerId
445
         - orderId
446
        """
447
        try:
448
            return to_t_order(get_order_for_customer(orderId, customerId))
449
        finally:
450
            close_session()
766 rajveer 451
 
483 rajveer 452
    def getOrder(self, id):
453
        """
454
        Parameters:
455
         - id
456
        """
766 rajveer 457
        try:
458
            return to_t_order(get_order(id))
459
        finally:
460
            close_session()
4999 phani.kuma 461
 
462
    def getOrderList(self, order_ids):
463
        """
464
        Parameters:
465
         - order_ids
466
        """
467
        try:
468
            orders = get_order_list(order_ids)
469
            return [to_t_order(order) for order in orders]
470
        finally:
471
            close_session()
472
 
5386 phani.kuma 473
    def getOrderListForVendor(self, order_ids, vendorId):
474
        """
475
        Parameters:
476
         - order_ids
477
         - vendorId
478
        """
479
        try:
480
            orders = get_order_list_for_vendor(order_ids, vendorId)
481
            return [to_t_order(order) for order in orders]
482
        finally:
483
            close_session()
484
 
483 rajveer 485
    def getLineItemsForOrder(self, orderId):
486
        """
487
        Parameters:
488
         - orderId
489
        """
766 rajveer 490
        try:
491
            lineitems = get_line_items_for_order(orderId)
492
            t_lineitems = []
493
            for lineitem in lineitems:
494
                t_lineitems.append(to_t_lineitem(lineitem))
495
            return t_lineitems
496
        finally:
497
            close_session()
1149 chandransh 498
 
7190 amar.kumar 499
    def addBillingDetails(self, orderId, invoice_number, serialNumber, itemNumber, freebieWarehouseId, billedBy, jacketNumber, billingType, vendorId, authorize):
494 rajveer 500
        """
4658 mandeep.dh 501
        Adds jacket number and serial no. to the order. Doesn't update the serial no. if a -1 is supplied.
2783 chandransh 502
        Also marks the order as billed and sets the billing timestamp.
503
        Return false if it doesn't find the order with the given ID.
1149 chandransh 504
 
505
        Parameters:
506
         - orderId
507
         - jacketNumber
4658 mandeep.dh 508
         - serialNumber
2783 chandransh 509
         - itemNumber
7190 amar.kumar 510
         - freebieWarehouseId
2783 chandransh 511
         - billedBy
1149 chandransh 512
        """
513
        try:
7190 amar.kumar 514
            return add_billing_details(orderId, invoice_number, serialNumber, itemNumber, freebieWarehouseId, billedBy, jacketNumber, billingType, vendorId, authorize)
1149 chandransh 515
        finally:
516
            close_session()
1220 chandransh 517
 
6751 amar.kumar 518
    def addInvoiceNumber(self, orderId, invoiceNumber, color, serialNumber, itemNumber):
4579 rajveer 519
        """
520
        Add the invoice number to the order.
521
 
522
        Parameters:
523
         - orderId
524
         - invoice_number
525
        """
526
        try:
6751 amar.kumar 527
            add_invoice_number(orderId, invoiceNumber, color, serialNumber, itemNumber)
4579 rajveer 528
        finally:
529
            close_session()
530
 
1220 chandransh 531
    def batchOrders(self, warehouseId):
532
        """
533
        Create a batch of all the pending orders for the given warehouse.
534
        The returned list is orderd by created_timestamp.
535
        If there are no pending orders, an empty list is returned.
1208 chandransh 536
 
1220 chandransh 537
        Parameters:
538
         - warehouseId
539
        """
540
        try:
541
            pending_orders = batch_orders(warehouseId)
542
            return [to_t_order(order) for order in pending_orders]
543
        finally:
544
            close_session()
545
 
1208 chandransh 546
    def markOrderAsOutOfStock(self, orderId):
547
        """
548
        Mark the given order as out of stock. Throws an exception if the order with the given Id couldn't be found.
549
 
550
 
551
        Parameters:
552
         - orderId
553
        """
554
        try:
555
            return order_outofstock(orderId)
556
        finally:
557
            close_session()
558
 
4910 phani.kuma 559
    def markOrdersAsShippedFromWarehouse(self, warehouseId, providerId, cod, orderIds):
759 chandransh 560
        """
3064 chandransh 561
        Depending on the third parameter, marks either all prepaid or all cod orders BILLED by the
4910 phani.kuma 562
        given warehouse and were picked up by the given provider as SHIPPED_FROM_WH.
759 chandransh 563
 
564
        Parameters:
565
         - warehouseId
566
         - providerId
3064 chandransh 567
         - cod
759 chandransh 568
        """
766 rajveer 569
        try:
4910 phani.kuma 570
            return mark_orders_as_shipped_from_warehouse(warehouseId, providerId, cod, orderIds)
766 rajveer 571
        finally:
572
            close_session()
1113 chandransh 573
 
5713 rajveer 574
    def markOrdersAsReturnedFromStore(self, providerId, orderIds, awbs):
5676 rajveer 575
        """
576
        Parameters:
577
         - providerId
578
         - orderIds
5713 rajveer 579
         - awbs
5676 rajveer 580
        """
581
        try:
5713 rajveer 582
            return mark_orders_as_returned_from_store(providerId, orderIds, awbs)
5676 rajveer 583
        finally:
584
            close_session()
585
 
586
    def setOrderAttributes(self, orderId, attributes):
587
        """
588
        sets attributes for an order
589
 
590
        Parameters:
591
         - orderId
592
         - attributes
593
        """
594
        try:
595
            return set_order_attributes(orderId, attributes)
596
        finally:
597
            close_session()
598
 
599
 
4910 phani.kuma 600
    def markOrdersAsPickedUp(self, providerId, pickupDetails):
4410 rajveer 601
        """
4910 phani.kuma 602
        Marks all SHIPPED_FROM_WH orders of the previous day for a provider as SHIPPED_TO_LOGISTICS.
603
        Raises an exception if we encounter report for an AWB number that we did not ship.
4410 rajveer 604
 
605
        Parameters:
606
         - providerId
4910 phani.kuma 607
         - pickupDetails
4410 rajveer 608
        """
609
        try:
4910 phani.kuma 610
            mark_orders_as_picked_up(providerId, pickupDetails)
4410 rajveer 611
        finally:
612
            close_session()
613
 
4910 phani.kuma 614
    def getOrdersNotPickedUp(self, providerId):
1113 chandransh 615
        """
616
        Returns a list of orders that were shipped from warehouse but did not appear in the pick-up report.
617
 
618
        Parameters:
619
         - providerId
620
        """
621
        try:
4910 phani.kuma 622
            orders_not_picked_up = get_orders_not_picked_up(providerId)
1113 chandransh 623
            return [to_t_order(order) for order in orders_not_picked_up]
624
        finally:
625
            close_session()
1132 chandransh 626
 
627
    def markOrdersAsDelivered(self, providerId, deliveredOrders):
628
        """
629
        Marks all orders with AWBs in the given map as delivered. Also sets the delivery timestamp and
630
        the name of the receiver.
631
        Raises an exception if we encounter report for an AWB number that we did not ship.
632
 
633
        Parameters:
634
         - providerId
635
         - deliveredOrders
636
        """
637
        try:
638
            mark_orders_as_delivered(providerId, deliveredOrders)
639
        finally:
640
            close_session()
1135 chandransh 641
 
4712 rajveer 642
    def markOrderAsDelivered(self, orderId, deliveryTimestamp, receiver):
643
        """
644
        Attributes:
645
         - orderId
646
         - deliveryTimestamp
647
         - receiver
648
        """
649
        try:
650
            mark_order_as_delivered(orderId, to_py_date(deliveryTimestamp), receiver)
651
        finally:
652
            close_session()
653
 
654
 
5555 rajveer 655
    def markOrderAsReceivedAtStore(self, orderId, deliveryTimestamp):
656
        """
657
        Attributes:
658
         - orderId
659
         - deliveryTimestamp
660
        """
661
        try:
662
            mark_order_as_received_at_store(orderId, to_py_date(deliveryTimestamp))
663
        finally:
664
            close_session()
665
 
666
    def getReceivePendingOrders(self, storeId):
667
        """
668
        Attributes:
669
         - storeId
670
        """
671
        try:
672
            orders = get_receive_pending_orders(storeId)
673
            return [to_t_order(order) for order in orders]
674
        finally:
675
            close_session()
676
 
677
    def getReceivedAtStoreOrders(self, storeId):
678
        """
679
        Attributes:
680
         - storeId
681
        """
682
        try:
683
            orders = get_received_at_store_orders(storeId)
684
            return [to_t_order(order) for order in orders]
685
        finally:
686
            close_session()
5713 rajveer 687
 
688
    def getOrdersCollectionAtStore(self, storeId, fromDate, toDate, onlyCod):
689
        """
690
        Parameters:
691
         - storeId
692
         - fromDate
693
         - toDate
694
         - onlyCod
695
        """
696
        try:
697
            orders = get_orders_collection_at_store(storeId, to_py_date(fromDate), to_py_date(toDate), onlyCod)
698
            return [to_t_order(order) for order in orders]
699
        finally:
700
            close_session()
701
 
4910 phani.kuma 702
    def markAsRTOrders(self, providerId, returnedOrders):
1135 chandransh 703
        """
4910 phani.kuma 704
        Mark all orders with AWBs in the given map as RTO. Also sets the delivery timestamp.
1135 chandransh 705
        Raises an exception if we encounter report for an AWB number that we did not ship.
706
 
707
        Parameters:
708
         - providerId
709
         - returnedOrders
710
        """
711
        try:
4910 phani.kuma 712
            mark_orders_as_rto(providerId, returnedOrders)
1135 chandransh 713
        finally:
714
            close_session()
1246 chandransh 715
 
4910 phani.kuma 716
    def getRTOrders(self, providerId):
717
        """
718
        Returns a list of orders that were returned by courier.
719
 
720
        Parameters:
721
         - providerId
722
        """
723
        try:
724
            rto_orders = get_rto_orders(providerId)
725
            return [to_t_order(order) for order in rto_orders]
726
        finally:
727
            close_session()
728
 
1246 chandransh 729
    def updateNonDeliveryReason(self, providerId, undeliveredOrders):
730
        """
731
        Update the status description of orders whose AWB numbers are keys of the Map.
732
 
733
        Parameters:
734
         - providerId
735
         - undelivered_orders
736
        """
737
        try:
4910 phani.kuma 738
            update_non_delivery_reason(providerId, undeliveredOrders)
739
        finally:
740
            close_session()
741
 
742
    def getNonDeliveredOrdersbyCourier(self, providerId):
743
        """
744
        Returns a list of orders that were picked up or shipped four days ago but did not get delivered.
745
 
746
        Parameters:
747
         - providerId
748
        """
749
        try:
750
            orders_not_delivered = get_non_delivered_orders_by_courier(providerId)
4581 phani.kuma 751
            return [to_t_order(order) for order in orders_not_delivered]
1246 chandransh 752
        finally:
753
            close_session()
1405 ankur.sing 754
 
4910 phani.kuma 755
    def markOrdersAsLocalConnected(self, providerId, local_connected_orders):
756
        """
757
        Mark all orders with AWBs in the given map as local connected. Also sets the local connected timestamp.
758
 
759
        Parameters:
760
         - providerId
761
         - local_connected_orders
762
        """
763
        try:
764
            mark_orders_as_local_connected(providerId, local_connected_orders)
765
        finally:
766
            close_session()
767
 
768
    def getOrdersNotLocalConnected(self, providerId):
769
        """
770
        Returns a list of orders that were picked up or shipped but pending local connection.
771
 
772
        Parameters:
773
         - providerId
774
        """
775
        try:
776
            orders_pending_local_connection = get_orders_not_local_connected(providerId)
777
            return [to_t_order(order) for order in orders_pending_local_connection]
778
        finally:
779
            close_session()
780
 
781
    def markOrdersAsDestinationCityReached(self, providerId, destination_city_reached_orders):
782
        """
783
        Mark all orders with AWBs in the given map as reached destination city. Also sets the reached destination timestamp.
784
 
785
        Parameters:
786
         - providerId
787
         - destination_city_reached_orders
788
        """
789
        try:
790
            mark_orders_as_destinationCityReached(providerId, destination_city_reached_orders)
791
        finally:
792
            close_session()
793
 
794
    def markOrdersAsFirstDeliveryAttempted(self, providerId, first_atdl_orders):
795
        """
796
        Mark all orders with AWBs in the given map as first delivery attempt made. Also sets the first delivery attempted timestamp.
797
 
798
        Parameters:
799
         - providerId
800
         - first_atdl_orders
801
        """
802
        try:
803
            mark_orders_as_firstDeliveryAttempted(providerId, first_atdl_orders)
804
        finally:
805
            close_session()
806
 
4783 phani.kuma 807
    def getUndeliveredOrdersExpectedDeliveryDateNotMet(self):
808
        """
809
        Returns the list of orders whose expected delivery date has passed but have not been
810
        delivered yet.
811
        Returns an empty list if no such orders exist.
812
        """
813
        try:
814
            orders_not_delivered = get_orders_not_met_expected_delivery_date()
815
            return [to_t_order(order) for order in orders_not_delivered]
816
        finally:
817
            close_session()
818
 
1405 ankur.sing 819
    def getUndeliveredOrders(self, providerId, warehouseId):
820
        """
821
        Returns the list of orders whose delivery time has passed but have not been
822
        delivered yet for the given provider and warehouse. To get a complete list of
823
        undelivered orders, pass them as -1.
824
        Returns an empty list if no such orders exist.
825
 
826
        Parameters:
827
         - providerId
828
         - warehouseId
829
        """
830
        try:
831
            undelivered_orders = get_undelivered_orders(providerId, warehouseId)
832
            return [to_t_order(order) for order in undelivered_orders]
833
        finally:
834
            close_session()
1351 varun.gupt 835
 
1398 varun.gupt 836
    def enqueueTransactionInfoEmail(self, transactionId):
1351 varun.gupt 837
        """
1398 varun.gupt 838
        Save the email containing order details to be sent to customer later by batch job
1351 varun.gupt 839
 
840
        Parameters:
841
         - transactionId
842
        """
843
        try:
1398 varun.gupt 844
            return enqueue_transaction_info_email(transactionId)
1351 varun.gupt 845
        finally:
846
            close_session()
847
 
4444 rajveer 848
    def getAlerts(self, type, warehouseId, status, timestamp):
483 rajveer 849
        """
850
        Parameters:
4394 rajveer 851
         - type
4444 rajveer 852
         - warehouseId
4394 rajveer 853
         - status
854
         - timestamp
483 rajveer 855
        """
766 rajveer 856
        try:
4444 rajveer 857
            alerts = get_alerts(type, warehouseId, status, timestamp)
766 rajveer 858
 
859
            t_alerts = []
860
            for alert in alerts:
861
                t_alerts.append(to_t_alert(alert)) 
862
 
863
            return t_alerts
864
        finally:
865
            close_session()
4394 rajveer 866
 
4447 rajveer 867
    def addAlert(self, type, warehouseId, description):
483 rajveer 868
        """
869
        Parameters:
870
         - type
4394 rajveer 871
         - description
4447 rajveer 872
         - warehouseId
483 rajveer 873
        """
766 rajveer 874
        try:
4447 rajveer 875
            add_alert(type, warehouseId, description)
766 rajveer 876
        finally:
877
            close_session()
1596 ankur.sing 878
 
4444 rajveer 879
    def markAlertsAsSeen(self, warehouseId):
880
        """
881
        Parameters:
882
         - warehouseId
883
        """
884
        try:
885
            mark_alerts_as_seen(warehouseId)
886
        finally:
887
            close_session()
888
        pass
889
 
1596 ankur.sing 890
    def getValidOrderCount(self, ):
891
        """
892
        Return the number of valid orders. (OrderStatus >= OrderStatus.SUBMITTED_FOR_PROCESSING)
893
        """
1731 ankur.sing 894
        try:
895
            return get_valid_order_count()
896
        finally:
897
            close_session()
1627 ankur.sing 898
 
899
    def getNoOfCustomersWithSuccessfulTransaction(self, ):
900
        """
901
        Returns the number of distinct customers who have done successful transactions
902
        """
1731 ankur.sing 903
        try:
904
            return get_cust_count_with_successful_txn()
905
        finally:
906
            close_session()
1627 ankur.sing 907
 
1731 ankur.sing 908
 
909
    def getValidOrdersAmountRange(self, ):
1627 ankur.sing 910
        """
1731 ankur.sing 911
        Returns the minimum and maximum amounts of a valid order. (OrderStatus >= OrderStatus.SUBMITTED_FOR_PROCESSING)
912
        List contains two values, first minimum amount and second maximum amount.
1627 ankur.sing 913
        """
1731 ankur.sing 914
        try:
915
            return get_valid_orders_amount_range()
916
        finally:
917
            close_session()
1627 ankur.sing 918
 
5874 rajveer 919
    def getValidOrders(self, limit, onlyStore):
1886 ankur.sing 920
        """
921
        Returns list of Orders in descending order by Order creation date. List is restricted to limit Orders.
922
        If limit is passed as 0, then all valid Orders are returned.
923
 
924
        Parameters:
925
         - limit
5874 rajveer 926
         - onlyStore
1886 ankur.sing 927
        """
928
        try:
5874 rajveer 929
            return [to_t_order(order) for order in get_valid_orders(limit, onlyStore)]
1886 ankur.sing 930
        finally:
931
            close_session()
104 ashish 932
 
2536 chandransh 933
    def toggleDOAFlag(self, orderId):
104 ashish 934
        """
2536 chandransh 935
        Toggle the DOA flag of an order. This should be used to flag an order for follow-up and unflag it when the follow-up is complete.
936
        Returns the final flag status.
937
        Throws an exception if the order with the given id couldn't be found or if the order status is not DELVIERY_SUCCESS.
483 rajveer 938
 
132 ashish 939
        Parameters:
2536 chandransh 940
         - orderId
132 ashish 941
        """
2536 chandransh 942
        try:
943
            return toggle_doa_flag(orderId)
944
        finally:
945
            close_session()
483 rajveer 946
 
4454 rajveer 947
    def markOrderDoaRequestReceived(self, orderId):
948
        """
949
        Once user raise the request for a DOA, order status will be changed from DELVIERY_SUCCESS to DOA_REQUEST_RECEIVED
950
 
951
        Parameters:
952
         - orderId
953
        """
954
        try:
955
            return mark_order_doa_request_received(orderId)
956
        finally:
957
            close_session()
958
 
7645 anupam.sin 959
    def markOrderDoaRequestAuthorized(self, orderId, isAuthorized,  fromStore, isReship):
4454 rajveer 960
        """
961
        CRM person can authorize or deny the request reised by customer. If he authorizes order will change from DOA_REQUEST_RECEIVED
962
        to DOA_REQUEST_AUTHORIZED. If he denies, status will be changed back to DELVIERY_SUCCESS.
963
 
964
        Parameters:
965
         - orderId
966
         - isAuthorized
967
        """
968
        try:
7645 anupam.sin 969
            return mark_order_doa_request_authorized(orderId, isAuthorized, fromStore, isReship)
4454 rajveer 970
        finally:
971
            close_session()
972
 
4488 rajveer 973
    def markOrderReturnRequestReceived(self, orderId):
974
        """
975
        Once user raise the request for a DOA, order status will be changed from DELVIERY_SUCCESS to RET_REQUEST_RECEIVED
976
 
977
        Parameters:
978
         - orderId
979
        """
980
        try:
981
            return mark_order_return_request_received(orderId)
982
        finally:
983
            close_session()
984
 
7645 anupam.sin 985
    def markOrderReturnRequestAuthorized(self, orderId, isAuthorized, fromStore, isReship):
4488 rajveer 986
        """
987
        CRM person can authorize or deny the request reised by customer. If he authorizes order will change from RET_REQUEST_RECEIVED
988
        to RET_REQUEST_AUTHORIZED. If he denies, status will be changed back to DELVIERY_SUCCESS.
989
 
990
        Parameters:
991
         - orderId
992
         - isAuthorized
993
        """
994
        try:
7645 anupam.sin 995
            return mark_order_return_request_authorized(orderId, isAuthorized, fromStore, isReship)
4488 rajveer 996
        finally:
997
            close_session()
998
 
4579 rajveer 999
    def requestPickupNumber(self, orderId, providerId):
104 ashish 1000
        """
2536 chandransh 1001
        Sends out an email to the account manager of the original courier provider used to ship the order.
4452 rajveer 1002
        If the order status was DELIVERY_SUCCESS, it is changed to be DOA_PICKUP_REQUEST_RAISED.
1003
        If the order status was DOA_PICKUP_REQUEST_RAISED, it is left unchanged.
2536 chandransh 1004
        For any other status, it returns false.
1005
        Throws an exception if the order with the given id couldn't be found.
104 ashish 1006
 
1007
        Parameters:
2536 chandransh 1008
         - orderId
104 ashish 1009
        """
2536 chandransh 1010
        try:
4579 rajveer 1011
            return request_pickup_number(orderId, providerId)
2536 chandransh 1012
        finally:
1013
            close_session()
483 rajveer 1014
 
4602 rajveer 1015
    def authorizePickup(self, orderId, pickupNumber, providerId):
304 ashish 1016
        """
4452 rajveer 1017
        If the order status is DOA_PICKUP_REQUEST_RAISED, it does the following
2536 chandransh 1018
            1. Sends out an email to the customer with the dispatch advice that he has to print as an attachment.
1019
            2. Changes order status to be DOA_PICKUP_AUTHORIZED.
1020
            3. Returns true
1021
        If the order is any other status, it returns false.
1022
        Throws an exception if the order with the given id couldn't be found.
304 ashish 1023
 
1024
        Parameters:
2536 chandransh 1025
         - orderId
1026
         - pickupNumber
304 ashish 1027
        """
2536 chandransh 1028
        try:
4602 rajveer 1029
            return authorize_pickup(orderId, pickupNumber, providerId)
2536 chandransh 1030
        finally:
1031
            close_session()    
2764 chandransh 1032
 
1033
    def markDoasAsPickedUp(self, providerId, pickupDetails):
1034
        """
1035
        Marks all DOA_PICKUP_AUTHORIZED orders of the previous day for a provider as DOA_RETURN_IN_TRANSIT.
1036
 
1037
        Parameters:
1038
         - providerId
1039
         - pickupDetails
1040
        """
1041
        try:
4910 phani.kuma 1042
            mark_doas_as_picked_up(providerId, pickupDetails)
1043
        finally:
1044
            close_session()
1045
 
1046
    def getDoasNotPickedUp(self, providerId):
1047
        """
1048
        Returns a list of orders that were authorized for pickup but did not appear in the pick-up report.
1049
 
1050
        Parameters:
1051
         - providerId
1052
        """
1053
        try:
1054
            orders_not_picked_up = get_doas_not_picked_up(providerId)
2764 chandransh 1055
            return [to_t_order(order) for order in orders_not_picked_up]
1056
        finally:
1057
            close_session()
4910 phani.kuma 1058
 
4741 phani.kuma 1059
    def markReturnOrdersAsPickedUp(self, providerId, pickupDetails):
1060
        """
1061
        Marks all RET_PICKUP_CONFIRMED orders of the previous day for a provider as RET_RETURN_IN_TRANSIT.
1062
 
1063
        Parameters:
1064
         - providerId
1065
         - pickupDetails
1066
        """
1067
        try:
4910 phani.kuma 1068
            mark_return_orders_as_picked_up(providerId, pickupDetails)
1069
        finally:
1070
            close_session()
1071
 
1072
    def getReturnOrdersNotPickedUp(self, providerId):
1073
        """
1074
        Returns a list of orders that were authorized for pickup but did not appear in the pick-up report.
1075
 
1076
        Parameters:
1077
         - providerId
1078
        """
1079
        try:
1080
            orders_not_picked_up = get_return_orders_not_picked_up(providerId)
4741 phani.kuma 1081
            return [to_t_order(order) for order in orders_not_picked_up]
1082
        finally:
1083
            close_session()
4910 phani.kuma 1084
 
13276 manish.sha 1085
    def receiveReturn(self, orderId, receiveCondition, receiveFreebie, serialNumbers):
2591 chandransh 1086
        """
4452 rajveer 1087
        If the order status is DOA_PICKUP_CONFIRMED or DOA_RETURN_IN_TRANSIT, marks the order status as DOA_RECEIVED_PRESTINE and returns true.
2591 chandransh 1088
        If the order is in any other state, it returns false.
1089
        Throws an exception if the order with the given id couldn't be found.
1090
 
1091
        Parameters:
1092
         - orderId
1093
        """
1094
        try:
13276 manish.sha 1095
            return receive_return(orderId, receiveCondition, receiveFreebie, serialNumbers)
2591 chandransh 1096
        finally:
1097
            close_session()
1098
 
1099
    def validateDoa(self, orderId, isValid):
1100
        """
4452 rajveer 1101
        Used to validate the DOA certificate for an order in the DOA_RECEIVED_PRESTINE state. If the certificate is valid,
2609 chandransh 1102
        the order state is changed to DOA_CERT_PENDING.
2591 chandransh 1103
        If the certificate is invalid, the order state is changed to DOA_CERT_INVALID.
1104
        If the order is in any other state, it returns false.
1105
        Throws an exception if the order with the given id couldn't be found.
1106
 
1107
        Parameters:
1108
         - orderId
1109
         - isValid
1110
        """
1111
        try:
1112
            return validate_doa(orderId, isValid)
1113
        finally:
1114
            close_session()
2628 chandransh 1115
 
4495 rajveer 1116
    def validateReturnProduct(self, orderId, isUsable):
1117
        """
1118
        Parameters:
1119
         - orderId
1120
         - isUsable
1121
        """
1122
        try:
1123
            return validate_return_product(orderId, isUsable)
1124
        finally:
1125
            close_session()
1126
 
2628 chandransh 1127
    def reshipOrder(self, orderId):
1128
        """
4484 rajveer 1129
        If the order is in RTO_RECEIVED_PRESTINE or DOA_CERT_INVALID state, it does the following:
2628 chandransh 1130
            1. Creates a new order for processing in the BILLED state. All billing information is saved.
4484 rajveer 1131
            2. Marks the current order as one of the final states RTO_RESHIPPED and DOA_INVALID_RESHIPPED depending on what state the order started in.
2628 chandransh 1132
 
1133
        If the order is in DOA_CERT_VALID state, it does the following:
1134
            1. Creates a new order for processing in the SUBMITTED_FOR_PROCESSING state.
1135
            2. Creates a return order for the warehouse executive to return the DOA material.
4452 rajveer 1136
            3. Marks the current order as the final DOA_VALID_RESHIPPED state.
2628 chandransh 1137
 
1138
        Returns the id of the newly created order.
1139
 
1140
        Throws an exception if the order with the given id couldn't be found.
1141
 
1142
        Parameters:
1143
         - orderId
1144
        """
1145
        try:
1146
            return reship_order(orderId)
1147
        finally:
1148
            close_session()
1149
 
3226 chandransh 1150
    def refundOrder(self, orderId, refundedBy, reason):
2628 chandransh 1151
        """
4484 rajveer 1152
        If the order is in RTO_RECEIVED_PRESTINE, DOA_CERT_VALID or DOA_CERT_INVALID state, it does the following:
2628 chandransh 1153
            1. Creates a refund request for batch processing.
1154
            2. Creates a return order for the warehouse executive to return the shipped material.
4484 rajveer 1155
            3. Marks the current order as RTO_REFUNDED, DOA_VALID_REFUNDED or DOA_INVALID_REFUNDED final states.
2628 chandransh 1156
 
1157
        If the order is in SUBMITTED_FOR_PROCESSING or INVENTORY_LOW state, it does the following:
1158
            1. Creates a refund request for batch processing.
3226 chandransh 1159
            2. Cancels the reservation of the item in the warehouse.
1160
            3. Marks the current order as the REFUNDED final state.
2628 chandransh 1161
 
3226 chandransh 1162
        For all COD orders, if the order is in INIT, SUBMITTED_FOR_PROCESSING or INVENTORY_LOW state, it does the following:
1163
            1. Cancels the reservation of the item in the warehouse.
1164
            2. Marks the current order as CANCELED.
1165
 
1166
        In all cases, it updates the reason for cancellation or refund and the person who performed the action.
1167
 
2628 chandransh 1168
        Returns True if it is successful, False otherwise.
1169
 
1170
        Throws an exception if the order with the given id couldn't be found.
1171
 
1172
        Parameters:
1173
         - orderId
3226 chandransh 1174
         - refundedBy
1175
         - reason
2628 chandransh 1176
        """
1177
        try:
3226 chandransh 1178
            return refund_order(orderId, refundedBy, reason)
2628 chandransh 1179
        finally:
1180
            close_session()
1181
 
2697 chandransh 1182
    def getReturnOrders(self, warehouseId, fromDate, toDate):
1183
        """
1184
        Get all return orders created between the from and to dates for the given warehouse.
1185
        Ignores the warehouse if it is passed as -1.
1186
 
1187
        Parameters:
1188
         - warehouseId
1189
         - fromDate
1190
         - toDate
1191
        """
1192
        try:
1193
            from_date, to_date = get_fdate_tdate(fromDate, toDate)
1194
            return get_return_orders(warehouseId, from_date, to_date)
1195
        finally:
1196
            close_session()
1197
 
5481 phani.kuma 1198
    def getAllReturnOrders(self, onlyNotProcessed, fromDate, toDate):
1199
        """
1200
        Get all return orders created between the from and to dates for the given warehouse.
1201
        Ignores the warehouse if it is passed as -1.
1202
 
1203
        Parameters:
1204
         - warehouseId
1205
         - fromDate
1206
         - toDate
1207
        """
1208
        try:
1209
            from_date, to_date = get_fdate_tdate(fromDate, toDate)
1210
            return get_all_return_orders(onlyNotProcessed, from_date, to_date)
1211
        finally:
1212
            close_session()
1213
 
2700 chandransh 1214
    def getReturnOrder(self, id):
1215
        """
1216
        Returns the ReturnOrder corresponding to the given id.
1217
        Throws an exception if the return order with the given id couldn't be found.
1218
 
1219
        Parameters:
1220
         - id
1221
        """
1222
        try:
1223
            return get_return_order(id)
1224
        finally:
1225
            close_session()
1226
 
2697 chandransh 1227
    def processReturn(self, returnOrderId):
1228
        """
1229
        Marks the return order with the given id as processed. Raises an exception if no such return order exists.
1230
 
1231
        Parameters:
1232
         - returnOrderId
1233
        """
1234
        try:
1235
            process_return(returnOrderId)
1236
        finally:
1237
            close_session()
4757 mandeep.dh 1238
 
1239
    def updateOrdersAsPORaised(self, itemIdQuantityMap, purchaseOrderId, warehouseId):
2819 chandransh 1240
        """
4757 mandeep.dh 1241
        Updates orders as PO raised. Also updates purchase order id in orders. Pass a map of items mapped to
1242
        the quantities for which the PO is raised.
1243
 
2819 chandransh 1244
        Parameters:
4757 mandeep.dh 1245
         - itemIdQuantityMap
1246
         - purchaseOrderId
2819 chandransh 1247
         - warehouseId
1248
        """
1249
        try:
4757 mandeep.dh 1250
            update_orders_as_PORaised(itemIdQuantityMap, purchaseOrderId, warehouseId)
2819 chandransh 1251
        finally:
1252
            close_session()
4757 mandeep.dh 1253
 
3451 chandransh 1254
    def updateWeight(self, orderId, weight):
1255
        """
1256
        Set the weight of the given order to the provided value. Will attempt to update the weight of the item in the catalog as well.
1257
 
1258
        Parameters:
1259
         - orderId
1260
         - weight
1261
        """
1262
        try:
1263
            order = update_weight(orderId, weight)
1264
            return to_t_order(order)
1265
        finally:
1266
            close_session()
1267
 
3469 chandransh 1268
    def changeItem(self, orderId, itemId):
1269
        """
1270
        Change the item to be shipped for this order. Also adjusts the reservation in the inventory accordingly.
1271
        Currently, it also ensures that only a different color of the given item is shipped.
1272
 
1273
        Parameters:
1274
         - orderId
1275
         - itemId
1276
        """
1277
        try:
1278
            order = change_product(orderId, itemId)
1279
            return to_t_order(order)
1280
        finally:
1281
            close_session()
7560 rajveer 1282
 
1283
    def changeCourierProvider(self, orderId, providerId):
1284
        try:
1285
            order = change_courier_provider(orderId, providerId)
1286
            return to_t_order(order)
1287
        finally:
1288
            close_session()
1289
 
3469 chandransh 1290
 
1291
    def shiftToWarehouse(self, orderId, warehouseId):
1292
        """
1293
        Moves the given order to the given warehouse. Also adjusts the inventory reservations accordingly.
1294
 
1295
        Parameters:
1296
         - orderId
1297
         - warehouseId
1298
        """
1299
        try:
1300
            order = change_warehouse(orderId, warehouseId)
1301
            return to_t_order(order)
1302
        finally:
1303
            close_session()
3553 chandransh 1304
 
4647 rajveer 1305
    def addDelayReason(self, orderId, delayReason, furtherDelay, delayReasonText):
3553 chandransh 1306
        """
1307
        Adds the given delay reason to the given order.
3986 chandransh 1308
        Increases the expected delivery time of the given order by the given no. of days.
3553 chandransh 1309
        Raises an exception if no order with the given id can be found.
3469 chandransh 1310
 
3553 chandransh 1311
        Parameters:
1312
         - orderId
1313
         - delayReason
1314
        """
1315
        try:
4647 rajveer 1316
            return add_delay_reason(orderId, delayReason, furtherDelay, delayReasonText)
3553 chandransh 1317
        finally:
1318
            close_session()
1319
 
3956 chandransh 1320
    def reconcileCodCollection(self, collectedAmountMap, xferBy, xferTxnId, xferDate):
1321
        """
1322
        Marks the COD orders with given AWB nos. as having been processed.
1323
        Updates the captured amount for the corresponding payment.
1324
 
1325
        Returns a map of AWBs which were not processed and the associated reason. An AWB is not processed if:
1326
        1. There is no order corresponding to an AWB number.
1327
        2. The captured amount for a payment exceeds the total payment.
1328
        3. The order corresponding to an AWB no. is in a state prior to DELIVERY_SUCCESS.
1329
 
1330
        Parameters:
1331
         - collectedAmountMap
1332
         - xferBy
1333
         - xferTxnId
1334
         - xferDate
1335
        """
1336
        try:
1337
            return reconcile_cod_collection(collectedAmountMap, xferBy, xferTxnId, xferDate)
1338
        finally:
1339
            close_session()
4008 mandeep.dh 1340
 
1341
    def getTransactionsRequiringExtraProcessing(self, category):
1342
        """
1343
        Returns the list of transactions that require some extra processing and
1344
        which belong to a particular category. This is currently used by CRM
1345
        application.
1346
        """
1347
        try:
1348
            return get_transactions_requiring_extra_processing(category)
1349
        finally:
1350
            close_session()
1351
 
1352
    def markTransactionAsProcessed(self, transactionId, category):
1353
        """
1354
        Marks a particular transaction as processed for a particular category.
1355
        It essentially deletes the transaction if it is processed for a particular
1356
        category. This is currently used by CRM application.
1357
        """
1358
        try:
1359
            return mark_transaction_as_processed(transactionId, category)
1360
        finally:
1361
            close_session()
4018 chandransh 1362
 
1363
    def getItemWiseRiskyOrdersCount(self, ):
1364
        """
1365
        Returns a map containing the number of risky orders keyed by item id. A risky order
1366
        is defined as one whose shipping date is about to expire.
1367
        """
1368
        try:
1369
            return get_item_wise_risky_orders_count()
1370
        finally:
1371
            close_session()
3956 chandransh 1372
 
4247 rajveer 1373
    def markOrderCancellationRequestReceived(self, orderId):
1374
        """
1375
        Mark order as cancellation request received. If customer sends request of cancellation of
1376
        a particular order, this method will be called. It will just change status of the order
1377
        depending on its current status. It also records the previous status, so that we can move
1378
        back to that status if cancellation request is denied.
1379
 
1380
        Parameters:
1381
         - orderId
1382
        """
1383
        try:
1384
            return mark_order_cancellation_request_received(orderId)
1385
        finally:
1386
            close_session()
1387
 
1388
 
4662 rajveer 1389
    def markOrderAsLostInTransit(self, orderId):
1390
        """
1391
        Parameters:
1392
         - orderId
1393
        """
1394
        try:
1395
            return mark_order_as_lost_in_transit(orderId)
1396
        finally:
1397
            close_session()
1398
 
4258 rajveer 1399
    def markTransactionAsPaymentFlagRemoved(self, transactionId):
4247 rajveer 1400
        """
4258 rajveer 1401
        If we and/or payment gateway has decided to accept the payment, this method needs to be called.
1402
        Changed transaction and all orders status to payment accepted.
4247 rajveer 1403
 
1404
        Parameters:
4258 rajveer 1405
         - transactionId
4247 rajveer 1406
        """
1407
        try:
4259 anupam.sin 1408
            return mark_transaction_as_payment_flag_removed(transactionId)
4247 rajveer 1409
        finally:
1410
            close_session()
4259 anupam.sin 1411
 
1412
    def refundTransaction(self, transactionId, refundedBy, reason):
1413
        """
1414
        This method is called when a flagged payment is deemed unserviceable and the corresponding orders
1415
        need to be cancelled
1416
 
1417
        Parameters:
1418
         - transactionId
1419
        """
1420
        try:
1421
            return refund_transaction(transactionId, refundedBy, reason)
1422
        finally:
1423
            close_session()
4247 rajveer 1424
 
1425
    def markOrderCancellationRequestDenied(self, orderId):
1426
        """
1427
        If we decide to not to cancel order, we will move the order ro previous status.
1428
 
1429
        Parameters:
1430
         - orderId
1431
        """
1432
        try:
1433
            return mark_order_cancellation_request_denied(orderId)
1434
        finally:
1435
            close_session()
1436
 
1437
    def markOrderCancellationRequestConfirmed(self, orderId):
1438
        """
1439
        If we decide to to cancel order, CRM will call this method to move the status of order to
1440
        cancellation request confirmed. After this OM will be able to cancel the order.
1441
 
1442
        Parameters:
1443
         - orderId
1444
        """
1445
        try:
1446
            return mark_order_cancellation_request_confirmed(orderId)
1447
        finally:
1448
            close_session()
1449
 
4324 mandeep.dh 1450
    def updateShipmentAddress(self, orderId, addressId):
1451
        """
1452
        Updates shipment address of an order. Delivery and shipping date estimates
1453
        etc. are also updated here.
1454
 
1455
        Throws TransactionServiceException in case address change is not
1456
        possible due to certain reasons such as new pincode in address is
1457
        not serviceable etc.
1458
 
1459
        Parameters:
1460
         - orderId
1461
         - addressId
1462
        """
1463
        try:
1464
            update_shipment_address(orderId, addressId)
1465
        finally:
1466
            close_session()
1467
 
4285 rajveer 1468
    def acceptOrdersForItemId(self, itemId, inventory):
1469
        """
1470
        Marks the orders as ACCEPTED for the given itemId and inventory. It also updates the accepted timestamp. If the
1471
        given order is not a COD order, it also captures the payment if the same has not been captured.
1472
 
1473
        Parameters:
1474
         - itemId
1475
         - inventory
1476
        """
1477
        try:
1478
            return accept_orders_for_item_id(itemId, inventory)
1479
        finally:
1480
            close_session()
1481
 
4303 rajveer 1482
 
1483
 
4369 rajveer 1484
    def markOrdersAsPORaised(self, vendorId, itemId, quantity, estimate, isReminder):
4303 rajveer 1485
        """
1486
        Parameters:
1487
         - vendorId
1488
         - itemId
1489
         - quantity
1490
         - estimate
4369 rajveer 1491
         - isReminder
4303 rajveer 1492
        """
1493
        try:
4369 rajveer 1494
            return mark_orders_as_po_raised(vendorId, itemId, quantity, estimate, isReminder)
4303 rajveer 1495
        finally:
1496
            close_session()
1497
 
4369 rajveer 1498
    def markOrdersAsReversalInitiated(self, vendorId, itemId, quantity, estimate, isReminder):
4303 rajveer 1499
        """
1500
        Parameters:
1501
         - vendorId
1502
         - itemId
1503
         - quantity
1504
         - estimate
4369 rajveer 1505
         - isReminder
4303 rajveer 1506
        """
1507
        try:
4369 rajveer 1508
            return mark_orders_as_reversal_initiated(vendorId, itemId, quantity, estimate, isReminder)
4303 rajveer 1509
        finally:
1510
            close_session()
1511
 
4369 rajveer 1512
    def markOrdersAsNotAvailabke(self, vendorId, itemId, quantity, estimate, isReminder):
4303 rajveer 1513
        """
1514
        Parameters:
1515
         - vendorId
1516
         - itemId
1517
         - quantity
1518
         - estimate
4369 rajveer 1519
         - isReminder
4303 rajveer 1520
        """
1521
        try:
4369 rajveer 1522
            return mark_orders_as_not_available(vendorId, itemId, quantity, estimate, isReminder)
4303 rajveer 1523
        finally:
1524
            close_session()
1525
 
1526
 
4369 rajveer 1527
    def markOrdersAsTimeout(self, vendorId):
1528
        """
1529
        Parameters:
1530
         - vendorId
1531
        """
1532
        try:
1533
            return mark_orders_as_timeout(vendorId)
1534
        finally:
1535
            close_session()
4386 anupam.sin 1536
 
1537
    def getOrderForAwb(self, awb):
1538
        """
1539
        Parameters:
1540
         - AirwayBill Number
1541
        """
13276 manish.sha 1542
        ret_Orders =[]
1543
 
4386 anupam.sin 1544
        try:
13276 manish.sha 1545
            orderList = get_order_for_awb(awb)
1546
            for order in orderList:
1547
                ret_Orders.append(to_t_order(order))
1548
            return ret_Orders
4386 anupam.sin 1549
        finally:
1550
            close_session()
4369 rajveer 1551
 
4910 phani.kuma 1552
    def getOrdersForProviderForStatus(self, provider_id, order_status_list):
4506 phani.kuma 1553
        """
1554
        Parameters:
1555
         - provider id
1556
         - order status
1557
        """
1558
        try:
4910 phani.kuma 1559
            orders_of_provider_by_status = get_orders_for_provider_for_status(provider_id, order_status_list)
4506 phani.kuma 1560
            return [to_t_order(order) for order in orders_of_provider_by_status if order != None]
1561
        finally:
1562
            close_session()
4600 varun.gupt 1563
 
1564
    def getBilledOrdersForVendor(self, vendorId, billingDateFrom, billingDateTo):
1565
        '''
1566
        Parameters:
1567
         - vendorId
1568
         - billingDateFrom
1569
         - billingDateTo
1570
        '''
1571
        try:
1572
            return [to_t_order(order) for order in get_billed_orders_for_vendor(vendorId, to_py_date(billingDateFrom), to_py_date(billingDateTo))]
1573
        finally:
1574
            close_session()
1575
 
4607 rajveer 1576
    def getSlippedSippingDateOrders(self):
1577
        try:
1578
            return [to_t_order(order) for order in get_slipped_sipping_date_orders()]
1579
        finally:
1580
            close_session()
1581
 
4709 rajveer 1582
    def getCancelledOrders(self, cancelDateFrom, cancelDateTo):
1583
        try:
1584
            return [to_t_order(order) for order in get_cancelled_orders(to_py_date(cancelDateFrom), to_py_date(cancelDateTo))]
1585
        finally:
1586
            close_session()
1587
 
4600 varun.gupt 1588
    def getEBSSettlementSummaries(self):
1589
        try:
1590
            return get_ebs_settlement_summaries()
1591
        finally:
1592
            close_session()
4369 rajveer 1593
 
4600 varun.gupt 1594
    def saveEBSSettlementSummary(self, settlementId, settlementDate, transactionDateFrom, transactionDateTo, amount):
1595
        try:
1596
            save_ebs_settlement_summary(settlementId, to_py_date(settlementDate), to_py_date(transactionDateFrom), to_py_date(transactionDateTo), amount)
1597
        finally:
1598
            close_session()
1599
 
5386 phani.kuma 1600
    def getSettlementForPrepaid(self, referenceId, isRefund):
4600 varun.gupt 1601
        '''
1602
        Parameters:
5189 varun.gupt 1603
         - referenceId
1604
         - isRefund
4600 varun.gupt 1605
        '''
1606
        try:
5386 phani.kuma 1607
            return to_t_payment_settlement(get_settlement_for_Prepaid(referenceId, isRefund))
4600 varun.gupt 1608
        finally:
1609
            close_session()
5386 phani.kuma 1610
 
1611
    def getSettlementForCod(self, orderId, isRefund):
1612
        '''
1613
        Parameters:
1614
         - orderId
1615
         - isRefund
1616
        '''
1617
        try:
1618
            return to_t_payment_settlement(get_settlement_for_Cod(orderId, isRefund))
1619
        finally:
1620
            close_session()
1621
 
4600 varun.gupt 1622
    def getEBSSettlementDate(self, settlementId):
1623
        try:
1624
            return to_java_date(get_ebs_settlement_date(settlementId))
1625
        finally:
1626
            close_session()
1627
 
4905 varun.gupt 1628
    def savePaymentSettlements(self, settlementDate, paymentGatewayId, referenceId, serviceTax, otherCharges, netCollection):
4600 varun.gupt 1629
        try:
4905 varun.gupt 1630
            save_payment_settlements(to_py_date(settlementDate), paymentGatewayId, referenceId, serviceTax, otherCharges, netCollection)
4600 varun.gupt 1631
        finally:
1632
            close_session()
1633
 
1634
    def markEBSSettlementUploaded(self, settlementId):
1635
        try:
1636
            mark_ebs_settlement_uploaded(settlementId)
1637
        finally:
1638
            close_session()
1639
 
4715 varun.gupt 1640
    def getSettlementsByDate(self, settlementDateFrom, settlementDateTo, isRefund):
1641
        try:
1642
            settlements = get_settlements_by_date(to_py_date(settlementDateFrom), to_py_date(settlementDateTo), isRefund)
1643
            return [to_t_payment_settlement(settlement) for settlement in settlements]
1644
        finally:
1645
            close_session()
1646
 
1647
    def getReshippedOrderIds(self, orderIds):
1648
        try:
1649
            return get_reshipped_order_ids(orderIds)
1650
        finally:
1651
            close_session()
1652
 
5481 phani.kuma 1653
    def getBilledOrders(self, vendorId, onlyVendorNotPaid, billingDateFrom, billingDateTo):
4875 varun.gupt 1654
        try:
5481 phani.kuma 1655
            from_date, to_date = get_fdate_tdate(billingDateFrom, billingDateTo)
1656
            return [to_t_order(order) for order in get_billed_orders(vendorId, onlyVendorNotPaid, from_date, to_date)]
4875 varun.gupt 1657
        finally:
1658
            close_session()
1659
 
5062 varun.gupt 1660
    def getStatusDistributionOfOrders(self, startDate, endDate):
1661
        try:
5067 varun.gupt 1662
            distribution = {}
1663
 
1664
            for status, count in get_order_distribution_by_status(to_py_date(startDate), to_py_date(endDate)):
1665
                distribution[status] = count
1666
 
1667
            return distribution
5062 varun.gupt 1668
        finally:
1669
            close_session()
1670
 
5067 varun.gupt 1671
    def getOrderIdsForStatus(self, status, startDatetime, endDatetime):
1672
        try:
1673
            orders = get_order_ids_for_status(status, to_py_date(startDatetime), to_py_date(endDatetime))
1674
            return [order.id for order in orders]
1675
        finally:
1676
            close_session()
1677
 
5099 varun.gupt 1678
    def updateOrderAsPaidToVendor(self, orderId):
1679
        try:
1680
            update_orders_as_paid_to_vendor(orderId)
1681
        finally:
1682
            close_session()
1683
 
5348 anupam.sin 1684
    def updateCODAgent(self, agentEmailId, orderId):
1685
        try:
1686
            update_COD_agent(agentEmailId, orderId)
1687
        finally:
1688
            close_session()
1689
 
5386 phani.kuma 1690
    def updateOrderOnlyAsPaidToVendor(self, orderId):
1691
        try:
1692
            update_order_only_as_paid_to_vendor(orderId)
1693
        finally:
1694
            close_session()
1695
 
5208 varun.gupt 1696
    def getRefundedOrdersMarkedPaid(self):
1697
        try:
1698
            return [to_t_order(order) for order in get_refunded_orders_marked_paid()]
1699
        finally:
1700
            close_session()
5447 anupam.sin 1701
 
1702
    def getAllVerificationAgents(self, minOrderId, maxOrderId):
1703
        try:
1704
            return [to_t_verification_agent(codAgent) for codAgent in get_all_verification_agents(minOrderId, maxOrderId)]
1705
        finally:
5527 anupam.sin 1706
            close_session()
1707
 
1708
    def getAllAttributesForOrderId(self, orderId):
1709
        try:
1710
            return [to_t_attribute(attribute) for attribute in get_all_attributes_for_order_id(orderId)]
1711
        finally:
1712
            close_session()
1713
 
1714
    def setOrderAttributeForTransaction(self, transactionId, attribute):
1715
        try:
1716
            set_order_attribute_for_transaction(transactionId, attribute)                    
1717
        finally:
1718
            close_session()
5593 mandeep.dh 1719
 
1720
    def acceptOrderForItem(self, itemId, quantity, fulfilmentWarehouseId, billingWarehouseId):
1721
        """
1722
        Accepts appropriate order for an item in a given billingWarehouse. Usually
1723
        invoked while scanning IN of items.
1724
 
1725
        Parameters:
1726
         - itemId
1727
         - quantity
1728
         - fulfilmentWarehouseId
1729
         - billingWarehouseId
1730
        """
1731
        try:
1732
            accept_order_for_item(itemId, quantity, fulfilmentWarehouseId, billingWarehouseId)
1733
        finally:
1734
            close_session()
1735
 
5833 rajveer 1736
    def getOrderAttributeValue(self, orderId, attributeName):
1737
        """
1738
        Parameters:
1739
         - orderId
1740
         - attributeName
1741
        """
1742
        try:
6019 rajveer 1743
            return get_order_attribute_value(orderId, attributeName)
5833 rajveer 1744
        finally:
1745
            close_session()
1746
 
6019 rajveer 1747
    def changeJacketNumber(self, orderId, jacketNumber):
1748
        """
1749
        Parameters:
1750
         - orderId
1751
         - jacketNumber
1752
        """
1753
        try:
1754
            return change_jacket_number(orderId, jacketNumber)
1755
        finally:
1756
            close_session()
1757
 
1758
    def markOrderAsRtoInTransit(self, orderId):
1759
        """
1760
        Parameters:
1761
         - orderId
1762
        """
1763
        try:
1764
            return mark_order_as_rto_in_transit(orderId)
1765
        finally:
1766
            close_session()        
1767
 
6000 mandeep.dh 1768
    def createRechargeOrder(self, thriftRechargeOrder):
1769
        """
1770
        Parameters:
1771
         - thriftRechargeOrder
1772
        """
6031 rajveer 1773
        try:
1774
            if thriftRechargeOrder is None or thriftRechargeOrder.rechargeType is None:
1775
                raise TransactionServiceException(102, 'Order or the type is Null')
1776
 
1777
            rechargeOrder = None
1778
            if thriftRechargeOrder.rechargeType == RechargeType.MOBILE:
1779
                rechargeOrder = MobileRechargeOrder()
1780
            elif thriftRechargeOrder.rechargeType == RechargeType.DTH:
1781
                rechargeOrder = DTHRechargeOrder()
1782
 
1783
            if rechargeOrder is None:
1784
                raise TransactionServiceException(102, 'Unsupported recharge type')
6000 mandeep.dh 1785
 
6031 rajveer 1786
            transaction = DigitalTransaction()
1787
            transaction.createdOn = datetime.datetime.now()
6056 amit.gupta 1788
            transaction.userId = thriftRechargeOrder.userId
6031 rajveer 1789
            transaction.orders = [rechargeOrder]
1790
 
6000 mandeep.dh 1791
            rechargeOrder.from_thrift_object(thriftRechargeOrder)
1792
            session.commit()
6031 rajveer 1793
            return rechargeOrder.to_thrift_object()
6000 mandeep.dh 1794
        except:
1795
            raise TransactionServiceException(103, 'Invalid values passed')
1796
        finally:
1797
            self.closeSession()
1798
 
6031 rajveer 1799
    def getRechargeOrder(self, rechargeOrderId):
1800
        """
1801
        Parameters:
1802
         - rechargeOrderId
1803
        """
1804
        try:
6048 rajveer 1805
            return get_recharge_order(rechargeOrderId).to_thrift_object()
6031 rajveer 1806
        finally:
1807
            self.closeSession()
1808
 
1809
    def getRechargeOrders(self, userId):
1810
        """
1811
        Parameters:
1812
         - userId
1813
        """
1814
        try:
1815
            return [order.to_thrift_object() for order in get_recharge_orders(userId)]
1816
        finally:
1817
            self.closeSession()
21535 kshitij.so 1818
 
1819
    def getPaginatedRechargeOrders(self, userId, offset, limit):
1820
        try:
1821
            return [order.to_thrift_object() for order in get_recharge_orders(userId, offset, limit)]
1822
        finally:
1823
            self.closeSession()
6031 rajveer 1824
 
6000 mandeep.dh 1825
    def updateRechargeOrderStatus(self, rechargeOrderId, rechargeOrderStatus):
1826
        """
1827
        Parameters:
1828
         - rechargeOrderId
1829
         - rechargeOrderStatus
1830
        """
6031 rajveer 1831
        try:
1832
            return update_recharge_order_status(rechargeOrderId, rechargeOrderStatus)
1833
        finally:
1834
            self.closeSession()
1835
 
1836
    def activateRechargeTxn(self, rechargeOrderId):
6000 mandeep.dh 1837
        """
1838
        Parameters:
6031 rajveer 1839
         - rechargeOrderId
6000 mandeep.dh 1840
        """
6031 rajveer 1841
        try:
1842
            return True
1843
            activate_recharge_txn(rechargeOrderId)
1844
        finally:
1845
            self.closeSession()
6000 mandeep.dh 1846
 
6031 rajveer 1847
    def getUserWallet(self, userId):
6000 mandeep.dh 1848
        """
1849
        Parameters:
6031 rajveer 1850
         - userId
6000 mandeep.dh 1851
        """
6031 rajveer 1852
        try:
1853
            return get_user_wallet(userId).to_thrift_object()
1854
        finally:
1855
            self.closeSession()
22043 amit.gupta 1856
 
1857
 
1858
    def getLatestUserWalletHistory(self, userId, offset, limit):
1859
        try:
1860
            return [userWalletHistory.to_thrift_object() for userWalletHistory in get_user_wallet_history(userId, offset, limit)]
1861
        finally:
1862
            self.closeSession()
6000 mandeep.dh 1863
 
6031 rajveer 1864
    def getUserWalletHistory(self, userId):
6000 mandeep.dh 1865
        """
1866
        Parameters:
6031 rajveer 1867
         - userId
6000 mandeep.dh 1868
        """
6031 rajveer 1869
        try:
22043 amit.gupta 1870
            return [userWalletHistory.to_thrift_object() for userWalletHistory in get_user_wallet_history(userId)]
6031 rajveer 1871
        finally:
1872
            self.closeSession()
6000 mandeep.dh 1873
 
6206 rajveer 1874
    def getServiceProviders(self, rechargeType, onlyActive):
6048 rajveer 1875
        """
1876
        Parameters:
1877
         - rechargeType
6206 rajveer 1878
         - onlyActive
6048 rajveer 1879
        """
6077 anupam.sin 1880
 
6048 rajveer 1881
        try:
6206 rajveer 1882
            return get_service_providers(rechargeType, onlyActive)
6048 rajveer 1883
        finally:
1884
            self.closeSession()
1885
 
6049 rajveer 1886
    def getServiceProviderForDevice(self, rechargeType, deviceNumber):
6048 rajveer 1887
        """
1888
        Parameters:
1889
         - deviceNumber
1890
        """
1891
        try:
6049 rajveer 1892
            return get_service_provider_for_device(rechargeType, deviceNumber)
6048 rajveer 1893
        finally:
1894
            self.closeSession()
6056 amit.gupta 1895
 
6591 anupam.sin 1896
    def validateRecharge(self, rechargeType, deviceNumber, userSelectedProviderId, clientAddress):
6269 rajveer 1897
        """
1898
        Parameters:
1899
         - deviceNumber
1900
        """
1901
        try:
6591 anupam.sin 1902
            return validate_recharge(rechargeType, deviceNumber, userSelectedProviderId, clientAddress)
6269 rajveer 1903
        finally:
1904
            self.closeSession()
1905
 
6056 amit.gupta 1906
    def getRechargeOrdersForTransaction(self, txId):
1907
        """
1908
        Parameters:
1909
         - transactionId
1910
        """
1911
        try:
1912
            return get_recharge_orders_for_transaction(txId).to_thrift_object()
1913
        finally:
1914
            self.closeSession()
6048 rajveer 1915
 
6094 rajveer 1916
    def getRechargeOrdersForDevice(self, deviceNumber):
1917
        """
1918
        Parameters:
1919
        - deviceNumber
1920
        """
1921
        try:
1922
            return [order.to_thrift_object() for order in get_recharge_orders_for_device(deviceNumber)]
1923
        finally:
1924
            self.closeSession()
1925
 
6154 rajveer 1926
    def getRechargeOrdersForStatus(self, status):
1927
        """
1928
        Parameters:
1929
        - status
1930
        """
1931
        try:
1932
            return [order.to_thrift_object() for order in get_recharge_orders_for_status(status)]
1933
        finally:
1934
            self.closeSession()
1935
 
6159 rajveer 1936
    def getPlansForOperator(self, operatorId):
1937
        """
1938
        Parameters:
1939
        - operatorId
1940
        """
1941
        try:
1942
            return [plan.to_thrift_object() for plan in get_plans_for_operator(operatorId)]
1943
        finally:
1944
            self.closeSession()
1945
 
1946
 
20931 kshitij.so 1947
#    def addAmountToWallet(self, userId, orderId, amount):
1948
#        """
1949
#        Parameters:
1950
#        - userId
1951
#        - orderId
1952
#        - amount
1953
#        """
1954
#        try:
1955
#            update_amount_in_wallet(userId, amount, orderId, 0)
1956
#        finally:
1957
#            self.closeSession()
6094 rajveer 1958
 
6188 rajveer 1959
    def getRechargeStatistics(self):
1960
        """
1961
        Parameters:
1962
        """
1963
        try:
1964
            return get_recharge_statistics()
1965
        finally:
1966
            self.closeSession()
1967
 
6307 anupam.sin 1968
    def getRechargeDenominations(self, operatorId, circleCode, denominationType):
6289 anupam.sin 1969
        try:
1970
            returnList = []
6307 anupam.sin 1971
            rechargeDenominations = get_recharge_denominations(operatorId, circleCode, denominationType)
6289 anupam.sin 1972
            for rechargeDenomination in rechargeDenominations:
1973
                returnList.append(rechargeDenomination.to_thrift_object())
1974
            return returnList
1975
        finally:
1976
            self.closeSession() 
6188 rajveer 1977
 
6371 rajveer 1978
    def updateAvailabilityStatus(self, operatorId, circleId, isAvailable):
1979
        try:
1980
            update_availability_status(operatorId, circleId, isAvailable)
1981
        finally:
1982
            self.closeSession() 
1983
 
6396 amit.gupta 1984
    def getAvailableEmiSchemes(self):
1985
        try:
1986
            return get_available_emi_schemes()
1987
        finally:
1988
            self.closeSession()
1989
 
6389 rajveer 1990
    def getMiscCharges(self, transactionId):
1991
        try:
1992
            return get_misc_charges(transactionId)
1993
        finally:
1994
            self.closeSession()
1995
 
6507 anupam.sin 1996
    def refundRechargeOrder (self, rechargeOrderId):
1997
        try:
1998
            return refund_recharge_order(rechargeOrderId)
1999
        finally:
2000
            self.closeSession()
6821 amar.kumar 2001
 
2002
    def getPhysicalOrders(self, start_date, end_date):
2003
        try:
6832 amar.kumar 2004
            return [to_t_order(order) for order in get_physical_orders(to_py_date(start_date), to_py_date(end_date))]
6821 amar.kumar 2005
        finally:
2006
            self.closeSession()
6507 anupam.sin 2007
 
6906 rajveer 2008
    def getDocument(self, docType, docSource):
2009
        try:
2010
            return get_document(docType, docSource)
2011
        finally:
2012
            self.closeSession()
6988 rajveer 2013
 
7075 rajveer 2014
    def retrieveInvoice(self, orderId, userId):
6988 rajveer 2015
        try:
7075 rajveer 2016
            return retrieve_invoice(orderId,userId)
6988 rajveer 2017
        finally:
2018
            self.closeSession()
6906 rajveer 2019
 
7027 rajveer 2020
    def receiveUpdatesForRedExpress(self, awbNumber):
2021
        try:
7032 rajveer 2022
            return RedExpressUpdateService.get_updates_for_user(awbNumber)
7027 rajveer 2023
        finally:
2024
            self.closeSession()
2025
 
6985 anupam.sin 2026
    def changeShippingAddress(self, orderId, line1, line2, city, state, pin):
2027
        try:
2028
            return change_shipping_address(orderId, line1, line2, city, state, pin)
2029
        finally:
2030
            self.closeSession()
2031
 
7073 anupam.sin 2032
    def createRechargeTransaction(self, t_rechargeTransaction):
2033
        try:
2034
            return to_t_rechargeTransaction(create_recharge_transaction(t_rechargeTransaction))
2035
        finally:
2036
            self.closeSession()
7084 rajveer 2037
 
2038
    def getRechargeTransactions(self, storeId):
2039
        try:
2040
            return [to_t_rechargeTransaction(txn) for txn in get_recharge_transactions(storeId)]
2041
        finally:
2042
            self.closeSession()
2043
 
7151 amit.gupta 2044
    def getRechargeTrans(self, storeId, startdate, enddate, status):
2045
        try:
2046
            return [to_t_rechargeTransaction(txn) for txn in get_recharge_trans(storeId,startdate, enddate, status)]
2047
        finally:
2048
            self.closeSession()
7084 rajveer 2049
 
7080 anupam.sin 2050
    def getRechargeTransaction(self, rechargeId):
2051
        try:
2052
            return to_t_rechargeTransaction(get_recharge_transaction(rechargeId))
2053
        finally:
2054
            self.closeSession()
2055
 
2056
    def getFRCs(self, circleId, operatorId):
2057
        try:
2058
            return [to_t_frc(frc) for frc in get_frcs(circleId, operatorId)]
2059
        finally:
2060
            self.closeSession()
2061
 
7096 anupam.sin 2062
    def getHotspotStore(self, id, hotspotid):
2063
        try:
2064
            return to_t_hotspot(get_hotspot_store(id, hotspotid))
2065
        finally:
2066
            self.closeSession()
2067
 
2068
    def getTelecomCircle(self, id, code):
2069
        try:
2070
            return get_circle(id, code).to_thrift_object()
2071
        finally:
2072
            self.closeSession()
2073
 
7109 anupam.sin 2074
    def retrieveHotspotRechargeInvoice(self, rechargeId):
2075
        try:
2076
            return retrieve_hotspot_recharge_invoice(rechargeId)
2077
        finally:
2078
            self.closeSession()
7190 amar.kumar 2079
 
2080
    def splitFreebieOrder(self, orderId, splitReason, shippingDate):
2081
        try:
2082
            return split_freebie_order(orderId, splitReason, shippingDate)
2083
        finally:
2084
            self.closeSession()
7109 anupam.sin 2085
 
7172 anupam.sin 2086
    def getRechargeTransactionsByNumber(self, number, storeId):
7169 anupam.sin 2087
        try:
7172 anupam.sin 2088
            return [to_t_rechargeTransaction(txn) for txn in get_recharge_transactions_by_number(number, storeId)]
7169 anupam.sin 2089
        finally:
2090
            self.closeSession()
2091
 
2092
    def updateHotspotStorePassword(self, storeId, password):
2093
        try:
2094
            return update_hotspot_store_password(storeId, password)
2095
        finally:
2096
            self.closeSession()
2097
 
7263 anupam.sin 2098
    def getSourceDetail(self, source):
2099
        try:
2100
            return to_t_sourcedetail(get_source_detail(source))
2101
        finally:
2102
            self.closeSession()
2103
 
7267 anupam.sin 2104
    def getAllCircles(self):
2105
        try:
2106
            return [circle.to_thrift_object() for circle in get_all_circles()]
2107
        finally:
2108
            self.closeSession()
7263 anupam.sin 2109
 
7267 anupam.sin 2110
    def deleteFrcs(self, frcIdsToDelete):
2111
        try:
2112
            return delete_frcs(frcIdsToDelete)
2113
        finally:
2114
            self.closeSession()
7285 rajveer 2115
 
2116
    def topupCompanyWallet(self, companyId, amount):
2117
        try:
2118
            return topup_company_wallet(companyId, amount)
2119
        finally:
2120
            self.closeSession()
2121
 
2122
    def getWalletBalanceForCompany(self, companyId):
2123
        try:
2124
            return get_wallet_balance_for_company(companyId)
2125
        finally:
2126
            self.closeSession()
7311 kshitij.so 2127
 
2128
    def addAmazonOrder(self,amazonOrder):
2129
        try:
2130
            add_amazon_order(amazonOrder)
2131
        except:
2132
            self.closeSession()
2133
 
7322 vikram.rag 2134
    def updateAmazonOrderStatus(self,orderId,status):
7311 kshitij.so 2135
        try:
7577 rajveer 2136
            return update_amazon_order_status(orderId,status)
7311 kshitij.so 2137
        finally:
2138
            self.closeSession()
7322 vikram.rag 2139
 
7683 vikram.rag 2140
    def getAmazonOrdersShipped(self):
7311 kshitij.so 2141
        try:
7683 vikram.rag 2142
            ordersShipped = get_amazon_orders_shipped()
7311 kshitij.so 2143
        finally:
2144
            self.closeSession()
2145
            return ordersShipped
2146
 
2147
    def getAmazonOrdersCancelled(self,interval):
2148
        ordersCancelled=None
2149
        try:
2150
            ordersCancelled = get_amazon_orders_cancelled(interval)
2151
        except:
2152
            ordersCancelled=None
2153
        finally:
2154
            self.closeSession()
2155
            return ordersCancelled
2156
 
7322 vikram.rag 2157
    def getAmazonOrder(self,orderId):
2158
        result = None
2159
        try:
7343 anupam.sin 2160
            result = to_t_amazonorder(get_amazon_order(orderId))
7322 vikram.rag 2161
        finally:
2162
            self.closeSession()
7542 vikram.rag 2163
            return result
2164
 
2165
    def getAmazonOrderByAmazonOrderId(self,amazonOrderId):
2166
        result = []
2167
        try:
2168
            for amazonOrder in get_amazon_order_by_amazonorderid(amazonOrderId): 
2169
                result.append(to_t_amazonorder(amazonOrder))
2170
        except:
2171
            return None
2172
        finally:
2173
            self.closeSession()
2174
            return result
7343 anupam.sin 2175
 
2176
    def getOrdersForStore(self, id, storeId, startDate, endDate, statuses):
2177
        try:
2178
            return [to_t_order(order) for order in get_orders_for_store(id, storeId, to_py_date(startDate), to_py_date(endDate), statuses)]
2179
        finally:
2180
            self.closeSession()
2181
 
7386 anupam.sin 2182
    def getStoreOrderAdvanceInvoice(self, orderId, storeId):
7343 anupam.sin 2183
        try:
7386 anupam.sin 2184
            return get_store_order_advance_invoice(orderId, storeId)
7343 anupam.sin 2185
        finally:
2186
            self.closeSession()
7363 rajveer 2187
 
2188
    def getSaholicRechargeBalance(self):
2189
        try:
2190
            return RechargeService.getBalance()
2191
        finally:
2192
            self.closeSession()
2193
 
7370 anupam.sin 2194
    def addFrc(self, circle, operatorId, denomination, maxDiscount):
2195
        try:
2196
            return add_frc(circle, operatorId, denomination, maxDiscount)
2197
        except:
2198
            return False
2199
        finally:
2200
            self.closeSession()
2201
 
7371 anupam.sin 2202
    def addSeries(self, circle, operatorId, series):
2203
        try:
2204
            return add_series(circle, operatorId, series)
2205
        except:
2206
            return "Error Occured. Try Again."
2207
        finally:
2208
            self.closeSession()
2209
 
7386 anupam.sin 2210
    def saveStoreOrderDetail(self, storeOrderDetail):
2211
        try:
2212
            return save_store_order_detail(storeOrderDetail)
2213
        except:
2214
            return False
2215
        finally:
2216
            self.closeSession()
2217
 
2218
 
2219
    def getStoreOrderDetail(self, orderId, storeId):
2220
        try:
2221
            return to_t_storeOrderDetail(get_store_order_detail(orderId, storeId))
2222
        finally:
2223
            self.closeSession()
2224
 
2225
    def getAllEdcBanks(self):
2226
        try:
2227
            return get_all_edc_banks()
2228
        finally:
2229
            self.closeSession()
7393 anupam.sin 2230
 
2231
    def saveRefundAmountsForStoreOrder(self, orderId, storeId, cashRefundAmount, cardRefundAmount):
2232
        try:
7399 anupam.sin 2233
            return save_refund_amounts_for_store_order(orderId, storeId, cashRefundAmount, cardRefundAmount)
7393 anupam.sin 2234
        finally:
2235
            self.closeSession()
7386 anupam.sin 2236
 
7427 anupam.sin 2237
    def getCollectionsForStore(self, storeId, startDate, endDate):
2238
        try:
2239
            return [to_t_storeOrderCollection(collection) for collection in get_collections_for_store(storeId, startDate, endDate)]
2240
        finally:
2241
            self.closeSession()
7442 vikram.rag 2242
 
12614 amit.gupta 2243
    def getAmazonOrdersToAcknowledge(self, source):
7442 vikram.rag 2244
        try:
2245
            ordersack = []
12614 amit.gupta 2246
            for amazonOrderId,amazonOrderCode,status,txnid,count in get_amazon_orders_to_acknowledge(source):
7442 vikram.rag 2247
                orderack = AmazonOrdersToAcknowledge()
2248
                orderack.amazonOrderId = amazonOrderId
2249
                orderack.amazonOrderItemId = amazonOrderCode
2250
                orderack.status = status
2251
                orderack.transaction_id = txnid
2252
                orderack.count = count
2253
                ordersack.append(orderack)
2254
            return ordersack    
2255
        except:
2256
            return None
2257
        finally:
2258
            self.closeSession()   
2259
 
2260
    def changeAmazonOrderStatus(self,amazonOrderCode,status):
2261
        try:
2262
            change_amazon_order_status(amazonOrderCode,status) 
2263
        finally:
7460 kshitij.so 2264
            self.closeSession()
2265
 
7741 kshitij.so 2266
    def updateTimestampForAmazonOrder(self,orderDeliveryMap):
7460 kshitij.so 2267
        try:
7741 kshitij.so 2268
            return update_timestamp_for_amazon_order(orderDeliveryMap)
7530 kshitij.so 2269
        except:
2270
            return False
7460 kshitij.so 2271
        finally:
7530 kshitij.so 2272
            self.closeSession()
2273
 
2274
    def updateSourceDetailTimestamp(self,id,lastUpdatedOn):
2275
        try:
2276
            return update_source_detail_timestamp(id,lastUpdatedOn)
2277
        except:
2278
            return False
2279
        finally:
7442 vikram.rag 2280
            self.closeSession()   
7607 anupam.sin 2281
 
2282
    def getOrdersByMobileNumber(self, mobileNumber):
2283
        try:
2284
            orders = get_orders_by_mobile_number(mobileNumber)
2285
            return [to_t_order(order) for order in orders]
2286
        finally:
2287
            self.closeSession()
7427 anupam.sin 2288
 
7645 anupam.sin 2289
    def getOrdersByAmazonOrderCode(self, amazonId):
7607 anupam.sin 2290
        try:
2291
            orders = get_orders_by_amazon_id(amazonId)
2292
            return [to_t_order(order) for order in orders]
2293
        finally:
2294
            self.closeSession()
7730 anupam.sin 2295
 
2296
    def convertStoreToNormal(self, orderId):
2297
        try:
2298
            return convert_store_to_normal(orderId)
2299
        except:
2300
            return False
2301
        finally:
2302
            self.closeSession()
7822 amar.kumar 2303
 
2304
    def updateFreebieItem(self, orderId, newFreebieItemId):
2305
        try:
2306
            return to_t_order(update_freebie_item(orderId, newFreebieItemId))
2307
        finally:
2308
            self.closeSession()
7938 manish.sha 2309
 
7967 anupam.sin 2310
    def getHotspotServiceMatrices(self):
2311
        try:
2312
            return [to_t_hotspotServiceMatrix(hotpotServiceMatrix) for hotpotServiceMatrix in get_hotspot_service_matrices()]
2313
        finally:
2314
            self.closeSession()
2315
 
7938 manish.sha 2316
    def updateOrderAWB(self, orderId, airwayBillNo):
2317
        try:
7985 manish.sha 2318
            return to_t_order(update_order_AWB(orderId, airwayBillNo))
7938 manish.sha 2319
        finally:
2320
            close_session()
8182 amar.kumar 2321
    def getOrdersByVendor(self, vendors, statuses):
2322
        try:
2323
            return [to_t_order(order) for order in get_orders_by_vendor(vendors, statuses)]
2324
        finally:
2325
            close_session()
7607 anupam.sin 2326
 
8182 amar.kumar 2327
    def createEbayOrder(self, ebayOrder):
2328
        try:
2329
            create_ebay_order(ebayOrder)
2330
        finally:
2331
            close_session()
2332
    def getEbayOrderByOrderId(self, orderId):
2333
        try:
2334
            return to_t_ebayOrder(get_ebay_order_by_orderId(orderId))
2335
        finally:
2336
            close_session()
2337
 
2338
    def getEbayOrderBySalesRecNumber(self, salesRecordNumber):
2339
        try:
2340
            return to_t_ebayOrder(get_ebay_order_by_sales_rec_number(salesRecordNumber))
2341
        finally:
2342
            close_session()
2343
 
8241 amar.kumar 2344
    def getEbayOrder(self, salesRecordNumber, listingId, paisaPayId):
8182 amar.kumar 2345
        try:
8253 amar.kumar 2346
            return [to_t_ebayOrder(order) for order in get_ebay_order(salesRecordNumber, listingId, paisaPayId)]
8182 amar.kumar 2347
        finally:
2348
            close_session()
2349
 
2350
    def updateEbayOrder(self, ebayOrder):
2351
        try:
2352
            update_ebay_order(ebayOrder)
2353
        finally:
2354
            close_session()
2355
 
2356
    def ebayOrderExists(self, salesRecNumber, ebayListingId):
2357
        try:
2358
            return ebay_order_exists(salesRecNumber, ebayListingId)
2359
        finally:
2360
            close_session()
2361
 
2362
    def updateOrderForEbay(self, order):
2363
        try:
2364
            update_order_for_ebay(order)
2365
        finally:
2366
            close_session()
2367
 
2368
    def splitEbayOrder(self, orderId, splitOrderQty, splitOrderItemId, usePowerShip):
2369
        try:
2370
            return to_t_order(split_ebay_order(orderId, splitOrderQty, splitOrderItemId, usePowerShip))
2371
        finally:
2372
            close_session()
8282 kshitij.so 2373
 
2374
    def addOrUpdateAmazonFbaSalesSnapshot(self,amazonfbasalessnapshot):
2375
        try:
2376
            add_or_update_amazon_fba_sales_snapshot(amazonfbasalessnapshot)
2377
        finally:
2378
            close_session()
2379
 
2380
    def getAmazonFbaSalesSnapshotForDays(self,days):
2381
        fbasalessnapshot = []
2382
        try:
2383
            snapshots = get_amazon_fba_sales_snapshot_for_days(days)
2384
            for snapshot in snapshots:
2385
                fbasalessnapshot.append(to_t_amazonFbaSalesSnapshot(snapshot)) 
2386
            return fbasalessnapshot
2387
        except:
2388
            return None
2389
        finally:
2390
            close_session()
2391
 
2392
    def getAmazonFbaSalesLatestSnapshotForItem(self,item_id):
2393
        try:
8363 vikram.rag 2394
            return to_t_amazonFbaSalesSnapshot(get_amazon_fba_sales_latest_snapshot_for_item(item_id))
8282 kshitij.so 2395
        except:
2396
            return None
2397
        finally:
2398
            close_session()
8532 vikram.rag 2399
 
8488 amar.kumar 2400
    def createSnapdealOrder(self, snapdeal_order):
2401
        try:
2402
            create_snapdeal_order(snapdeal_order)
2403
        finally:
2404
            close_session()
2405
 
2406
    def getSnapdealOrder(self, orderId, reference_code, suborder_id):
2407
        try:
11424 kshitij.so 2408
            return [to_t_snapdealOrder(snapdealOrder) for snapdealOrder in get_snapdeal_order(orderId, reference_code, suborder_id)]
2409
            #return to_t_snapdealOrder(get_snapdeal_order(orderId, reference_code, suborder_id))
8488 amar.kumar 2410
        finally:
2411
            close_session()
2412
 
8802 amar.kumar 2413
    def snapdealOrderExists(self, suborder_id, referenceCode):
8488 amar.kumar 2414
        try:
8802 amar.kumar 2415
            return snapdeal_order_exists(suborder_id, referenceCode)
8488 amar.kumar 2416
        finally:
2417
            close_session()   
8532 vikram.rag 2418
 
2419
    def updateLatestFbaPricesForItem(self,fbaitemprices):
2420
        try:        
2421
            update_latest_fba_prices_for_item(fbaitemprices)
2422
        finally:
8961 vikram.rag 2423
            close_session()
2424
 
2425
    def flipkartOrderExists(self,flipkartOrderId,flipkartSubOrderId):
2426
        try:
2427
            return flipkart_order_exists(flipkartOrderId,flipkartSubOrderId)
2428
        finally:
2429
            self.closeSession()
8532 vikram.rag 2430
 
8961 vikram.rag 2431
    def createFlipkartOrder(self,flipkartOrder):
2432
        try:
2433
            create_flipkart_order(flipkartOrder)
2434
        finally:           
8990 vikram.rag 2435
            self.closeSession()
2436
 
2437
    def getFlipkartOrder(self,orderId):
2438
        try:
2439
            return to_t_flipkartOrder(get_flipkart_order(orderId))
2440
        finally:
9159 amar.kumar 2441
            self.closeSession()    
2442
 
2443
    def getFlipkartOrderByOrderItemId(self, flipkartOrderItemId):
2444
        try:
2445
            return to_t_flipkartOrder(get_flipkart_order_by_subOrderId(flipkartOrderItemId))
2446
        finally:
2447
            close_session()    
9107 vikram.rag 2448
            self.closeSession()
2449
 
2450
    def updateFlipkartOrderDatesAndAWB(self,flipkartOrderId,flipkartSubOrderId,date,awb):
2451
        try:
2452
            return update_flipkart_order_dates_and_awb(flipkartOrderId,flipkartSubOrderId,date,awb)
2453
        finally:
2454
            self.closeSession()
9338 manish.sha 2455
 
9571 vikram.rag 2456
    def getOrdersCreatedAfterTimestampForSource(self,timestamp,source):
9404 vikram.rag 2457
        try:
9571 vikram.rag 2458
            return get_orders_count_created_after_timestamp_for_source(timestamp,source)
9404 vikram.rag 2459
        finally:
2460
            self.closeSession()
2461
 
2462
 
9338 manish.sha 2463
    def getOrderForAirwayBillNo(self, airwaybillNo):
13276 manish.sha 2464
        ret_Orders =[]
9338 manish.sha 2465
        try:
13276 manish.sha 2466
            orderList = get_order_for_awb(airwaybillNo)
2467
            for order in orderList:
2468
                ret_Orders.append(to_t_order(order))
2469
            return ret_Orders
9338 manish.sha 2470
        finally:
2471
            close_session()
2472
 
9651 manish.sha 2473
    def getMinCreatedTimeStampUndeliveredOrdersForSource(self, source): 
2474
        try:
2475
            return get_min_created_timestamp_undelivered_orders_for_source(source)
2476
        finally:
2477
            close_session()
2478
 
9882 manish.sha 2479
    def updateSnapdealOrdersStatus(self, orders):
9651 manish.sha 2480
        try:
9882 manish.sha 2481
            update_snapdeal_orders_status(orders)
9651 manish.sha 2482
        finally:
2483
            close_session()
2484
 
2485
    def updateFlipkartOrdersStatus(self, delivered_orders):
2486
        try:
2487
            update_flipkart_orders_status(delivered_orders)
2488
        finally:
2489
            close_session()
9801 manish.sha 2490
 
2491
    def bulkAddOrUpdateAmazonFbaSalesSnapshot(self, amazonfbasalessnapshotlist):  
2492
        try:
2493
            bulk_add_or_update_amazon_fba_sales_snapshot(amazonfbasalessnapshotlist)
2494
        finally:
9945 vikram.rag 2495
            close_session()
2496
 
2497
    def getCreatedOrdersForFlipkart(self,flipkartorderids):
2498
        try:
2499
            return get_created_orders_for_flipkart(flipkartorderids)
2500
        finally:
11896 amit.gupta 2501
            close_session()
2502
 
2503
    def isPrivateDealTransaction(self, transactionId):
2504
        try:
11903 amit.gupta 2505
            return is_private_deal_transaction(transactionId)
11896 amit.gupta 2506
        except:
2507
            return False
2508
        finally:
9945 vikram.rag 2509
            close_session()    
9651 manish.sha 2510
 
12103 manish.sha 2511
    def changeEasyshipMfnOrderTxnStatus(self, transactionId, status, description, pickUp, orderType, source, shipTimestamp, deliveryTimeStamp):
2512
        try:
2513
            return change_easyship_mfn_order_txn_status(transactionId, status, description, pickUp, orderType, source, shipTimestamp, deliveryTimeStamp)
2514
        finally:
2515
            close_session() 
2516
 
2517
    def updateAmazonFbaOrdersReturns(self, fbaOrderReturns):
2518
        try:
2519
            update_amazon_fba_order_returns(fbaOrderReturns)
2520
        finally:
2521
            close_session()
2522
 
2523
    def getAllAmazonFbaOrderReturnsByCurrentTime(self, insertionTimestamp):
2524
        try:
2525
            ret_order_returns= []
2526
            returns = get_all_amazon_fba_order_returns(insertionTimestamp)
2527
            for order_return in returns:
2528
                ret_order_returns.append(to_t_amazonFbaOrderReturn(order_return))
2529
            return ret_order_returns
2530
        finally:
2531
            close_session()
2532
 
2533
    def getTotalSaleReturnsFbaSkusCurentTime(self, insertionTimestamp):
2534
        try:
2535
            return get_total_sale_returns_fba_skus_curent_time(insertionTimestamp)
2536
        finally:
2537
            close_session()
12398 kshitij.so 2538
 
2539
    def getAmazonFbaSalesLatestSnapshotForItemLocationWise(self,item_id,location):
2540
        try:
2541
            return to_t_amazonFbaSalesSnapshot(get_amazon_fba_sales_latest_snapshot_for_item_location_wise(item_id,location))
2542
        except:
2543
            return None
2544
        finally:
2545
            close_session()
12103 manish.sha 2546
 
12589 manish.sha 2547
    def getVerificationPendingOrdersFK(self):
2548
        ret_Orders = []
2549
        try:
2550
            fk_Orders = get_verification_pending_orders_fk()
2551
            for fk_order in fk_Orders:
2552
                ret_Orders.append(to_t_flipkartOrder(fk_order))
2553
            return ret_Orders
2554
        finally:
2555
            close_session()
2556
 
12653 manish.sha 2557
    def addInvoiceDetailsToOrders(self, transactionId, customerId):
2558
        try:
2559
            add_invoice_details_to_orders(transactionId, customerId)
2560
        finally:
2561
            close_session()
2562
 
12772 manish.sha 2563
    def getFAOrderByFkOrderId(self, fkOrderId, fkOrderItemId):
2564
        try: 
2565
            return to_t_flipkartAdvantageOrder(get_fa_order_by_fk_order_id(fkOrderId, fkOrderItemId))
2566
        finally:
2567
            close_session()
2568
 
2569
    def getAllFAOrdersList(self, status):
2570
        ret_fa_Orders =[]
2571
        try:
2572
            faOrders = get_all_fa_orders_list(status)
2573
            for faOrder in faOrders:
2574
                ret_fa_Orders.append(to_t_flipkartAdvantageOrder(faOrder))
2575
            return ret_fa_Orders
2576
        finally:
2577
            close_session()
2578
 
2579
    def addUpdateFaOrdersBulk(self, faOrdersList):
2580
        try:
2581
            add_update_fa_orders_bulk(faOrdersList)
2582
        finally:
2583
            close_session()
2584
 
2585
    def flipkartFaOrderExists(self, fkOrderId, fkOrderItemId):
2586
        try:
2587
            return flipkart_fa_order_exists(fkOrderId, fkOrderItemId)
2588
        finally:
2589
            close_session()
2590
 
12979 kshitij.so 2591
    def getRcgOrderStatus(self,rechargeOrderId,isFinal):
2592
        try:
2593
            return get_recharge_order_status(rechargeOrderId,isFinal).to_thrift_object()
2594
        finally:
2595
            self.closeSession()
2596
 
2597
    def getRcgTransactionStatus(self,rechargeTransactionId,isFinal):
2598
        try:
2599
            return to_t_rechargeTransaction(get_recharge_transaction_status(rechargeTransactionId,isFinal))
2600
        finally:
2601
            self.closeSession()
2602
 
13146 manish.sha 2603
    def acceptPackageOrders(self, orders):
2604
        try:
2605
            return accept_package_orders(orders)
2606
        finally:
2607
            self.closeSession()
12979 kshitij.so 2608
 
13146 manish.sha 2609
    def getGroupOrdersByLogisticsTxnId(self, logisticsTxnId):
2610
        ret_Orders =[]
2611
        try:
2612
            ordersList = get_group_orders_by_logistics_txn_id(logisticsTxnId)
2613
            for order in ordersList:
2614
                ret_Orders.append(to_t_order(order))
2615
            return ret_Orders
2616
        finally:
2617
            self.closeSession()
2618
 
20811 kshitij.so 2619
    def addBillingDetailsForGrouppedOrders(self, order_ids, invoice_number, itemNumbersMap, serialNumbersMap, freebieWarehouseIdMap, billed_by, jacketNumber, billingType, authorize, invoiceType):
13146 manish.sha 2620
        try:
20811 kshitij.so 2621
            return add_billing_details_for_groupped_orders(order_ids, invoice_number, itemNumbersMap, serialNumbersMap, freebieWarehouseIdMap, billed_by, jacketNumber, billingType, authorize, invoiceType)
13146 manish.sha 2622
        finally:
2623
            self.closeSession()
13276 manish.sha 2624
 
2625
    def getInvoiceFormatLogisticsTxnId(self, transactionId, shipementSeq):
2626
        try:
2627
            return get_invoice_format_logistics_txn_id(transactionId, shipementSeq)
2628
        finally:
2629
            self.closeSession()
13584 manish.sha 2630
 
13691 manish.sha 2631
    def createHomeShopOrder(self, hsOrder):
2632
        try:
2633
            create_homeshop_order(hsOrder)
2634
        finally:
2635
            close_session()
2636
 
2637
    def getHomeShopOrder(self, orderId, hsOrderNo, hsSubOrderNo):
2638
        try:
2639
            return [to_t_hsOrder(hsOrder) for hsOrder in get_homeshop_order(orderId, hsOrderNo, hsSubOrderNo)]
2640
            #return to_t_snapdealOrder(get_snapdeal_order(orderId, reference_code, suborder_id))
2641
        finally:
2642
            close_session()
2643
 
2644
    def homeShopOrderExists(self, hsOrderNo, hsSubOrderNo):
2645
        try:
2646
            return homeshop_order_exists(hsOrderNo, hsSubOrderNo)
2647
        finally:
2648
            close_session()   
2649
 
2536 chandransh 2650
    def closeSession(self, ):
2651
        close_session()
3376 rajveer 2652
 
2653
    def isAlive(self, ):
2654
        """
5447 anupam.sin 2655
        For checking whether service is alive or not. It also checks connectivity with database
3376 rajveer 2656
        """
2657
        try:
2658
            return is_alive()
2659
        finally:
6988 rajveer 2660
            close_session()
13941 amit.gupta 2661
 
2662
    def creditBatch(self, batchId, userAmount):
14134 amit.gupta 2663
        try:
2664
            now = datetime.datetime.now()
2665
            sum = 0
2666
            for key, amount in json.loads(userAmount).iteritems():
2667
                userId = int(key)
21367 amit.gupta 2668
                add_amount_in_wallet(userId, amount, batchId, WalletReferenceType.CASHBACK, True, "Cashback for orders")
14134 amit.gupta 2669
                sum += amount
2670
 
2671
            batchCreditTracker = DtrBatchCreditTracker()
2672
            batchCreditTracker.id = batchId
2673
            batchCreditTracker.amount = sum
2674
            batchCreditTracker.creditedOn = now
2675
 
2676
            session.commit()
2677
        finally:
2678
            close_session()
17470 manish.sha 2679
 
2680
    def splitBulkOrder(self, orderId, splitOrderQty):
2681
        try:
2682
            return to_t_order(split_bulk_order(orderId, splitOrderQty))
2683
        finally:
2684
            close_session()
18041 manish.sha 2685
 
2686
    def moveOrdersToCorrectWarehouse(self):
2687
        try:
2688
            return move_orders_to_correct_warehouse()
18046 manish.sha 2689
        except:
2690
            return "Error"
18041 manish.sha 2691
        finally:
2692
            close_session()
18046 manish.sha 2693
 
18590 manish.sha 2694
    def verifyOrderForTransaction(self, transactionId):
2695
        try:
2696
            return verify_orders_for_transaction(transactionId)
2697
        finally:
2698
            close_session()
2699
 
18634 manish.sha 2700
    def getCreditorInfo(self, creditorId, name):
2701
        try:
2702
            return to_t_Creditor(get_creditor_info(creditorId, name))
2703
        except:
2704
            return None
2705
        finally:
2706
            close_session()
2707
 
2708
    def updateCreditorInfo(self, creditor):
2709
        try:
2710
            return update_creditor_info(creditor)
2711
        finally:
2712
            close_session()
2713
 
2714
    def getUserSanctionDetails(self, userId):
2715
        try:
18677 manish.sha 2716
            returnMap = get_user_sanction_details(userId, None)
2717
            sanctionsList = []
18700 manish.sha 2718
            for creditorMap in returnMap.values():
18677 manish.sha 2719
                for sanction in creditorMap.get('Sanctions'):
2720
                    sanctionsList.append(to_t_UserSanction(sanction, creditorMap.get('TicketSize')))
2721
            return sanctionsList
18634 manish.sha 2722
        finally:
2723
            close_session()
2724
 
2725
    def getUserSanctionDetailsForCreditor(self, userId, creditorId):
2726
        try:
18703 manish.sha 2727
            returnMap = get_user_sanction_details(userId, creditorId)
2728
            sanctionsList = []
2729
            for creditorMap in returnMap.values():
2730
                for sanction in creditorMap.get('Sanctions'):
2731
                    sanctionsList.append(to_t_UserSanction(sanction, creditorMap.get('TicketSize')))
2732
            return sanctionsList[0]
18634 manish.sha 2733
        except:
2734
            return None
2735
        finally:
2736
            close_session()
2737
 
2738
    def updateUserSanction(self, userSanaction):
2739
        try:
2740
            return update_user_sanction(userSanaction)
2741
        finally:
2742
            close_session()
2743
 
2744
    def getCreditHistoryRecordsForTransaction(self, paymentId, creditTxnType):
2745
        try:
2746
            return [to_t_CreditHistory(creditHistory) for creditHistory in get_credit_history_records(paymentId, None, None, creditTxnType)]
2747
        finally:
2748
            close_session()
2749
 
2750
    def getCreditHistoryRecordsForUserAndCreditor(self, userId, creditorId, creditTxnType):
2751
        try:
2752
            return [to_t_CreditHistory(creditHistory) for creditHistory in get_credit_history_records(None, userId, creditorId, creditTxnType)]
2753
        finally:
2754
            close_session()
2755
 
2756
    def processCreditTransaction(self, paymentId, userId, creditorId, creditTxns):
2757
        try:
2758
            return process_credit_transaction(paymentId, userId, creditorId, creditTxns)
2759
        finally:
2760
            close_session()
2761
 
2762
    def getLoanPayableForUserToCreditor(self, userId, creditorId, dueDate):
2763
        try:
2764
            return get_loan_payable_for_user_to_creditor(userId, creditorId, dueDate)
2765
        finally:
2766
            close_session()
2767
 
2768
    def getLoanHistoryRecordsForTransaction(self, paymentId, creditTxnType):
2769
        try:
2770
            return [to_t_LoanHistory(loanHistory) for loanHistory in get_loan_history_records(paymentId, None, None, creditTxnType)]
2771
        finally:
2772
            close_session()
2773
 
2774
    def getLoanHistoryRecordsForUserAndCreditor(self, userId, creditorId, creditTxnType):
2775
        try:
2776
            return [to_t_LoanHistory(loanHistory) for loanHistory in get_loan_history_records(None, userId, creditorId, creditTxnType)]
2777
        finally:
2778
            close_session()
2779
 
2780
    def processLoanTransaction(self, paymentId, userId, creditorId, creditTxns):
2781
        try:
2782
            return process_loan_transaction(paymentId, creditTxns)
2783
        finally:
18769 manish.sha 2784
            close_session()
2785
 
2786
    def getLimitedCreditHistoryRecords(self, paymentId, userId, creditorId, limit, offset):
2787
        try:
18805 manish.sha 2788
            hasMore, totalCount, creditHistoryList = get_credit_history_records_paginated(paymentId, userId, creditorId, None, limit, offset)
2789
            return to_t_PaginatedCreditHistory(hasMore, totalCount, creditHistoryList)
18769 manish.sha 2790
        finally:
2791
            close_session()
2792
 
2793
    def getLimitedLoanHistoryRecords(self, paymentId, userId, creditorId, limit, offset):
2794
        try:
18805 manish.sha 2795
            hasMore, totalCount, loanHistoryList = get_loan_history_records_paginated(paymentId, userId, creditorId, None, limit, offset)
2796
            return to_t_PaginatedLoanHistory(hasMore, totalCount, loanHistoryList)
18769 manish.sha 2797
        finally:
2798
            close_session()
18794 manish.sha 2799
 
19868 manas 2800
    def getUserSanctionsDetailsAsPerLimit(self, userId, creditorId, limit, offset,sort):
18794 manish.sha 2801
        try:
19868 manas 2802
            hasMore, totalCount, returnMap = get_user_sanction_details_paginated(userId, creditorId, limit, offset,sort)
18794 manish.sha 2803
            sanctionsList = []
2804
            for creditorMap in returnMap.values():
2805
                for sanction in creditorMap.get('Sanctions'):
2806
                    sanctionsList.append(to_t_UserSanction(sanction, creditorMap.get('TicketSize')))
2807
            return to_t_PaginatedUserSanction(hasMore, totalCount, sanctionsList)
2808
        finally:
2809
            close_session()
19004 manish.sha 2810
 
19889 manas 2811
    def getOutstandingPayments(self,fetchType,userId,limit):
2812
        try:
2813
            userCounterMap, outstandingResults = get_outstanding_payments(fetchType,userId,limit)
2814
            return [to_t_OutstandingPayments(outstandingResult,userCounterMap.get(outstandingResult.user_id)) for outstandingResult in outstandingResults]
2815
        finally:
2816
            close_session()
2817
 
19912 manas 2818
    def markPaymentSettled(self,userId,paymentId,totalAmount,repaymentDate):
2819
        returnMap = {}
2820
        try:
2821
            flag, message = mark_payment_settled(userId,paymentId,totalAmount,repaymentDate)
2822
            returnMap[flag] = message
2823
            return returnMap
2824
        finally:
2825
            close_session()
2826
 
19004 manish.sha 2827
    def getOrdersInBatchAsPromisedShipping(self, statuses, offset, limit, warehouse_id, source):
2828
        """
2829
        Returns at most 'limit' orders with the given statuses for the given warehouse starting from the given offset.
2830
        These orders should be in order of promised shipping time. 
2831
        Pass the status as null and the limit as 0 to ignore them.
2832
 
2833
        Parameters:
2834
         - statuses
2835
         - offset
2836
         - limit
2837
         - warehouse_id
2838
        """
2839
        try:
2840
            orders = get_orders_in_batch_as_promised_shipping(statuses, offset, limit, warehouse_id, source)
2841
            return [to_t_order(order) for order in orders]
2842
        finally:
2843
            close_session()
18794 manish.sha 2844
 
19421 manish.sha 2845
    def setOrderAttributeForMasterOrderId(self, logisticsTransactionId, attributes):
2846
        try:
2847
            set_order_attribute_for_master_order_id(logisticsTransactionId, attributes)
2848
        finally:
2849
            close_session()
2850
 
2851
    def updateMasterOrderAWB(self, logisticsTransactionId, airwaybill_no):
2852
        try:
2853
            return update_master_order_awb(logisticsTransactionId, airwaybill_no)
2854
        finally:
2855
            close_session()
2856
 
19474 manish.sha 2857
    def addOrUpdateShipmentLogisticsCostDetails(self, shipmentLogisticsCostDetails):
2858
        try:
2859
            return add_or_update_shipment_logistics_cost_details(shipmentLogisticsCostDetails)
2860
        finally:
2861
            close_session()
19691 manish.sha 2862
 
2863
    def getReturnOrderInfo(self, id):
2864
        try:
2865
            returnOrderInfo = get_return_order_info(id)
19814 kshitij.so 2866
            return to_t_returnOrderInfo(returnOrderInfo)
19691 manish.sha 2867
        finally:
2868
            close_session()
2869
 
2870
    def getReturnOrderInfoList(self, order_ids):
2871
        try:
2872
            returnOrdersInfoMap = get_return_orders_info_map(order_ids)
2873
            mapToReturn = {}
2874
            for orderId, returnOrdersList in returnOrdersInfoMap.items():
2875
                returnList = []
2876
                for returnOrder in returnOrdersList:
2877
                    returnList.append(to_t_returnOrderInfo(returnOrder))
2878
                mapToReturn[orderId] = returnList
2879
            return mapToReturn
2880
        finally:
2881
            close_session()
19474 manish.sha 2882
 
19691 manish.sha 2883
    def getReturnOrderInfoListAsByStatus(self, order_ids, statuses):
2884
        try:
2885
            returnOrdersInfoMap = get_return_orders_info_map(order_ids, statuses)
2886
            mapToReturn = {}
2887
            for orderId, returnOrdersList in returnOrdersInfoMap.items():
2888
                returnList = []
2889
                for returnOrder in returnOrdersList:
2890
                    returnList.append(to_t_returnOrderInfo(returnOrder))
2891
                mapToReturn[orderId] = returnList
2892
            return mapToReturn
2893
        finally:
2894
            close_session()
2895
 
2896
    def updateReturnOrderInfo(self, returnInfo):
2897
        try:
2898
            return update_return_order_info(returnInfo)
2899
        finally:
2900
            close_session()
2901
 
2902
    def bulkUpdateReturnOrderInfo(self, orderReturnInfosMap):
2903
        try:
2904
            return bulk_update_return_order_info(orderReturnInfosMap)
2905
        finally:
2906
            close_session()
2907
 
2908
    def getReturnOrdersAsPerWarehouseId(self, warehouseId):
2909
        """
2910
        Returns all return orders list as per warehouse
2911
 
2912
        Parameters:
2913
         - warehouseId
2914
        """
2915
        try:
2916
            all_returns_orders = get_return_orders_as_per_warehouse(warehouseId)
2917
            return [to_t_returnOrderInfo(order) for order in all_returns_orders]
2918
        finally:
2919
            close_session()
2920
 
19735 manish.sha 2921
    def createReturnTransaction(self, returnTransaction, itemCondition, overrideWarranty):
19691 manish.sha 2922
        """
2923
        Create Return Ticket or Transaction for all Returns
2924
 
2925
        Parameters:
2926
         - returnTransaction Thrift Object
19735 manish.sha 2927
         - itemCondition
2928
         - overrideWarranty
19691 manish.sha 2929
        """
2930
        try:
19814 kshitij.so 2931
            return to_t_returnTransaction(create_return_transaction(returnTransaction, itemCondition, overrideWarranty))
19691 manish.sha 2932
        finally:
2933
            close_session()
2934
 
2935
    def getReturnTransactionsForCustomer(self, statusList, customerMobile, customerEmail, returnTransactionId, customerId):
2936
        """
2937
        Get all return transactions as per customer and status for sepcific time interval
2938
 
2939
        Parameters:
2940
         - statusList
2941
         - customerMobile
2942
         - customerEmail
2943
         - returnTransactionId
2944
        """
2945
 
2946
        try:
2947
            transactions = get_return_transactions_for_customer(statusList, customerMobile, customerEmail, returnTransactionId, customerId)
2948
            if transactions is None:
2949
                return []
2950
            else:
2951
                return [to_t_returnTransaction(transaction) for transaction in transactions]
2952
        finally:
2953
            close_session()
2954
 
2955
    def getReturnTransaction(self, id):
2956
        """
2957
        Get Return Transaction as per given id 
2958
 
2959
        Parameters:
2960
         - id
2961
        """
2962
        try:
2963
            return to_t_returnTransaction(get_return_transaction(id))
2964
        finally:
2965
            close_session()
2966
 
2967
    def getReturnOrdersForReturnTransaction(self, returnTransactionId):
2968
        """
2969
        Get Return Orders for given return transaction
2970
 
2971
        Parameters:
2972
         - returnTransactionId
2973
        """
2974
        try:
2975
            returnorders = get_return_orders_for_return_transaction(returnTransactionId)
2976
            return [to_t_returnOrderInfo(returnorder) for returnorder in returnorders]    
2977
        finally:
2978
            close_session()
2979
 
2980
    def changeReturnTransactionStatus(self, returnTransactionId, new_status, returnOrdersIds):
2981
        """
2982
        Change Return Transaction Status 
2983
 
2984
        Parameters:
2985
         - returnTransactionId
2986
         - new_status        
2987
        """  
2988
        try:
2989
            return change_return_transaction_status(returnTransactionId, new_status, returnOrdersIds)
2990
        finally:
2991
            close_session()
2992
 
20111 kshitij.so 2993
    def createReturnPickupRequest(self, returnOrderIds):
19691 manish.sha 2994
        """
2995
        Create Return Pickup Request
2996
 
2997
        Parameters
2998
         - returnOrderIds
2999
         - providerId
3000
        """    
3001
        try:
20111 kshitij.so 3002
            return create_return_pickup_request(returnOrderIds)
19691 manish.sha 3003
        finally:
3004
            close_session()
3005
 
3006
    def updateReturnPickupRequest(self, returnPickupRequest):
3007
        """
3008
        Update Return Pickup Request
3009
 
3010
        Parameters
3011
         - ReturnPickupRequest Object
3012
        """
3013
        try:
3014
            return update_return_pickup_request(returnPickupRequest)
3015
        finally:
3016
            close_session()
3017
 
3018
    def receiveReturnPickup(self, returnOrdersMap, id):
3019
        """
3020
        Receive Return Pickup
3021
 
3022
        Parameters:
3023
         - returnOrdersMap
3024
         - id
3025
 
3026
        """
3027
        try:
3028
            return receive_return_pickup(returnOrdersMap, id)
3029
        finally:
3030
            close_session()
3031
 
3032
    def validateReturnPickup(self, returnPickupId, returnOrdersMap):
3033
        """
3034
        Validate Return Pickup 
3035
 
3036
        Parameters:
3037
         - returnPickupId 
3038
         - returnOrdersMap
3039
        """
3040
        try:
3041
            return validate_return_pickup(returnPickupId, returnOrdersMap)
3042
        finally:
3043
            close_session()
3044
 
3045
    def processReturnPickup(self, returnPickupId, returnOrdersMap):
3046
        """
3047
        Process Return Pickup
3048
 
3049
        Parameters:
3050
         - returnPickupId
3051
         - returnOrdersMap
3052
        """
3053
        try:
3054
            return process_return_pickup(returnPickupId, returnOrdersMap)
3055
        finally:
3056
            close_session()
3057
 
3058
    def markReturnTransactionComplete(self, returnTransactionId):
3059
        """
3060
        Mark Return Transaction Complete based upon the orders processed.
3061
 
3062
        Parameters:
3063
         - returnTransactionId
3064
        """
3065
        try:
3066
            return mark_return_transaction_complete(returnTransactionId)
3067
        finally:
3068
            close_session()
3069
 
3070
    def refundReturnTransactionPayment(self, returnOrdersMap, returnTransactionId):
3071
        """
3072
        Refund Return Transaction Payment
3073
 
3074
        Parameters
3075
         - returnOrdersMap
3076
         - returnTransactionId
3077
        """
3078
 
3079
        try:
3080
            return refund_return_transaction_payment(returnOrdersMap, returnTransactionId)
3081
        finally:
3082
            close_session()
3083
 
19714 manish.sha 3084
    def getEligibleOrdersForReturn(self, customerId, itemCondition, overrideWarranty):
3085
        """
3086
        Return Eligible Orders for Return Process
3087
 
3088
        Parameters 
3089
         - customerId
3090
         - itemCondition - (Damaged for return and Defective for DOA)
3091
         - overrideWarranty for Admin so that he can return any order without any warranty.
3092
 
3093
        """
3094
        try:
3095
            orders = []
3096
            eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
3097
            for order in eligibleOrders:
3098
                orders.append(to_t_order(order))
3099
            return orders
3100
        finally:
3101
            close_session()
3102
 
3103
    def getEligibleReturnOrdersForPickup(self, customerId):
3104
        """
3105
        Return All Eligible Return Orders awaiting pickup
3106
 
3107
        Parameters 
3108
         - customerId
3109
 
3110
        """
3111
        try:
3112
            returnOrders = []
3113
            eligibleReturnOrders = get_eligible_return_orders_for_pickup(customerId)
3114
            for returnOrder in eligibleReturnOrders:
3115
                returnOrders.append(to_t_returnOrderInfo(returnOrder))
3116
            return returnOrders
3117
        finally:
3118
            close_session()
19735 manish.sha 3119
 
3120
    def validateReturnTransaction(self, customerId, returnOrdersMap, itemCondition, overrideWarranty):
3121
        """
3122
        To Validate return transaction data
19714 manish.sha 3123
 
19735 manish.sha 3124
        Parameters
3125
         - customerId
3126
         - returnOrdersMap
3127
         - itemCondition
3128
         - overrideWarranty
3129
        """
3130
        try:
3131
            return validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty)
3132
        finally:
3133
            close_session()
19817 manish.sha 3134
 
3135
    def markReturnNotRequiredOrdersProcessed(self, returnTransactionId):
3136
        """
3137
        Mark Return Not Required Orders as Processed
19735 manish.sha 3138
 
19817 manish.sha 3139
        Parameters
3140
         - returnTransactionId
3141
        """
3142
        try:
3143
            return mark_return_not_required_orders_as_processed(returnTransactionId) 
3144
        finally:
3145
            close_session()
3146
 
3147
    def getReturnPickupRequest(self, returnPickupId):
3148
        """
3149
        Get Particular Return Pickup Id
3150
        Parameters
3151
         - returnPickupId
3152
        """
3153
        try:
3154
            return to_t_rPickupRequest(get_return_pickup_request(returnPickupId))
3155
        finally:
3156
            close_session()
3157
 
19820 manish.sha 3158
    def getAllReturnOrdersForReturnPickupRequest(self, logisticsRequestId):
3159
        try:
3160
            returnOrders = []
3161
            eligibleReturnOrders = get_all_return_orders_for_return_pickup_request(logisticsRequestId)
3162
            for returnOrder in eligibleReturnOrders:
3163
                returnOrders.append(to_t_returnOrderInfo(returnOrder))
3164
            return returnOrders
3165
        finally:
3166
            close_session()
3167
 
19973 amit.gupta 3168
    def getSellerInfo(self, sellerId):
3169
        try:
3170
            return get_seller_info(sellerId)
3171
        finally:
3172
            close_session()
19980 amit.gupta 3173
 
19983 amit.gupta 3174
    def getWarehouseAddress(self, addressId):
19980 amit.gupta 3175
        try:
3176
            return get_warehouse_address(addressId)
3177
        finally:
3178
            close_session()
20028 kshitij.so 3179
 
3180
    def addShipmentDelay(self,shipmentDelayDetail):
3181
        try:
3182
            return add_shipment_delay(shipmentDelayDetail)
3183
        finally:
3184
            close_session()
19973 amit.gupta 3185
 
20025 amit.gupta 3186
    def getBuyerByWarehouse(self, warehouse_id):
3187
        try:
3188
            return get_buyer_by_warehouse(warehouse_id)
3189
        finally:
3190
            close_session()
20122 kshitij.so 3191
 
3192
    def refundReturnOrder(self, returnOrderInfo, attributes):
3193
        try:
20124 kshitij.so 3194
            return refund_return_order(returnOrderInfo, attributes)
20122 kshitij.so 3195
        finally:
3196
            close_session()
20745 kshitij.so 3197
 
3198
    def getCostDetailForLogisticsTxnId(self, logisticsTxnId):
3199
        try:
3200
            return to_t_ShipmentLogisticsCostDetail(get_cost_detail_for_logistics_txn_id(logisticsTxnId))
3201
        finally:
3202
            close_session()
20811 kshitij.so 3203
 
3204
    def addShipmentLogisticDetail(self, shipmentLogisticsCostDetail):
3205
        try:
3206
            add_shipment_logistic_detail(shipmentLogisticsCostDetail)
3207
        finally:
3208
            close_session()
20025 amit.gupta 3209
 
20873 kshitij.so 3210
    def createPayment(self,userId, txnId, gatewayId):
3211
        try:
3212
            return create_payment(userId, txnId, gatewayId)
3213
        finally:
3214
            close_session()
3215
 
3216
    def calculatePaymentAmount(self, txnId):
3217
        try:
3218
            return calculate_payment_amount(txnId)
3219
        finally:
3220
            close_session()
3221
 
20954 kshitij.so 3222
    def getBilledOrdersForManifestGen(self, warehouse_id, logistics_provider_id, cod):
3223
        try:
3224
            return_orders = []
3225
            orders = get_billed_orders_for_manifest_gen(warehouse_id, logistics_provider_id, cod)
3226
            for order_list in orders:
3227
                for order in order_list:
3228
                    return_orders.append(to_t_order(order))
3229
            return return_orders
3230
        finally:
3231
            close_session()
21044 kshitij.so 3232
 
3233
    def registerRsa(self, userId, activation_code):
3234
        try:
3235
            return register_rsa(userId, activation_code)
3236
        finally:
3237
            close_session()
21090 kshitij.so 3238
 
3239
    def addSalesAssociate(self, pmsa, referrerEmail, l1_userEmail):
3240
        try:
3241
            return add_sales_associate(pmsa, referrerEmail, l1_userEmail)
3242
        finally:
3243
            close_session()
3244
 
3245
    def searchPmsa(self, pmsaSearchFilter, associateEmail):
3246
        pmsa_list = []
3247
        try:
3248
            for pmsa in search_pmsa(pmsaSearchFilter, associateEmail):
3249
                pmsa_list.append(to_t_pmsa(pmsa, "", ""))
3250
            return pmsa_list
3251
        finally:
3252
            close_session()
3253
 
3254
    def getPmsaUser(self,id, associateEmail):
3255
        try:
3256
            pmsa, l1_user_email, l2_user_email = get_pmsa_user(id, associateEmail)
3257
            return to_t_pmsa(pmsa, l1_user_email, l2_user_email)
3258
        finally:
3259
            close_session()
3260
 
3261
    def updatePmsaUser(self, pmsa, associateEmail):
3262
        try:
3263
            return update_pmsa_user(pmsa, associateEmail)
3264
        finally:
3265
            close_session()
3266
 
3267
    def getPendingAssociates(self, associateEmail):
3268
        pmsa_list = []
3269
        try:
3270
            for pmsa in get_pending_pmsa(associateEmail):
3271
                pmsa_list.append(to_t_pmsa(pmsa, "", ""))
3272
            return pmsa_list
3273
        finally:
3274
            close_session()
3275
 
3276
    def getPmsaUsers(self, associateEmail):
3277
        pmsa_list = []
3278
        try:
3279
            for pmsa in get_pmsa_users(associateEmail):
3280
                pmsa_list.append(to_t_pmsa(pmsa, "", ""))
3281
            return pmsa_list
3282
        finally:
3283
            close_session()
3284
 
3285
    def getStatsForAssociates(self, associateEmail):
3286
        try:
3287
            return get_stats_for_associates(associateEmail)
3288
        finally:
3289
            close_session()
20954 kshitij.so 3290
 
21092 kshitij.so 3291
    def getmypmsaprofile(self, associateEmail):
3292
        return to_t_pmsa(get_pmsa_user(None, associateEmail), "" ,"")
21101 kshitij.so 3293
 
22043 amit.gupta 3294
    def creditUserWallet(self, userId, amount, cash_back, shortDesc):
21101 kshitij.so 3295
        try:
22043 amit.gupta 3296
            return credit_user_wallet(userId, amount, cash_back, shortDesc)
21101 kshitij.so 3297
        finally:
3298
            close_session()
22452 amit.gupta 3299
 
3300
    def markOrderForRegisteredGstInvoice(self, transaction_ids):
3301
        try:
3302
            return mark_order_for_registered_gst_invoice(transaction_ids)
3303
        finally:
3304
            close_session()
21101 kshitij.so 3305
 
21092 kshitij.so 3306
 
19817 manish.sha 3307
 
14134 amit.gupta 3308
def main():
3309
    OrderServiceHandler().creditBatch(2, '{"483649":100.0, "8021773":23, "123213":10}')
3310
 
3311
if __name__ == '__main__':
3312
    main()