Subversion Repositories SmartDukaan

Rev

Rev 3469 | Rev 3527 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3469 Rev 3499
Line 2... Line 2...
2
Created on 29-Mar-2010
2
Created on 29-Mar-2010
3
 
3
 
4
@author: Chandranshu
4
@author: Chandranshu
5
'''
5
'''
6
 
6
 
7
import sys
-
 
8
import os
-
 
9
import datetime 
-
 
10
import time
-
 
11
import logging
-
 
12
from shop2020.thriftpy.logistics.ttypes import DeliveryType
-
 
13
logging.basicConfig(level=logging.DEBUG)
-
 
14
 
-
 
15
from datetime import date
7
from datetime import date
16
from textwrap import dedent
-
 
17
from string import Template
-
 
18
 
-
 
19
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct
-
 
20
from sqlalchemy.sql import func
-
 
21
 
-
 
22
from elixir import *
8
from elixir import *
23
 
-
 
-
 
9
from reportlab.lib.units import inch
24
from reportlab.pdfgen.canvas import Canvas
10
from reportlab.pdfgen.canvas import Canvas
25
from reportlab.rl_config import defaultPageSize
11
from reportlab.rl_config import defaultPageSize
26
from reportlab.lib.units import inch
-
 
27
from shop2020.clients.PaymentClient import PaymentClient
12
from shop2020.clients.CRMClient import CRMClient
28
from shop2020.thriftpy.warehouse.ttypes import PurchaseOrder, LineItem as POLineItem
-
 
29
 
-
 
30
from shop2020.model.v1.order.impl.model.ReturnOrder import ReturnOrder
-
 
31
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem,\
-
 
32
    Alerts, Order, BatchNoGenerator, InvoiceIDGenerator
-
 
33
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction,\
-
 
34
    TransactionServiceException, TransactionStatus, OrderStatus
-
 
35
from shop2020.utils.Utils import to_py_date, to_java_date
-
 
36
from shop2020.model.v1 import order
-
 
37
from shop2020.clients.LogisticsClient import LogisticsClient
-
 
38
from shop2020.clients.CatalogClient import CatalogClient
13
from shop2020.clients.CatalogClient import CatalogClient
39
from shop2020.clients.UserClient import UserClient
-
 
40
from shop2020.clients.HelperClient import HelperClient
14
from shop2020.clients.HelperClient import HelperClient
-
 
15
from shop2020.clients.LogisticsClient import LogisticsClient
-
 
16
from shop2020.clients.PaymentClient import PaymentClient
41
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part
17
from shop2020.clients.TransactionClient import TransactionClient
-
 
18
from shop2020.clients.UserClient import UserClient
42
from shop2020.clients.WarehouseClient import WarehouseClient
19
from shop2020.clients.WarehouseClient import WarehouseClient
-
 
20
from shop2020.model.v1 import order
-
 
21
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem, \
-
 
22
    Alerts, Order, BatchNoGenerator, InvoiceIDGenerator
-
 
23
from shop2020.model.v1.order.impl.model.ReturnOrder import ReturnOrder
-
 
24
from shop2020.thriftpy.logistics.ttypes import DeliveryType
43
from shop2020.thriftpy.model.v1.catalog.ttypes import BillingType
25
from shop2020.thriftpy.model.v1.catalog.ttypes import BillingType
-
 
26
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction, \
-
 
27
    TransactionServiceException, TransactionStatus, OrderStatus
-
 
28
from shop2020.thriftpy.warehouse.ttypes import PurchaseOrder, \
-
 
29
    LineItem as POLineItem
-
 
30
from shop2020.utils.EmailAttachmentSender import mail, get_attachment_part
-
 
31
from shop2020.utils.Utils import to_py_date, to_java_date
-
 
32
from sqlalchemy.sql import func
-
 
33
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct
-
 
34
from string import Template
-
 
35
from textwrap import dedent
-
 
36
import datetime
-
 
37
import logging
-
 
38
import os
-
 
39
import sys
-
 
