def morning_call(): current_user = g.user store_id = get_or_set_store_id() today = datetime.date.today() yesterday = today - datetime.timedelta(days=1) orders_stats = dict() orders_stats['yesterday_orders_count'] = Order.count_orders_by_date_and_store(yesterday, store_id) orders_stats['current_month_orders_count'] = Order.count_orders_from_date_and_store( datetime.date.today().replace(day=1), store_id) current_month_ta = TaSetting.find_active_monthly_ta(today.year, today.month, store_id) orders_stats['current_month_target'] = current_month_ta.value if current_month_ta else 'N/A' sales_stats = User.get_all_sales_by_store_from_cache(long(store_id)) yesterday_receptions = Reception.find_all_by_date_in_store(yesterday, store_id) today_appointments = Appointment.find_all_by_date_in_store(datetime.date.today(), store_id) rx_stats = dict() rx_stats['yesterday_incomplete_count'] = len( [x for x in yesterday_receptions if x._last_status_changer == 'system']) total_counts, sales_counts = calc_reception_counts(yesterday_receptions, sales_stats) for sale in sales_stats: sale.rx_count = sales_counts.get(sale.id, {'total': 0, 'new': 0, 'appt_new': 0, 'appt': 0, 'other': 0}) populate_appt_count_agg_by_sale_and_type(today_appointments, sale) sales_stats.sort(key=lambda sale: sale.rx_count, reverse=True) appts_count = generate_appt_count_agg_by_type(today_appointments) recent_campaigns = Campaign.find_all_by_store_in_recent_days(store_id, 15) current_endpoint = 'user.morning_call' now = datetime.datetime.now() yesterday_datetime = now - datetime.timedelta(days=1) rx_base_url, rx_url_params = get_filter_link('receptions.receptions', yesterday_datetime, yesterday_datetime, current_endpoint) rx_incomplete_params = rx_url_params.copy() rx_incomplete_params['incomplete'] = 'y' appt_base_url, appt_url_params = get_filter_link('appointments.appts', now, now, current_endpoint) order_base_url, order_url_params = get_filter_link('orders.orders', yesterday_datetime, yesterday_datetime, current_endpoint) monthly_order_url_params = order_url_params.copy() monthly_order_url_params['start_date'] = datetime.date.today().replace(day=1).strftime(DATE_FORMAT) monthly_order_url_params['end_date'] = now.strftime(DATE_FORMAT) return render_template('user/salesmanager/morningcall.html', selected_menu=USER_MORNING_CALL, orders_stats=orders_stats, sales_stats=sales_stats, appts_count=appts_count, total_rx_count=total_counts, recent_campaigns=recent_campaigns, recent_campaigns_count=len(recent_campaigns), current_month_ta=current_month_ta, rx_base_url=rx_base_url, rx_url_params=rx_url_params, appt_base_url=appt_base_url, appt_url_params=appt_url_params, rx_incomplete_params=rx_incomplete_params, order_base_url=order_base_url, order_url_params=order_url_params, monthly_order_url_params=monthly_order_url_params, rx_stats=rx_stats, back_endpoint=request.args.get('back_endpoint', None))
def evening_call(): current_user = g.user store_id = get_or_set_store_id() today = datetime.date.today() orders_stats = dict() orders_stats['today_orders_count'] = Order.count_orders_by_date_and_store(datetime.date.today(), store_id) orders_stats['current_month_orders_count'] = Order.count_orders_from_date_and_store( datetime.date.today().replace(day=1), store_id) current_month_ta = TaSetting.find_active_monthly_ta(today.year, today.month, store_id) orders_stats['current_month_target'] = current_month_ta.value if current_month_ta else 'N/A' sales_stats = User.get_all_sales_by_store_from_cache(long(store_id)) today_receptions = Reception.find_all_of_today_in_store(store_id) today_appointments = Appointment.find_all_by_date_in_store(datetime.date.today(), store_id) tomorrow_appointments = Appointment.find_all_by_date_in_store(datetime.date.today() + datetime.timedelta(days=1), store_id) total_counts, sales_counts = calc_reception_counts(today_receptions, sales_stats) for sale in sales_stats: populate_appt_count_agg_by_sale_and_type(today_appointments, sale, include_closed=True) populate_appt_count_agg_by_sale_and_type(tomorrow_appointments, sale, attr_prefix='tomorrow_') sale.rx_count = sales_counts.get(sale.id, {'total': 0, 'new': 0, 'appt_new': 0, 'appt': 0, 'other': 0}) appts_count = generate_appt_count_agg_by_type(today_appointments, include_closed=True) tomorrow_appts_count = generate_appt_count_agg_by_type(tomorrow_appointments) sales_stats.sort(key=lambda sale: sale.rx_count, reverse=True) rx_stats = {'today_incomplete_count': len([x for x in today_receptions if x.status != 'completed'])} appt_stats = dict() appt_stats['instore'] = len([x for x in today_appointments if x.status != 'cancelled' and x.type == 'instore']) appt_stats['open_instore'] = len([x for x in today_appointments if x.status == 'opened' and x.type == 'instore']) appt_stats['followup'] = len([x for x in today_appointments if x.type == 'followup']) appt_stats['open_followup'] = len([x for x in today_appointments if x.status == 'opened' and x.type == 'followup']) now = datetime.datetime.now() tomorrow_datetime = now + datetime.timedelta(days=1) current_endpoint = 'user.evening_call' rx_base_url, rx_url_params = get_filter_link('receptions.receptions', now, now, current_endpoint) rx_incomplete_params = rx_url_params.copy() rx_incomplete_params['status_filter'] = 'in-store' appt_base_url, appt_url_params = get_filter_link('appointments.appts', now, now, current_endpoint) tomorrow_appt_base_url, tomorrow_appt_url_params = get_filter_link('appointments.appts', tomorrow_datetime, tomorrow_datetime, current_endpoint) recent_campaigns = Campaign.find_all_by_store_in_recent_days(store_id, 15) order_base_url, order_url_params = get_filter_link('orders.orders', now, now, current_endpoint) monthly_order_url_params = order_url_params.copy() monthly_order_url_params['start_date'] = datetime.date.today().replace(day=1).strftime(DATE_FORMAT) monthly_order_url_params['end_date'] = now.strftime(DATE_FORMAT) return render_template('user/salesmanager/eveningcall.html', selected_menu=USER_EVENING_CALL, rx_stats=rx_stats, orders_stats=orders_stats, today_receptions_count=len(today_receptions), rx_incomplete_params=rx_incomplete_params, sales_stats=sales_stats, appts_count=appts_count, total_rx_count=total_counts, tomorrow_appts_count=tomorrow_appts_count, recent_campaigns=recent_campaigns, recent_campaigns_count=len(recent_campaigns), rx_base_url=rx_base_url, rx_url_params=rx_url_params, order_base_url=order_base_url, tomorrow_appt_base_url=tomorrow_appt_base_url, tomorrow_appt_url_params=tomorrow_appt_url_params, order_url_params=order_url_params, appt_stats=appt_stats, appt_base_url=appt_base_url, appt_url_params=appt_url_params, monthly_order_url_params=monthly_order_url_params, back_endpoint=request.args.get('back_endpoint', None))