def make_order(request, template_name='product_order/make_order.html'): order_id = request.GET.get('order_id') role = request.GET.get('role') action = request.GET.get('action') if not role: return render_to_response( template_name, { 'order': None, 'role_actions': Order_State_Machine.get_initial_role_actions(), 'current_state': Order_State_Machine.get_initial_state() }, context_instance=RequestContext(request)) else: if role == 'B' and action == 'create order': order_id = Order.create_order() order = get_object_or_404(Order, id=order_id) else: order = get_object_or_404(Order, id=order_id) order.goto_next(role, action) return render_to_response( template_name, { 'order': order.product_order, 'role_actions': order.product_order.get_role_actions(), 'current_state': order.state }, context_instance=RequestContext(request))
def create_order(cls, order_id=None, buyer_id='877673433', item_list=['56899023', '83768385'], **kwargs): return Order.create_order(order_id, buyer_id, item_list, **kwargs)
def goto_next(cls, order_id, role, order_action, item_action, item_id, **kwargs): if order_action: #if there is no order yet, and the action is from Buyer 'create order', then create the order if not order_id and role == 'B' and order_action == 'create order': #TODO: remove below? order_id = Order.create_order() order = get_object_or_404(Order, id=order_id) else: order = get_object_or_404(Order, id=order_id) order.goto_next(role, order_action) if item_action: #if item_action, this will only affect the item that is acted on order = get_object_or_404(Order, id=order_id) ocr = order.order_item_rel_set.get(item_id=item_id) ocr.goto_next(role, item_action) if not Refund_Sheet.objects.filter(item_id=ocr.id).exists():#not ocr.refund_sheet: if ocr.state == 'WR': rs_type = '' if item_action == 'request refund': rs_type = 'RO' if item_action == 'request refund with return': rs_type = 'RR' rs = Refund_Sheet.create_refund_sheet(ocr.id, rs_type) rl = Refund_Log(refund_sheet_id=rs.id, refund_type=rs.refund_type, action=item_action, reason=kwargs.get('reason',''), memo=kwargs.get('memo', ''), operator=kwargs.get('operator',''), refund_fee=kwargs.get('refund_fee', None)) rl.save() else: rs = get_object_or_404(Refund_Sheet, item_id=ocr.id) next_state, post_action = rs.goto_next(role, item_action) #TODO:make below into post_action if item_action == "ship back": rs.express_company = kwargs.get("express_company", "") rs.express_tracking_no = kwargs.get("express_tracking_no", "") rs.save() if item_action == "change refund request": rs_type = kwargs.get('refund_type', '') if rs_type: rs.refund_type = rs_type rs.save() if next_state: rl = Refund_Log(refund_sheet_id=rs.id, refund_type=kwargs.get('refund_type', ''), action=item_action, reason=kwargs.get('reason', ''), memo=kwargs.get('memo', ''), operator=kwargs.get('operator', ''), refund_fee=kwargs.get('refund_fee', None)) rl.save() return {'order': order, 'admin_actions':admin_actions, 'input_actions':input_actions}
def make_order(request, template_name='product_order/make_order.html'): order_id = request.GET.get('order_id') role = request.GET.get('role') action = request.GET.get('action') if not role: return render_to_response(template_name, {'order': None, 'role_actions':Order_State_Machine.get_initial_role_actions(), 'current_state':Order_State_Machine.get_initial_state()}, context_instance=RequestContext(request)) else: if role == 'B' and action == 'create order': order_id = Order.create_order() order = get_object_or_404(Order, id=order_id) else: order = get_object_or_404(Order, id=order_id) order.goto_next(role, action) return render_to_response(template_name, {'order': order.product_order, 'role_actions':order.product_order.get_role_actions(), 'current_state':order.state}, context_instance=RequestContext(request))
def goto_next(cls, order_id, role, order_action, item_action, item_id, **kwargs): if order_action: #if there is no order yet, and the action is from Buyer 'create order', then create the order if not order_id and role == 'B' and order_action == 'create order': #TODO: remove below? order_id = Order.create_order() order = get_object_or_404(Order, id=order_id) else: order = get_object_or_404(Order, id=order_id) order.goto_next(role, order_action) if item_action: #if item_action, this will only affect the item that is acted on order = get_object_or_404(Order, id=order_id) ocr = order.order_item_rel_set.get(item_id=item_id) ocr.goto_next(role, item_action) if not Refund_Sheet.objects.filter( item_id=ocr.id).exists(): #not ocr.refund_sheet: if ocr.state == 'WR': rs_type = '' if item_action == 'request refund': rs_type = 'RO' if item_action == 'request refund with return': rs_type = 'RR' rs = Refund_Sheet.create_refund_sheet(ocr.id, rs_type) rl = Refund_Log(refund_sheet_id=rs.id, refund_type=rs.refund_type, action=item_action, reason=kwargs.get('reason', ''), memo=kwargs.get('memo', ''), operator=kwargs.get('operator', ''), refund_fee=kwargs.get('refund_fee', None)) rl.save() else: rs = get_object_or_404(Refund_Sheet, item_id=ocr.id) next_state, post_action = rs.goto_next(role, item_action) #TODO:make below into post_action if item_action == "ship back": rs.express_company = kwargs.get("express_company", "") rs.express_tracking_no = kwargs.get( "express_tracking_no", "") rs.save() if item_action == "change refund request": rs_type = kwargs.get('refund_type', '') if rs_type: rs.refund_type = rs_type rs.save() if next_state: rl = Refund_Log(refund_sheet_id=rs.id, refund_type=kwargs.get('refund_type', ''), action=item_action, reason=kwargs.get('reason', ''), memo=kwargs.get('memo', ''), operator=kwargs.get('operator', ''), refund_fee=kwargs.get('refund_fee', None)) rl.save() return { 'order': order, 'admin_actions': admin_actions, 'input_actions': input_actions }