Subversion Repositories SmartDukaan

Rev

Rev 685 | Rev 738 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 29-Mar-2010

@author: ashish
'''

from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction,\
    LineItem as T_LineItem, Order as T_Order, Alert as T_Alert, OrderStatus
from shop2020.utils.Utils import to_java_date
from shop2020.model.v1.order.impl.DataService import Alerts
    
from shop2020.utils.OrderStatus import get_t_status

def to_t_transaction(transaction):
    t_transaction = T_Transaction()
    t_transaction.id = transaction.id
    t_transaction.createdOn = to_java_date(transaction.createdOn)
    t_transaction.transactionStatus = transaction.status
    t_transaction.statusDescription = transaction.status_message
    t_transaction.customer_id = transaction.customer_id
    t_transaction.shoppingCartid = transaction.shopping_cart_id
    t_transaction.orders = []
    #populate orders
    for order in transaction.orders:
        t_order = to_t_order(order)
        t_transaction.orders.append(t_order)
    return t_transaction

def to_t_order(order):
    t_order = T_Order()
    t_order.id = order.id
    t_order.warehouse_id = order.warehouse_id
    t_order.logistics_provider_id = order.logistics_provider_id
    t_order.airwaybill_no = order.airwaybill_no
    t_order.tracking_id = order.tracking_id
    t_order.expected_delivery_time = to_java_date(order.expected_delivery_time)
    t_order.customer_id = order.customer_id
    t_order.customer_name = order.customer_name
    t_order.customer_mobilenumber = order.customer_mobilenumber
    t_order.customer_pincode = order.customer_pincode
    t_order.customer_address = order.customer_address
    t_order.customer_city = order.customer_city
    t_order.customer_state = order.customer_state
    t_order.customer_email = order.customer_email    
    t_order.status = order.status 
    t_order.statusDescription = order.statusDescription
    t_order.total_amount = order.total_amount
    t_order.total_weight = order.total_weight
    t_order.created_timestamp = to_java_date(order.created_timestamp)
    t_order.invoice_number = order.invoice_number
    t_order.billed_by = order.billed_by
    t_order.accepted_timestamp = order.accepted_timestamp
    t_order.billing_timestamp = order.billing_timestamp
    t_order.shipping_timestamp = order.shipping_timestamp
    t_order.delivery_timestamp = order.delivery_timestamp
    t_order.jacket_number = order.jacket_number
    t_order.lineitems = []
    for lineitem in order.lineitems:
        t_lineitem = to_t_lineitem(lineitem)
        t_order.lineitems.append(t_lineitem)

    return t_order

def to_t_lineitem(lineitem):
    t_lineitem = T_LineItem()
    t_lineitem.id = lineitem.id
    t_lineitem.item_id = lineitem.item_id
    t_lineitem.unit_weight = lineitem.unit_weight
    t_lineitem.unit_price = lineitem.unit_price
    t_lineitem.total_price = lineitem.total_price
    t_lineitem.total_weight = lineitem.total_weight 
    t_lineitem.quantity = lineitem.quantity
    t_lineitem.color = lineitem.color
    t_lineitem.model_number = lineitem.model_number
    t_lineitem.model_name = lineitem.model_name 
    t_lineitem.extra_info = lineitem.extra_info
    t_lineitem.brand = lineitem.brand
    return t_lineitem

def to_t_alert(alert):
    t_alert = T_Alert()
    t_alert.id = alert.id
    t_alert.comment = alert.comment
    try:
        t_alert.time_set = to_java_date(alert.time_set)
    except:
        pass
    try:
        t_alert.time_unset = to_java_date(alert.time_unset)
    except:
        pass
    t_alert.order_id = alert.order_id
    t_alert.type = alert.type
    return t_alert


"""
def to_t_transaction(transaction):
    t_transaction = T_Transaction()
    t_transaction.id = transaction.id
    t_transaction.warehouse_id = transaction.warehouse_id
    t_transaction.createdOn = to_java_date(transaction.createdOn)
    t_transaction.transactionStatus = OrderStatus.get_t_status(transaction.status)
    t_transaction.statusDescription = transaction.status_message
    t_transaction.expectedDeliveryTime = to_java_date(transaction.expected_delivery_time)
    t_transaction.customer_id = transaction.customer_id
    t_transaction.shoppingCartid = transaction.shopping_cart_id
    t_transaction.orderInfo = to_t_order_info(transaction.lineitems)
    t_transaction.shipmentInfo = to_t_shipment_info(transaction.shipments)
    t_transaction.billingInfo = to_t_billing_info(transaction.lineitems)
    t_transaction.paymentInfo = to_t_payment_info(transaction.payments)
    
    #populate order info
        
    return t_transaction

def to_t_payment_info(payments):
    t_payment_info = PaymentInfo()
    if payments:
        payment_map = {}
        for payment in payments:
            t_payment_info.id = payment.id
            t_payment = Payment()
            t_payment.merchant_tx_id = payment.merchant_tx_id
            t_payment.bank_tx_id = payment.bank_tx_id
            t_payment.mode = payment.mode
            t_payment.amount = payment.amount
            t_payment.status = payment.status
            t_payment.description = payment.status_message
            t_payment.submissionTimestamp = to_java_date(payment.start_time)
            t_payment.completionTimestamp = to_java_date(payment.finish_time)
            payment_map[t_payment.submissionTimestamp] = t_payment
        t_payment_info.payments = payment_map
        
    return t_payment_info

def to_t_billing_info(lineitems):
    t_billing_info = BillingInfo()
    if lineitems:
        billed_items = []
        billings = []
        for item in lineitems:
            #each item has a billing
            t_billing_info.id = item.transaction.id 
            billing = item.billing
            if billing:
                if billed_items.count(billing.id) == 0:
                    billed_items.append(billing.id)
                    billings.append(to_t_billing(billing))
        t_billing_info.billings = billings
    return t_billing_info

def to_t_order_info(lineitems):
    t_order_info = T_OrderInfo()
    if lineitems:
        line_item_list = []
        for lineitem in lineitems:
            t_order_info.id = lineitem.transaction.id
            line_item_list.append(to_t_lineitem(lineitem))
        t_order_info.lineitems = line_item_list
    return t_order_info

def to_t_shipment_info(shipments):
    shipment_info = ShipmentInfo()
    if shipments:
        shipment_list = []
        for shipment in shipments:
            shipment_info.id = shipment.transaction.id
            shipment_list.append(to_t_shipment(shipment))
        shipment_info.shipments = shipment_list
    return shipment_info

def to_t_billing(billing):
    t_billing = T_Billing()
    t_billing.id = billing.id
    t_billing.billNumber = billing.bill_number
    t_billing.generatedBy = billing.generated_by
    try:
        t_billing.generatedTimestamp = to_java_date(billing.created_on)
    except:
        print "date not found"
    t_billing.lineItem = []
    if billing.line_item:
        for item in billing.line_item:
            t_billing.lineItem.append(to_t_lineitem(item))
    
    return t_billing

def to_t_lineitem(lineitem):
    t_line_item = T_LineItem()
    try:
        t_line_item.id = lineitem.id
    except:
        t_line_item.id = 0
    if lineitem.item_info:
        t_line_item.item = to_t_item_info(lineitem.item_info)
    
    t_line_item.addedOn = to_java_date(lineitem.added_on)
    t_line_item.additionalInfo = {}
    if lineitem.additional_info:
        for k,v in lineitem.additional_info.iteritems():
            t_line_item.additionalInfo[k] = v
    return t_line_item

def to_t_item_info(item_info):
    t_item = Item()
    t_item.id = item_info.line_item.item_id
    t_item.price = item_info.price
    t_item.weight = item_info.weight
    return t_item
    
def to_t_shipment(shipment):
    t_shipment = T_Shipment()
    t_shipment.id = shipment.id
    t_shipment.address = shipment.address
    t_shipment.airwayBillNo = shipment.airway_bill_no
    try:
        t_shipment.deliveryTimestamp = to_java_date(shipment.delivery_time)
    except:
        print "no delivery timestamp"
    t_shipment.insurance = shipment.insurance_value
    t_shipment.provider = shipment.provider
    t_shipment.value = shipment.declared_value
    try:
        t_shipment.shipmentTimestamp = to_java_date(shipment.shipment_time)
    except:
        print "no shipment timestamp"
    t_shipment.status = get_t_status(shipment.status)
    t_shipment.weight = shipment.weight
    t_shipment.trackingId = shipment.tracking_id
    
    t_shipment.lineItems = []
    if shipment.lineitems:
        for line_item in shipment.lineitems:
            t_shipment.lineItems.append(to_t_lineitem(line_item))
    return t_shipment

def to_t_alert(alert):
    t_alert = T_Alert()
    t_alert.id = alert.id
    t_alert.comment = alert.comment
    try:
        t_alert.time_set = to_java_date(alert.time_set)
    except:
        pass
    try:
        t_alert.time_unset = to_java_date(alert.time_unset)
    except:
        pass
    t_alert.transaction_id = alert.transaction_id
    t_alert.type = alert.type
    return t_alert

def to_t_extra_item_info(extra_item_info, transaction_id):
    
    extra_order_info = T_ExtraOrderInfo()
    if not extra_item_info:
        extra_order_info.id = 2
        extra_order_info.model_name = "N 72"
        extra_order_info.sku_id = 34
        extra_order_info.transaction_id = transaction_id
        extra_order_info.vendor_info = "Nokia"
        extra_order_info.colour = "Black"
        return extra_order_info
    
    extra_order_info.id = extra_item_info.id
    extra_order_info.model_name = extra_item_info.model
    extra_order_info.vendor_info = extra_item_info.vendor
    extra_order_info.transaction_id = extra_item_info.transaction_id
    extra_order_info.sku_id = extra_item_info.sku_id
    return extra_order_info
"""