40
import time
-
 
41
logging.basicConfig(level=logging.DEBUG)
-
 
42
 
-
 
43
 
-
 
44
 
-
 
45
 
-
 
46
 
44
 
47
 
45
PAGE_HEIGHT=defaultPageSize[1]
48
PAGE_HEIGHT=defaultPageSize[1]
46
PAGE_WIDTH=defaultPageSize[0]
49
PAGE_WIDTH=defaultPageSize[0]
47
 
50
 
-
 
51
ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT = {
-
 
52
        OrderStatus.SALES_RET_RESHIPPED     :  3,
-
 
53
        OrderStatus.SALES_RETURN_IN_TRANSIT : -5,
-
 
54
        OrderStatus.DELIVERY_SUCCESS        :  1,
-
 
55
        OrderStatus.DOA_CERT_INVALID        : -5,
-
 
56
}
-
 
57
 
48
def get_new_transaction():
58
def get_new_transaction():
49
    transaction = Transaction()
59
    transaction = Transaction()
50
    transaction.createdOn = datetime.datetime.now()
60
    transaction.createdOn = datetime.datetime.now()
51
    transaction.status = TransactionStatus.INIT
61
    transaction.status = TransactionStatus.INIT
52
    transaction.status_message = "New transaction"
62
    transaction.status_message = "New transaction"
Line 214... Line 224...
214
            catalog_client = CatalogClient().get_client()
224
            catalog_client = CatalogClient().get_client()
215
            catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
225
            catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
216
 
226
 
217
            item_pricing = catalog_client.getItemPricing(item_id, order.warehouse_id)
227
            item_pricing = catalog_client.getItemPricing(item_id, order.warehouse_id)
218
            order.lineitems[0].transfer_price = item_pricing.transferPrice        
228
            order.lineitems[0].transfer_price = item_pricing.transferPrice        
219
        
229
 
220
    session.commit()
230
    session.commit()
-
 
231
 
-
 
232
    if new_status == TransactionStatus.COD_IN_PROCESS:
-
 
233
        crm_client = CRMClient().get_client()
-
 
234
        crm_client.processCODTxn(transaction.id);
-
 
235
 
221
    return True
236
    return True
222
 
237
 
223
def adjust_delivery_time(order_time, delivery_days):
238
def adjust_delivery_time(order_time, delivery_days):
224
    order_date = order_time.date()
239
    order_date = order_time.date()
225
    
240
    
Line 462... Line 477...
462
def change_order_status(self, orderId, status, description):
477
def change_order_status(self, orderId, status, description):
463
    order = get_order(orderId)
478
    order = get_order(orderId)
464
    order.status = status
479
    order.status = status
465
    order.statusDescription = description
480
    order.statusDescription = description
466
    session.commit()
481
    session.commit()
-
 
482
 
-
 
483
    trust_level_delta = compute_trust_level_delta(order)
-
 
484
    if (trust_level_delta != 0):
-
 
485
        user_client = UserClient().get_client()
-
 
486
        user_client.increaseTrustLevel(order.customer_id, trust_level_delta)
-
 
487
 
467
    return True
488
    return True
468
 
489
 
-
 
490
def compute_trust_level_delta(order):
-
 
491
    trust_level_delta = 0
-
 
492
 
-
 
493
    if order.cod == True:
-
 
494
        trust_level_delta = ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT.get(order.status, 0)
-
 
495
 
-
 
496
    return trust_level_delta
-
 
497
 
469
def verify_order(self, orderId):
498
def verify_order(self, orderId):
470
    logging.info("Verifying order no: " + str(orderId))
499
    logging.info("Verifying order no: " + str(orderId))
471
    order = get_order(orderId)
500
    order = get_order(orderId)
472
    if order.status == OrderStatus.INIT:
501
    if order.status == OrderStatus.INIT:
473
        order.status = OrderStatus.SUBMITTED_FOR_PROCESSING
502
        order.status = OrderStatus.SUBMITTED_FOR_PROCESSING