Subversion Repositories SmartDukaan

Rev

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