def status_dialog(self): customer_id = self.request.matchdict.get('customer_id') customer = Customer.load(customer_id) self.forbid_if(not customer or customer.campaign.company.enterprise_id != self.enterprise_id) order = order_item = events = redir = None if self.request.GET.get('order_id'): order = CustomerOrder.load(self.request.GET.get('order_id')) self.forbid_if(not order or order.campaign.company.enterprise_id != self.enterprise_id) events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, order), 'event_id', 'display_name', True) redir = '/crm/customer/show_orders/%s' % customer_id elif self.request.GET.get('order_item_id'): order_item = OrderItem.load(self.request.GET.get('order_item_id')) self.forbid_if(not order_item or order_item.order.campaign.company.enterprise_id != self.enterprise_id) events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, order_item), 'event_id', 'display_name', True) redir = '/crm/customer/edit_order_dialog/%s/%s' % (customer_id, order_item.order_id) else: events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, customer), 'event_id', 'display_name', True) redir = '/crm/customer/edit/%s' % customer_id return { 'customer' : customer, 'order' : order, 'order_item' : order_item, 'events' : events, 'redir' : redir }
def _cancel_order_impl(self, order_id, reason, by_customer=False): codr = CustomerOrder.load(order_id) self.forbid_if(not codr) cust = codr.customer api = BaseBillingApi.create_api(cust.campaign.company.enterprise) if api.cancel_order(codr, cust.billing): Status.add(cust, cust, Status.find_event(self.enterprise_id, cust, 'NOTE'), 'Billing Cancelled at gateway') codr.cancel(reason, by_customer) cust.invalidate_caches()
def apply_payment(self): customer_id = self.request.matchdict.get('customer_id') order_id = self.request.matchdict.get('order_id') if 'bill_cc_token' in self.request.POST and self.request.POST['bill_cc_token']: cust = Customer.load(customer_id) order = CustomerOrder.load(order_id) bill = self._create_billing(cust) self._bill_credit_card(cust, order, bill) else: self._apply_payment(customer_id, order_id) return HTTPFound('/crm/customer/edit_order_dialog/%s/%s' % (customer_id, order_id))
def cancel_order_dialog(self): customer_id = self.request.matchdict.get('customer_id') order_id = self.request.matchdict.get('order_id') customer = Customer.load(customer_id) self.forbid_if(not customer or customer.campaign.company.enterprise_id != self.enterprise_id) order = CustomerOrder.load(order_id) self.forbid_if(not order or order.customer_id != customer.customer_id) return { 'customer' : customer, 'order' : order }
def save_status(self): customer_id = self.request.matchdict.get('customer_id') customer = Customer.load(customer_id) self.forbid_if(not customer or customer.campaign.company.enterprise_id != self.enterprise_id) event = StatusEvent.load(self.request.POST.get('event_id')) self.forbid_if(not event or not self.request.POST.get('event_id') or (not event.is_system and event.enterprise_id is not None and event.enterprise_id != self.enterprise_id)) order = None note = self.request.POST.get('note') if self.request.POST.get('order_id'): order = CustomerOrder.load(self.request.POST.get('order_id')) self.forbid_if(not order or order.campaign.company.enterprise_id != self.enterprise_id) Status.add(customer, order, event, note, self.request.ctx.user) self.flash('Statused Order to %s' % event.display_name) elif self.request.POST.get('order_item_id'): order_item = OrderItem.load(self.request.POST.get('order_item_id')) self.forbid_if(not order_item or order_item.order.campaign.company.enterprise_id != self.enterprise_id) Status.add(customer, order_item, event, note, self.request.ctx.user) self.flash('Statused Item to %s' % event.display_name) else: Status.add(customer, customer, event, note, self.request.ctx.user) self.flash('Statused Customer to %s' % event.display_name) customer.invalidate_caches() return self.find_redirect()
def get_order(self, order_id): return CustomerOrder.find_by_customer(self, order_id)
def add_order(self, cart, user_created, enterprise_id, campaign, order_note=None, incl_tax=True): #pylint: disable-msg=R0913 return CustomerOrder.create_new(cart, self, enterprise_id, campaign, user_created, order_note=order_note, incl_tax=incl_tax)