Subversion Repositories SmartDukaan

Rev

Rev 194 | Rev 358 | 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
'''
6
 
7
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction,\
132 ashish 8
    Item as T_Item, LineItem as T_LineItem, PaymentInfo, Payment, BillingInfo,\
9
    ShipmentInfo, Item, OrderInfo as T_OrderInfo
104 ashish 10
from shop2020.thriftpy.model.v1.order.ttypes import Billing as T_Billing
11
from shop2020.thriftpy.model.v1.order.ttypes import Shipment as T_Shipment
304 ashish 12
from shop2020.thriftpy.model.v1.order.ttypes import Alert as T_Alert
13
from shop2020.thriftpy.model.v1.order.ttypes import ExtraOrderInfo as T_ExtraOrderInfo
104 ashish 14
from shop2020.utils.Utils import to_java_date
15
from shop2020.utils import OrderStatus
304 ashish 16
from shop2020.model.v1.order.impl.DataService import Billing, Alerts,\
17
    ExtraItemInfo
104 ashish 18
from shop2020.utils.OrderStatus import get_t_status
19
 
20
def to_t_transaction(transaction):
21
    t_transaction = T_Transaction()
22
    t_transaction.id = transaction.id
23
    t_transaction.createdOn = to_java_date(transaction.createdOn)
24
    t_transaction.transactionStatus = OrderStatus.get_t_status(transaction.status)
194 ashish 25
    t_transaction.statusDescription = transaction.status_message
132 ashish 26
    t_transaction.expectedDeliveryTime = to_java_date(transaction.expected_delivery_time)
27
    t_transaction.customer_id = transaction.customer_id
28
    t_transaction.shoppingCartid = transaction.shopping_cart_id
29
    t_transaction.orderInfo = to_t_order_info(transaction.lineitems)
30
    t_transaction.shipmentInfo = to_t_shipment_info(transaction.shipments)
31
    t_transaction.billingInfo = to_t_billing_info(transaction.lineitems)
32
    t_transaction.paymentInfo = to_t_payment_info(transaction.payments)
33
    #populate order info
104 ashish 34
 
35
    return t_transaction
36
 
132 ashish 37
def to_t_payment_info(payments):
38
    t_payment_info = PaymentInfo()
39
    if payments:
40
        payment_map = {}
41
        for payment in payments:
42
            t_payment_info.id = payment.id
43
            t_payment = Payment()
44
            t_payment.merchant_tx_id = payment.merchant_tx_id
45
            t_payment.bank_tx_id = payment.bank_tx_id
46
            t_payment.mode = payment.mode
47
            t_payment.amount = payment.amount
48
            t_payment.status = payment.status
49
            t_payment.description = payment.status_message
194 ashish 50
            t_payment.submissionTimestamp = to_java_date(payment.start_time)
51
            t_payment.completionTimestamp = to_java_date(payment.finish_time)
132 ashish 52
            payment_map[t_payment.submissionTimestamp] = t_payment
53
        t_payment_info.payments = payment_map
54
 
55
    return t_payment_info
56
 
57
def to_t_billing_info(lineitems):
58
    t_billing_info = BillingInfo()
59
    if lineitems:
60
        billed_items = []
61
        billings = []
62
        for item in lineitems:
63
            #each item has a billing
64
            t_billing_info.id = item.transaction.id 
65
            billing = item.billing
66
            if billing:
67
                if billed_items.count(billing.id) == 0:
68
                    billed_items.append(billing.id)
69
                    billings.append(to_t_billing(billing))
70
        t_billing_info.billings = billings
71
    return t_billing_info
72
 
73
def to_t_order_info(lineitems):
74
    t_order_info = T_OrderInfo()
75
    if lineitems:
76
        line_item_list = []
77
        for lineitem in lineitems:
78
            t_order_info.id = lineitem.transaction.id
79
            line_item_list.append(to_t_lineitem(lineitem))
80
        t_order_info.lineitems = line_item_list
81
    return t_order_info
82
 
83
def to_t_shipment_info(shipments):
84
    shipment_info = ShipmentInfo()
85
    if shipments:
86
        shipment_list = []
87
        for shipment in shipments:
88
            shipment_info.id = shipment.transaction.id
89
            shipment_list.append(to_t_shipment(shipment))
90
        shipment_info.shipments = shipment_list
91
    return shipment_info
92
 
104 ashish 93
def to_t_billing(billing):
94
    t_billing = T_Billing()
95
    t_billing.id = billing.id
96
    t_billing.billNumber = billing.bill_number
97
    t_billing.generatedBy = billing.generated_by
132 ashish 98
    try:
99
        t_billing.generatedTimestamp = to_java_date(billing.created_on)
100
    except:
101
        print "date not found"
194 ashish 102
    t_billing.lineItem = []
103
    if billing.line_item:
104
        for item in billing.line_item:
105
            t_billing.lineItem.append(to_t_lineitem(item))
106
 
132 ashish 107
    return t_billing
108
 
104 ashish 109
def to_t_lineitem(lineitem):
110
    t_line_item = T_LineItem()
194 ashish 111
    try:
112
        t_line_item.id = lineitem.id
113
    except:
114
        t_line_item.id = 0
132 ashish 115
    if lineitem.item_info:
116
        t_line_item.item = to_t_item_info(lineitem.item_info)
117
 
104 ashish 118
    t_line_item.addedOn = to_java_date(lineitem.added_on)
119
    t_line_item.additionalInfo = {}
120
    if lineitem.additional_info:
121
        for k,v in lineitem.additional_info.iteritems():
122
            t_line_item.additionalInfo[k] = v
123
    return t_line_item
124
 
132 ashish 125
def to_t_item_info(item_info):
126
    t_item = Item()
127
    t_item.id = item_info.line_item.item_id
128
    t_item.price = item_info.price
129
    t_item.weight = item_info.weight
130
    return t_item
131
 
104 ashish 132
def to_t_shipment(shipment):
133
    t_shipment = T_Shipment()
134
    t_shipment.id = shipment.id
135
    t_shipment.address = shipment.address
136
    t_shipment.airwayBillNo = shipment.airway_bill_no
137
    try:
138
        t_shipment.deliveryTimestamp = to_java_date(shipment.delivery_time)
139
    except:
140
        print "no delivery timestamp"
141
    t_shipment.insurance = shipment.insurance_value
142
    t_shipment.provider = shipment.provider
143
    t_shipment.value = shipment.declared_value
144
    try:
145
        t_shipment.shipmentTimestamp = to_java_date(shipment.shipment_time)
146
    except:
147
        print "no shipment timestamp"
148
    t_shipment.status = get_t_status(shipment.status)
149
    t_shipment.weight = shipment.weight
150
    t_shipment.trackingId = shipment.tracking_id
151
 
152
    t_shipment.lineItems = []
194 ashish 153
    if shipment.lineitems:
154
        for line_item in shipment.lineitems:
104 ashish 155
            t_shipment.lineItems.append(to_t_lineitem(line_item))
156
    return t_shipment
132 ashish 157
 
304 ashish 158
def to_t_alert(alert):
159
    t_alert = T_Alert()
160
    t_alert.id = alert.id
161
    t_alert.comment = alert.comment
162
    try:
163
        t_alert.time_set = to_java_date(alert.time_set)
164
    except:
165
        pass
166
    try:
167
        t_alert.time_unset = to_java_date(alert.time_unset)
168
    except:
169
        pass
170
    t_alert.transaction_id = alert.transaction_id
171
    t_alert.type = alert.type
172
    return t_alert
173
 
174
def to_t_extra_item_info(extra_item_info, transaction_id):
175
 
176
    extra_order_info = T_ExtraOrderInfo()
177
    if not extra_item_info:
178
        extra_order_info.id = 2
179
        extra_order_info.model_name = "N 72"
180
        extra_order_info.sku_id = 34
181
        extra_order_info.transaction_id = transaction_id
182
        extra_order_info.vendor_info = "Nokia"
183
        extra_order_info.colour = "Black"
184
        return extra_order_info
185
 
186
    extra_order_info.id = extra_item_info.id
187
    extra_order_info.model_name = extra_item_info.model
188
    extra_order_info.vendor_info = extra_item_info.vendor
189
    extra_order_info.transaction_id = extra_item_info.transaction_id
190
    extra_order_info.sku_id = extra_item_info.sku_id
191
    return extra_order_info