def fees_by_events_view(self): from_date = request.args.get('from_date') to_date = request.args.get('to_date') if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \ ('from_date' in request.args and 'to_date' not in request.args) or \ ('to_date' in request.args and 'from_date' not in request.args): return redirect(url_for('.fees_by_events_view')) marketer_role = CustomSysRole.query.filter_by(name='Marketer').first() marketer_id = login.current_user.id if login.current_user.is_sys_role( marketer_role.id) else None if from_date and to_date: orders = TicketingManager.get_orders( from_date=datetime.strptime(from_date, '%d/%m/%Y'), to_date=datetime.strptime(to_date, '%d/%m/%Y'), status='completed', marketer_id=marketer_id) else: orders = TicketingManager.get_orders(status='completed', marketer_id=marketer_id) events = DataGetter.get_all_events() fee_summary = {} for event in events: fee_summary[str(event.id)] = { 'name': event.name, 'payment_currency': event.payment_currency, 'fee_rate': get_fee(event.payment_currency), 'fee_amount': 0, 'tickets_count': 0 } fee_total = 0 tickets_total = 0 for order in orders: for order_ticket in order.tickets: fee_summary[str( order.event.id)]['tickets_count'] += order_ticket.quantity tickets_total += order_ticket.quantity ticket = CachedGetter.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * ( get_fee(order.event.payment_currency) / 100) fee = forex(order.event.payment_currency, self.display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return self.render('/gentelella/admin/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=self.display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total)
def fees_by_events_view(): from_date = request.args.get('from_date') to_date = request.args.get('to_date') if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \ ('from_date' in request.args and 'to_date' not in request.args) or \ ('to_date' in request.args and 'from_date' not in request.args): return redirect(url_for('.fees_by_events_view')) marketer_role = CustomSysRole.query.filter_by(name='Marketer').first() marketer_id = login.current_user.id if login.current_user.is_sys_role(marketer_role.id) else None if from_date and to_date: orders = TicketingManager.get_orders( from_date=datetime.strptime(from_date, '%d/%m/%Y'), to_date=datetime.strptime(to_date, '%d/%m/%Y'), status='completed', marketer_id=marketer_id ) else: orders = TicketingManager.get_orders(status='completed', marketer_id=marketer_id) events = DataGetter.get_all_events() fee_summary = {} for event in events: fee_summary[str(event.id)] = { 'name': event.name, 'payment_currency': event.payment_currency, 'fee_rate': get_fee(event.payment_currency), 'fee_amount': 0, 'tickets_count': 0 } fee_total = 0 tickets_total = 0 for order in orders: if order.event: for order_ticket in order.tickets: fee_summary[str(order.event.id)]['tickets_count'] += order_ticket.quantity tickets_total += order_ticket.quantity ticket = CachedGetter.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * (get_fee(order.event.payment_currency) / 100) fee = forex(order.event.payment_currency, display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return render_template('gentelella/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total, navigation_bar=list_navbar())
def fees_by_events_view(self): from_date = request.args.get('from_date') to_date = request.args.get('to_date') if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \ ('from_date' in request.args and 'to_date' not in request.args) or \ ('to_date' in request.args and 'from_date' not in request.args): return redirect(url_for('.fees_by_events_view')) if from_date and to_date: orders = TicketingManager.get_orders( from_date=datetime.strptime(from_date, '%d/%m/%Y'), to_date=datetime.strptime(to_date, '%d/%m/%Y'), status='completed' ) else: orders = TicketingManager.get_orders(status='completed') events = DataGetter.get_all_events() fee_summary = {} for event in events: fee_summary[str(event.id)] = { 'name': event.name, 'payment_currency': event.payment_currency, 'fee_rate': get_fee(event.payment_currency), 'fee_amount': 0, 'tickets_count': 0 } fee_total = 0 tickets_total = 0 for order in orders: for order_ticket in order.tickets: fee_summary[str(order.event.id)]['tickets_count'] += order_ticket.quantity tickets_total += order_ticket.quantity ticket = TicketingManager.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * (get_fee(order.event.payment_currency)/100) fee = forex(order.event.payment_currency, self.display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return self.render('/gentelella/admin/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=self.display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total)
def send_event_fee_notification(): with app.app_context(): events = Event.query.all() for event in events: latest_invoice = EventInvoice.filter_by(event_id=event.id).order_by(EventInvoice.created_at.desc()).first() if latest_invoice: orders = Order.query\ .filter_by(event_id=event.id)\ .filter_by(status='completed')\ .filter(Order.completed_at > latest_invoice.created_at).all() else: orders = Order.query.filter_by(event_id=event.id).filter_by(status='completed').all() fee_total = 0 for order in orders: for order_ticket in order.tickets: ticket = TicketingManager.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * (get_fee(order.event.payment_currency) / 100) fee_total += fee if fee_total > 0: new_invoice = EventInvoice(amount=fee_total, event_id=event.id, user_id=event.creator_id) save_to_db(new_invoice) prev_month = monthdelta(new_invoice.created_at, 1).strftime("%b %Y") # Displayed as Aug 2016 send_email_for_monthly_fee_payment(new_invoice.user.email, event.name, prev_month, new_invoice.amount, url_for('event_invoicing.view_invoice', invoice_identifier=new_invoice.identifier, _external=True))
def send_event_fee_notification(): from app import current_app as app with app.app_context(): events = Event.query.all() for event in events: latest_invoice = EventInvoice.filter_by( event_id=event.id).order_by( EventInvoice.created_at.desc()).first() if latest_invoice: orders = Order.query \ .filter_by(event_id=event.id) \ .filter_by(status='completed') \ .filter(Order.completed_at > latest_invoice.created_at).all() else: orders = Order.query.filter_by(event_id=event.id).filter_by( status='completed').all() fee_total = 0 for order in orders: for order_ticket in order.tickets: ticket = TicketingManager.get_ticket( order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * ( get_fee(order.event.payment_currency) / 100.0) fee_total += fee if fee_total > 0: organizer = DataGetter.get_user_event_roles_by_role_name( event.id, 'organizer').first() new_invoice = EventInvoice(amount=fee_total, event_id=event.id, user_id=organizer.user.id) if event.discount_code_id and event.discount_code: r = relativedelta(datetime.utcnow(), event.created_at) if r <= event.discount_code.max_quantity: new_invoice.amount = fee_total - \ (fee_total * (event.discount_code.value / 100.0)) new_invoice.discount_code_id = event.discount_code_id save_to_db(new_invoice) prev_month = monthdelta(new_invoice.created_at, 1).strftime( "%b %Y") # Displayed as Aug 2016 send_email_for_monthly_fee_payment( new_invoice.user.email, event.name, prev_month, new_invoice.amount, url_for('event_invoicing.view_invoice', invoice_identifier=new_invoice.identifier, _external=True))
def send_event_fee_notification(): from app import current_app as app with app.app_context(): events = Event.query.all() for event in events: latest_invoice = EventInvoice.filter_by(event_id=event.id).order_by( EventInvoice.created_at.desc()).first() if latest_invoice: orders = Order.query \ .filter_by(event_id=event.id) \ .filter_by(status='completed') \ .filter(Order.completed_at > latest_invoice.created_at).all() else: orders = Order.query.filter_by( event_id=event.id).filter_by(status='completed').all() fee_total = 0 for order in orders: for order_ticket in order.tickets: ticket = TicketingManager.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * (get_fee(order.event.payment_currency) / 100.0) fee_total += fee if fee_total > 0: organizer = DataGetter.get_user_event_roles_by_role_name( event.id, 'organizer').first() new_invoice = EventInvoice( amount=fee_total, event_id=event.id, user_id=organizer.user.id) if event.discount_code_id and event.discount_code: r = relativedelta(datetime.utcnow(), event.created_at) if r <= event.discount_code.max_quantity: new_invoice.amount = fee_total - \ (fee_total * (event.discount_code.value / 100.0)) new_invoice.discount_code_id = event.discount_code_id save_to_db(new_invoice) prev_month = monthdelta(new_invoice.created_at, 1).strftime( "%b %Y") # Displayed as Aug 2016 send_email_for_monthly_fee_payment(new_invoice.user.email, event.name, prev_month, new_invoice.amount, url_for('event_invoicing.view_invoice', invoice_identifier=new_invoice.identifier, _external=True))
def get_fee(currency): from app.helpers.payment import get_fee return get_fee(currency)