| Line 2... |
Line 2... |
| 2 |
Created on 29-Mar-2010
|
2 |
Created on 29-Mar-2010
|
| 3 |
|
3 |
|
| 4 |
@author: ashish
|
4 |
@author: ashish
|
| 5 |
'''
|
5 |
'''
|
| 6 |
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem,\
|
6 |
from shop2020.model.v1.order.impl.DataService import Transaction, LineItem,\
|
| 7 |
AdditionalInfo, Payment, Shipment, TransactionTrail, Billing, ItemInfo,\
|
- |
|
| 8 |
Alerts, ExtraItemInfo
|
7 |
Payment, Alerts, Order
|
| 9 |
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction,\
|
8 |
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as T_Transaction,\
|
| 10 |
TransactionServiceException
|
9 |
TransactionServiceException
|
| 11 |
import datetime
|
10 |
import datetime
|
| 12 |
from shop2020.utils.OrderStatus import status_transaction_init,\
|
11 |
from shop2020.utils.OrderStatus import status_transaction_init, get_c_status
|
| 13 |
status_shipment_shipped, status_shipment_delivered, get_c_status
|
- |
|
| 14 |
from elixir import *
|
12 |
from elixir import *
|
| 15 |
from shop2020.utils.Utils import to_py_date
|
13 |
from shop2020.utils.Utils import to_py_date
|
| 16 |
from sqlalchemy.sql.expression import and_
|
14 |
from sqlalchemy.sql.expression import and_
|
| - |
|
15 |
from shop2020.model.v1 import order
|
| 17 |
|
16 |
|
| 18 |
|
17 |
|
| - |
|
18 |
|
| - |
|
19 |
def get_new_transaction():
|
| - |
|
20 |
transaction = Transaction()
|
| - |
|
21 |
transaction.createdOn = datetime.datetime.now()
|
| - |
|
22 |
transaction.status = status_transaction_init
|
| - |
|
23 |
transaction.status_message = "New transaction"
|
| - |
|
24 |
|
| - |
|
25 |
return transaction
|
| - |
|
26 |
|
| - |
|
27 |
'''
|
| - |
|
28 |
customer_id = Field(Integer)
|
| - |
|
29 |
shopping_cart_id = Field(Integer)
|
| - |
|
30 |
payments = OneToMany("Payment")
|
| - |
|
31 |
orders = OneToMany("Order")
|
| - |
|
32 |
'''
|
| - |
|
33 |
|
| - |
|
34 |
def create_order(t_order):
|
| - |
|
35 |
order = Order()
|
| - |
|
36 |
if t_order.warehouse_id:
|
| - |
|
37 |
order.warehouse_id = t_order.warehouse_id
|
| - |
|
38 |
if order.logistics_provider_id:
|
| - |
|
39 |
order.logistics_provider_id = t_order.logistics_provider_id
|
| - |
|
40 |
order.airwaybill_no = t_order.airwaybill_no
|
| - |
|
41 |
order.tracking_id = t_order.tracking_id
|
| - |
|
42 |
if t_order.expected_delivery_time:
|
| - |
|
43 |
order.expected_delivery_time = to_py_date(t_order.expected_delivery_time)
|
| - |
|
44 |
if t_order.customer_id:
|
| - |
|
45 |
order.customer_id = t_order.customer_id
|
| - |
|
46 |
order.customer_name = t_order.customer_name
|
| - |
|
47 |
order.customer_mobilenumber = t_order.customer_mobilenumber
|
| - |
|
48 |
order.customer_pincode = t_order.customer_pincode
|
| - |
|
49 |
order.customer_address = t_order.customer_address
|
| - |
|
50 |
order.customer_email = t_order.customer_email
|
| - |
|
51 |
#new status and status description to be added
|
| - |
|
52 |
order.status = t_order.status
|
| - |
|
53 |
order.statusDescription = t_order.statusDescription
|
| - |
|
54 |
order.total_amount = t_order.total_amount
|
| - |
|
55 |
order.total_weight = t_order.total_weight
|
| - |
|
56 |
if t_order.created_timestamp:
|
| - |
|
57 |
order.created_timestamp = to_py_date(t_order.created_timestamp)
|
| - |
|
58 |
else:
|
| - |
|
59 |
order.created_timestamp = datetime.datetime.now()
|
| - |
|
60 |
#these fields will not be populated in initial
|
| - |
|
61 |
"""
|
| - |
|
62 |
order.invoice_number = order.invoice_number
|
| - |
|
63 |
order.billed_by = order.billed_by
|
| - |
|
64 |
order.accepted_timestamp = order.accepted_timestamp
|
| - |
|
65 |
order.billing_timestamp = order.billing_timestamp
|
| - |
|
66 |
order.shipping_timestamp = order.shipping_timestamp
|
| - |
|
67 |
order.delivery_timestamp = order.delivery_timestamp
|
| - |
|
68 |
"""
|
| - |
|
69 |
return order
|
| - |
|
70 |
|
| - |
|
71 |
def create_transaction(t_transaction):
|
| - |
|
72 |
t_orders = t_transaction.orders
|
| - |
|
73 |
if not t_orders:
|
| - |
|
74 |
raise TransactionServiceException(101, "Orders missing from the transaction")
|
| - |
|
75 |
transaction = get_new_transaction()
|
| - |
|
76 |
transaction.customer_id = t_transaction.customer_id
|
| - |
|
77 |
transaction.shopping_cart_id = t_transaction.shoppingCartid
|
| - |
|
78 |
|
| - |
|
79 |
for t_order in t_orders:
|
| - |
|
80 |
order = create_order(t_order)
|
| - |
|
81 |
order.transaction = transaction
|
| - |
|
82 |
for line_item in t_order.lineitems:
|
| - |
|
83 |
litem = LineItem()
|
| - |
|
84 |
litem.sku_id = line_item.sku_id
|
| - |
|
85 |
litem.brand = line_item.brand
|
| - |
|
86 |
if line_item.model_number:
|
| - |
|
87 |
litem.model_number = line_item.model_number
|
| - |
|
88 |
if line_item.model_name:
|
| - |
|
89 |
litem.model_name = line_item.model_name
|
| - |
|
90 |
if line_item.extra_info:
|
| - |
|
91 |
litem.extra_info = line_item.extra_info
|
| - |
|
92 |
litem.quantity = line_item.quantity
|
| - |
|
93 |
litem.unit_price = line_item.unit_price
|
| - |
|
94 |
litem.unit_weight = line_item.unit_weight
|
| - |
|
95 |
litem.total_price = line_item.total_price
|
| - |
|
96 |
litem.total_weight = line_item.total_weight
|
| - |
|
97 |
"""
|
| - |
|
98 |
if line_item.addedOn:
|
| - |
|
99 |
litem.added_on = to_py_date(line_item.addedOn)
|
| - |
|
100 |
else:
|
| - |
|
101 |
litem.added_on = datetime.datetime.now()
|
| - |
|
102 |
"""
|
| - |
|
103 |
litem.order = order
|
| - |
|
104 |
|
| - |
|
105 |
#add payment info
|
| - |
|
106 |
#transaction.payments=[]
|
| - |
|
107 |
if t_transaction.paymentInfo:
|
| - |
|
108 |
if not t_transaction.paymentInfo.payments:
|
| - |
|
109 |
raise TransactionServiceException(108, "no payments found")
|
| - |
|
110 |
|
| - |
|
111 |
for k,v in t_transaction.paymentInfo.payments.iteritems():
|
| - |
|
112 |
payment = Payment()
|
| - |
|
113 |
payment.merchant_tx_id = v.merchant_tx_id
|
| - |
|
114 |
payment.bank_tx_id = v.bank_tx_id
|
| - |
|
115 |
payment.mode = v.mode
|
| - |
|
116 |
payment.amount = v.amount
|
| - |
|
117 |
payment.payment_id = v.id
|
| - |
|
118 |
payment.status = v.status
|
| - |
|
119 |
payment.status_message = v.description
|
| - |
|
120 |
payment.start_time = to_py_date(v.submissionTimestamp)
|
| - |
|
121 |
payment.finish_time = to_py_date(v.completionTimestamp)
|
| - |
|
122 |
transaction.payments.append(payment)
|
| - |
|
123 |
session.commit()
|
| - |
|
124 |
return transaction.id
|
| - |
|
125 |
|
| - |
|
126 |
def get_transaction(transaction_id):
|
| - |
|
127 |
transaction = Transaction.get_by(id=transaction_id)
|
| - |
|
128 |
if not transaction:
|
| - |
|
129 |
raise TransactionServiceException(108, "no such transaction")
|
| - |
|
130 |
|
| - |
|
131 |
return transaction
|
| - |
|
132 |
|
| - |
|
133 |
def get_transactions_for_customer(customer_id, from_date, to_date, status):
|
| - |
|
134 |
if not customer_id:
|
| - |
|
135 |
raise TransactionServiceException(101, "bad customer id")
|
| - |
|
136 |
query = Transaction.query.filter(Transaction.customer_id == customer_id)
|
| - |
|
137 |
if status:
|
| - |
|
138 |
query = query.filter(Transaction.status == status)
|
| - |
|
139 |
if from_date:
|
| - |
|
140 |
query = query.filter(Transaction.createdOn >from_date)
|
| - |
|
141 |
if to_date:
|
| - |
|
142 |
query = query.filter(Transaction.createdOn < to_date)
|
| - |
|
143 |
return query.all()
|
| - |
|
144 |
|
| - |
|
145 |
def get_transactions_for_shopping_cart_id(shopping_cart_id):
|
| - |
|
146 |
transactions = Transaction.query.filter_by(shopping_cart_id=shopping_cart_id).all()
|
| - |
|
147 |
if not transactions:
|
| - |
|
148 |
raise TransactionServiceException(108, "transactions for this shopping cart")
|
| - |
|
149 |
return transactions
|
| - |
|
150 |
|
| - |
|
151 |
def get_transaction_status(transaction_id):
|
| - |
|
152 |
if not transaction_id:
|
| - |
|
153 |
raise TransactionServiceException(101, "bad transaction id")
|
| - |
|
154 |
|
| - |
|
155 |
transaction = get_transaction(transaction_id)
|
| - |
|
156 |
|
| - |
|
157 |
return transaction.status
|
| - |
|
158 |
|
| - |
|
159 |
def change_transaction_status(transaction_id, new_status, description):
|
| - |
|
160 |
transaction = get_transaction(transaction_id)
|
| - |
|
161 |
transaction.status = new_status
|
| - |
|
162 |
transaction.status_message = description
|
| - |
|
163 |
session.commit()
|
| - |
|
164 |
return True
|
| - |
|
165 |
|
| - |
|
166 |
|
| - |
|
167 |
def get_order(order_id):
|
| - |
|
168 |
order = Order.get_by(id=order_id)
|
| - |
|
169 |
if not order:
|
| - |
|
170 |
raise TransactionServiceException(108, "no such order")
|
| - |
|
171 |
|
| - |
|
172 |
return order
|
| - |
|
173 |
|
| - |
|
174 |
def get_orders_for_customer(customer_id, from_date, to_date, status):
|
| - |
|
175 |
if not customer_id:
|
| - |
|
176 |
raise TransactionServiceException(101, "bad customer id")
|
| - |
|
177 |
query = Order.query.filter(Order.customer_id == customer_id)
|
| - |
|
178 |
if status:
|
| - |
|
179 |
query = query.filter(Order.status == status)
|
| - |
|
180 |
if from_date:
|
| - |
|
181 |
query = query.filter(Order.created_timestamp >from_date)
|
| - |
|
182 |
if to_date:
|
| - |
|
183 |
query = query.filter(Order.created_timestamp < to_date)
|
| - |
|
184 |
return query.all()
|
| - |
|
185 |
|
| - |
|
186 |
def get_all_orders(status, from_date, to_date, warehouse_id):
|
| - |
|
187 |
if not warehouse_id:
|
| - |
|
188 |
raise TransactionServiceException(101, "bad warehouse id")
|
| - |
|
189 |
query = Order.query.filter(Order.warehouse_id == warehouse_id)
|
| - |
|
190 |
if status:
|
| - |
|
191 |
query = query.filter(Order.status == status)
|
| - |
|
192 |
if from_date:
|
| - |
|
193 |
query = query.filter(Order.created_timestamp >from_date)
|
| - |
|
194 |
if to_date:
|
| - |
|
195 |
query = query.filter(Order.created_timestamp < to_date)
|
| - |
|
196 |
return query.all()
|
| - |
|
197 |
|
| - |
|
198 |
|
| - |
|
199 |
def change_order_status(self, orderId, status, description):
|
| - |
|
200 |
order = get_order(orderId)
|
| - |
|
201 |
order.status = status
|
| - |
|
202 |
order.statusDescription = description
|
| - |
|
203 |
session.commit()
|
| - |
|
204 |
return True
|
| - |
|
205 |
|
| - |
|
206 |
|
| - |
|
207 |
def get_orders_for_transaction(transaction_id):
|
| - |
|
208 |
orders = Order.query.filter_by(transaction_id=transaction_id).all()
|
| - |
|
209 |
if not orders:
|
| - |
|
210 |
raise TransactionServiceException(101, "No order for the transaction")
|
| - |
|
211 |
return orders
|
| - |
|
212 |
|
| - |
|
213 |
def get_line_items_for_order(order_id):
|
| - |
|
214 |
query = LineItem.query.filter(LineItem.order_id == order_id)
|
| - |
|
215 |
return query.all()
|
| - |
|
216 |
|
| - |
|
217 |
|
| - |
|
218 |
|
| - |
|
219 |
def get_alerts(order_id, all):
|
| - |
|
220 |
query = Alerts.query.filter_by(order_id=order_id)
|
| - |
|
221 |
if not all:
|
| - |
|
222 |
query = query.filter_by(valid=True)
|
| - |
|
223 |
return query.all()
|
| - |
|
224 |
|
| - |
|
225 |
def set_alert(order_id, unset, type, comment):
|
| - |
|
226 |
#get existing alert
|
| - |
|
227 |
if unset:
|
| - |
|
228 |
query = Alerts.query.filter_by(order_id=order_id)
|
| - |
|
229 |
query = query.filter_by(type=type)
|
| - |
|
230 |
alerts = query.all()
|
| - |
|
231 |
for alert in alerts:
|
| - |
|
232 |
if alert.valid:
|
| - |
|
233 |
alert.valid = False
|
| - |
|
234 |
alert.comment = comment
|
| - |
|
235 |
alert.time_unset = datetime.datetime.now()
|
| - |
|
236 |
else:
|
| - |
|
237 |
alert = Alerts()
|
| - |
|
238 |
alert.order_id = order_id
|
| - |
|
239 |
alert.valid = True
|
| - |
|
240 |
alert.type = type
|
| - |
|
241 |
alert.comment = comment
|
| - |
|
242 |
alert.time_set = datetime.datetime.now()
|
| - |
|
243 |
session.commit()
|
| - |
|
244 |
|
| - |
|
245 |
"""
|
| 19 |
def get_new_transaction():
|
246 |
def get_new_transaction():
|
| 20 |
transaction = Transaction()
|
247 |
transaction = Transaction()
|
| 21 |
transaction.createdOn = datetime.datetime.now()
|
248 |
transaction.createdOn = datetime.datetime.now()
|
| 22 |
transaction.status = status_transaction_init
|
249 |
transaction.status = status_transaction_init
|
| 23 |
transaction.status_message = "New transaction"
|
250 |
transaction.status_message = "New transaction"
|
| Line 364... |
Line 591... |
| 364 |
extra_item_info.transaction_id = transaction_id
|
591 |
extra_item_info.transaction_id = transaction_id
|
| 365 |
extra_item_info.sku_id = sku_id
|
592 |
extra_item_info.sku_id = sku_id
|
| 366 |
extra_item_info.model = model
|
593 |
extra_item_info.model = model
|
| 367 |
extra_item_info.vendor = vendor
|
594 |
extra_item_info.vendor = vendor
|
| 368 |
extra_item_info.colour = colour
|
595 |
extra_item_info.colour = colour
|
| 369 |
session.commit()
|
- |
|
| 370 |
|
596 |
session.commit()
|
| - |
|
597 |
"""
|
| - |
|
598 |
|
| 371 |
|
599 |
|