def bstrap_report(request, rpt_id): # need to go thru first stage of report building to set columns as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) company_ID = request.GET.get('company', utils.get_company(request)) qs = request.META[' _STRING'] cols, col_order = get_report_cols(rpt_id, company_ID, as_of=as_of, col_tag=col_tag) context = { 'cols': zip(['label'] + col_order, ['nameFormatter'] + ['valueFormatter'] * len(col_order)) } data_url = '/reporting/api/%s' % rpt_id if qs != '': data_url += '?%s' % qs context['data_url'] = data_url return render_to_response('bstrap_report.html', context, context_instance=RequestContext(request))
def report_prep(request, id): as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) format = request.GET.get('format', 'html') company_ID = request.GET.get('company', utils.get_company(request)) path = request.GET.get('path', None) report = get_report(id, company_ID) gl_strategy = request.GET.get('gl_strategy', None) if report is None: msg = "Report %s does not exist" % id return render_to_response('rpt_doesnt_exist.html', RequestContext( request, {'message': msg})), False, None if company_ID not in report.works_for: msg = "This ain't it. Report not available for %s" % report.company_name return render_to_response('rpt_doesnt_exist.html', RequestContext(request, {'message': msg})), False report.configure(as_of=as_of, col_tag=col_tag, path=path) report.set_gl_strategy(gl_strategy) return report, True, format
def download_ledger(request): from_date, to_date = utils.extractDateRange(request) company_ID = utils.get_company(request) accts = api_func('gl', 'accounts') response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="ledger.csv"' writer = csv.writer(response) header_row = [ 'id', 'date', 'comment', 'contra_accts', 'counterparty', 'amount', 'balance' ] for acct in accts: history = accountifie.reporting.api.history({ 'type': 'account', 'from_date': from_date, 'to_date': to_date, 'company_ID': company_ID, 'id': acct['id'] }) if len(history) > 0: writer.writerow([]) writer.writerow([acct['id'], acct['display_name'], acct['path']]) writer.writerow([]) writer.writerow(header_row) for idx in history.index: writer.writerow([history.loc[idx, col] for col in header_row]) return response
def balance_history(request, type, id): from_date, to_date = utils.extractDateRange(request) company_ID = utils.get_company(request) if type == 'account': cp = request.GET.get('cp',None) acct = api_func('gl', 'account', id) display_name = '%s: %s' %(acct['id'], acct['display_name']) history = accountifie.query.query_manager.QueryManager().pd_history(company_ID, 'account', acct['id'], from_date=from_date, to_date=to_date, cp=cp) if cp and not history.empty: history = history[history['counterparty']==cp] display_name += ' -- %s' % cp balance_history = history[['amount','date']].groupby('date').sum().cumsum().reset_index() column_titles = ['date', 'amount'] elif type == 'path': ref = id.replace('_','.') display_name = 'path: %s' % ref excl = request.GET['excl'].split(',') if request.GET.has_key('excl') else None incl = request.GET['incl'].split(',') if request.GET.has_key('incl') else None if excl: excl = [x.replace('_','.') for x in excl] display_name += ' -- excl %s' % ','.join(excl) if incl: incl = [x.replace('_','.') for x in incl] display_name += ' -- incl %s' % ','.join(incl) history = accountifie.query.query_manager.QueryManager().pd_history(company_ID, type, ref, from_date=from_date, to_date=to_date, excl_contra=excl, incl=incl) balance_history = history[['amount','date']].groupby('date').sum().cumsum().reset_index() column_titles = ['date', 'amount'] elif type == 'creditor': cp = request.GET.get('cp',None) cp_info = api_func('gl', 'counterparty', id) display_name = '%s: %s' %(cp_info['id'], cp_info['name']) history = accountifie.query.query_manager.QueryManager().pd_history(company_ID, 'account', '3000', from_date=from_date, to_date=to_date, cp=id) history = history[history['counterparty']==id] balance_history = history[['amount','date']].groupby('date').sum().cumsum().reset_index() column_titles = ['date', 'amount'] else: raise ValueError('This type of history is not supported') years = Year.objects.all() entries = [] if balance_history is not None: for i in balance_history.index: entries.append(create_row(balance_history.loc[i], column_titles)) context = {} context['display_name'] = display_name context['column_titles'] = column_titles context['history'] = entries context['years'] = years context['by_date_cleared'] = False context['from_date'] = from_date context['to_date'] = to_date return render_to_response('bal_history.html', RequestContext(request, context))
def download_tranlines(request): company_ID = utils.get_company(request) trans = QueryManager().tranlines(company_ID) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="tranlines.csv"' writer = csv.writer(response) header_row = ['TranLine ID', 'Transaction ID', 'Amount', 'Account Name', 'Counterparty Name', 'Counterparty ID'] writer.writerow(header_row) for ex in trans: writer.writerow(ex) return response
def report_prep(request, id): as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) format = request.GET.get('format', 'html') company_ID = request.GET.get('company', utils.get_company(request)) path = request.GET.get('path', None) report = get_report(id, company_ID, version='v1') gl_strategy = request.GET.get('gl_strategy', None) if company_ID not in report.works_for: msg = "This ain't it. Report not available for %s" % company_ID return msg, False, None report.configure(as_of=as_of, col_tag=col_tag, path=path) report.set_gl_strategy(gl_strategy) return report, True, format
def bstrap_report(request, rpt_id): # need to go thru first stage of report building to set columns as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) company_ID = request.GET.get('company', utils.get_company(request)) qs = request.META[' _STRING'] cols, col_order = get_report_cols(rpt_id, company_ID, as_of=as_of, col_tag=col_tag) context = {'cols': zip(['label'] + col_order, ['nameFormatter'] + ['valueFormatter'] * len(col_order))} data_url = '/reporting/api/%s' % rpt_id if qs != '': data_url += '?%s' % qs context['data_url'] = data_url return render(request, 'bstrap_report.html', context)
def report_prep(request, id, version=None, strategy=None): as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) format = request.GET.get('format', 'html') company_id = request.GET.get('company', utils.get_company(request)) path = request.GET.get('path', None) report = accountifie.reporting.rptutils.get_report(id, company_id, version=version) if (company_id not in report.works_for): msg = "This ain't it. Report not available for %s" % report.company_name return render(request, '404.html', {'message': msg}), False report.configure(as_of=as_of, col_tag=col_tag, path=path) report.set_gl_strategy(strategy) return report, True, format
def company_context(request): """Context processor referenced in settings. This puts the current company ID into any request context, thus allowing templates to refer to it This is not a view. """ company_id = utils.get_company(request) data = {"company_id": company_id, "logo": settings.LOGO, "site_title": settings.SITE_TITLE} data["admin_site_title"] = settings.SITE_TITLE data["DJANGO_18"] = settings.DJANGO_18 data["DJANGO_19"] = settings.DJANGO_19 data["company_color"] = api_func("gl", "company", company_id)["color_code"] data["menu_items"] = OrderedDict( [ ("Reports", "/reports/"), ("Daily", "/daily/"), ("Inventory", "/inventory"), ("Snapshots", "/snapshot/glsnapshots"), ] ) data["power_menu_items"] = OrderedDict( [ ("Admin", "/admin/"), ("Maintenance", "/maintenance/"), ("Dashboard", "/dashboard/"), ("Logs", "/dashboard/logs/"), ] ) data["company_list"] = [x["id"] for x in api_func("gl", "company")] if company_id: try: company = Company.objects.get(pk=company_id) data.update({"company": company}) except Company.DoesNotExist: pass return data
def download_transactions(request): company_ID = utils.get_company(request) snapshot_time = datetime.datetime.now() strategy = QueryManagerStrategyFactory().get('snapshot') strategy.set_cache(None) trans = strategy.get_all_transactions(company_ID) all_accts_list = api_func('gl', 'account') all_accts = dict((r['id'], r) for r in all_accts_list) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="transactions.csv"' writer = csv.writer(response) writer.writerow(['', '', '', '', '', '','debit', 'debit', 'debit', 'debit','credit', 'credit', 'credit', 'credit']) writer.writerow(['Id', 'dateEnd', 'date', 'type', 'comment', 'counterpartyId', 'amount', 'accountId', 'account name','counterpartyId', 'amount', 'accountId', 'account name']) for ex in trans: first_line = ex['lines'][0] acct_id = first_line['accountId'] acct = api_func('gl', 'account', acct_id) if (acct['role'] in ['asset', 'expense'] and float(first_line['amount']) >0) or \ (acct['role'] in ['liability', 'income', 'capital'] and float(first_line['amount']) < 0): debit = ex['lines'][0] credit = ex['lines'][1] else: debit = ex['lines'][1] credit = ex['lines'][0] row = [ex[k] for k in ['bmoId', 'dateEnd', 'date', 'type', 'comment']] row += [debit[k] for k in ['counterpartyId', 'amount', 'accountId']] row.append(all_accts[debit['accountId']]['display_name']) row += [credit[k] for k in ['counterpartyId', 'amount', 'accountId']] row.append(all_accts[credit['accountId']]['display_name']) writer.writerow(row) return response
def report_prep(request, id): as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) format = request.GET.get('format', 'html') company_ID = request.GET.get('company', utils.get_company(request)) path = request.GET.get('path', None) report = accountifie.reporting.rptutils.get_report(id, company_ID) gl_strategy = request.GET.get('gl_strategy', None) if report is None: msg = "Report %s does not exist" % id return render_to_response('rpt_doesnt_exist.html', RequestContext(request, {'message': msg})), False, None if company_ID not in report.works_for: msg = "This ain't it. Report not available for %s" % report.company_name return render_to_response('rpt_doesnt_exist.html', RequestContext(request, {'message': msg})), False report.configure(as_of=as_of, col_tag=col_tag, path=path) report.set_gl_strategy(gl_strategy) return report, True, format
def report_prep(request, id, version=None, strategy=None): as_of = request.GET.get('date', None) col_tag = request.GET.get('col_tag', None) format = request.GET.get('format', 'html') company_id = request.GET.get('company', utils.get_company(request)) path = request.GET.get('path', None) report = accountifie.reporting.rptutils.get_report(id, company_id, version=version) if (company_id not in report.works_for): msg = "This ain't it. Report not available for %s" % report.company_name return render_to_response('404.html', RequestContext(request, {'message': msg})), False report.configure(as_of=as_of, col_tag=col_tag, path=path) report.set_gl_strategy(strategy) return report, True, format
def download_ledger(request): from_date, to_date = utils.extractDateRange(request) company_ID = utils.get_company(request) accts = api_func('gl', 'accounts') response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="ledger.csv"' writer = csv.writer(response) header_row = ['id', 'date', 'comment', 'contra_accts', 'counterparty', 'amount', 'balance'] for acct in accts: history = accountifie.reporting.api.history({'type': 'account', 'from_date': from_date, 'to_date': to_date, 'company_ID': company_ID, 'id': acct['id']}) if len(history) > 0: writer.writerow([]) writer.writerow([acct['id'], acct['display_name'], acct['path']]) writer.writerow([]) writer.writerow(header_row) for idx in history.index: writer.writerow([history.loc[idx, col] for col in header_row]) return response
def balance_history(request, type, id): from_date, to_date = utils.extractDateRange(request) company_ID = utils.get_company(request) if type == "account": cp = request.GET.get("cp", None) acct = api_func("gl", "account", id) display_name = "%s: %s" % (acct["id"], acct["display_name"]) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, "account", acct["id"], from_date=from_date, to_date=to_date, cp=cp ) if cp and not history.empty: history = history[history["counterparty"] == cp] display_name += " -- %s" % cp balance_history = history[["amount", "date"]].groupby("date").sum().cumsum().reset_index() column_titles = ["date", "amount"] elif type == "path": ref = id.replace("_", ".") display_name = "path: %s" % ref excl = request.GET["excl"].split(",") if request.GET.has_key("excl") else None incl = request.GET["incl"].split(",") if request.GET.has_key("incl") else None if excl: excl = [x.replace("_", ".") for x in excl] display_name += " -- excl %s" % ",".join(excl) if incl: incl = [x.replace("_", ".") for x in incl] display_name += " -- incl %s" % ",".join(incl) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, type, ref, from_date=from_date, to_date=to_date, excl_contra=excl, incl=incl ) balance_history = history[["amount", "date"]].groupby("date").sum().cumsum().reset_index() column_titles = ["date", "amount"] elif type == "creditor": cp = request.GET.get("cp", None) cp_info = api_func("gl", "counterparty", id) display_name = "%s: %s" % (cp_info["id"], cp_info["name"]) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, "account", "3000", from_date=from_date, to_date=to_date, cp=id ) history = history[history["counterparty"] == id] balance_history = history[["amount", "date"]].groupby("date").sum().cumsum().reset_index() column_titles = ["date", "amount"] else: raise ValueError("This type of history is not supported") years = Year.objects.all() entries = [] if balance_history is not None: for i in balance_history.index: entries.append(create_row(balance_history.loc[i], column_titles)) context = {} context["display_name"] = display_name context["column_titles"] = column_titles context["history"] = entries context["years"] = years context["by_date_cleared"] = False context["from_date"] = from_date context["to_date"] = to_date return render(request, "bal_history.html", context)
def history(request, type, id): from_date, to_date = utils.extractDateRange(request) start_date = settings.DATE_EARLY end_date = to_date company_ID = utils.get_company(request) if type == "account": cp = request.GET.get("cp", None) acct = api_func("gl", "account", id) display_name = "%s: %s" % (acct["id"], acct["display_name"]) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, "account", acct["id"], from_date=start_date, to_date=end_date, cp=cp ) if cp and not history.empty: history = history[history["counterparty"] == cp] history["balance"] = history["amount"].cumsum() display_name += " -- %s" % cp column_titles = ["id", "date", "comment", "contra_accts", "counterparty", "amount", "balance"] elif type == "path": ref = id.replace("_", ".") display_name = "path: %s" % ref excl = request.GET["excl"].split(",") if request.GET.has_key("excl") else None incl = request.GET["incl"].split(",") if request.GET.has_key("incl") else None if excl: excl = [x.replace("_", ".") for x in excl] display_name += " -- excl %s" % ",".join(excl) if incl: incl = [x.replace("_", ".") for x in incl] display_name += " -- incl %s" % ",".join(incl) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, type, ref, from_date=start_date, to_date=end_date, excl_contra=excl, incl=incl ) column_titles = ["id", "date", "comment", "account_id", "contra_accts", "counterparty", "amount", "balance"] elif type == "creditor": cp = request.GET.get("cp", None) cp_info = api_func("gl", "counterparty", id) display_name = "%s: %s" % (cp_info["id"], cp_info["name"]) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, "account", "3000", from_date=start_date, to_date=end_date, cp=id ) history = history[history["counterparty"] == id] history["balance"] = history["amount"].cumsum() column_titles = ["id", "date", "comment", "contra_accts", "amount", "balance"] else: raise ValueError("This type of history is not supported") years = Year.objects.all() entries = [] if (history is not None) and (history.empty is False): unused_history = history[history["date"] < from_date] used_history = history[history["date"] >= from_date] if len(unused_history) > 0: start_row = unused_history.iloc[-1] start_row["id"] = "None" start_row["date"] = from_date start_row["comment"] = "Opening Balance" start_row["contra_accts"] = "None" start_row["counterparty"] = "None" start_row["amount"] = 0 entries.append(create_row(start_row, column_titles)) for i in used_history.index: entries.append(create_row(history.loc[i], column_titles)) context = {} context["display_name"] = display_name context["column_titles"] = column_titles context["history"] = entries context["years"] = years context["by_date_cleared"] = False context["from_date"] = from_date context["to_date"] = to_date return render(request, "history.html", context)
def history(request, type, id): from_date, to_date = utils.extractDateRange(request) start_date = settings.DATE_EARLY end_date = to_date company_ID = utils.get_company(request) if type == 'account': cp = request.GET.get('cp', None) acct = api_func('gl', 'account', id) display_name = '%s: %s' % (acct['id'], acct['display_name']) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, 'account', acct['id'], from_date=start_date, to_date=end_date, cp=cp) if cp and not history.empty: history = history[history['counterparty'] == cp] history['balance'] = history['amount'].cumsum() display_name += ' -- %s' % cp column_titles = [ 'id', 'date', 'comment', 'contra_accts', 'counterparty', 'amount', 'balance' ] elif type == 'path': ref = id.replace('_', '.') display_name = 'path: %s' % ref excl = request.GET['excl'].split(',') if request.GET.has_key( 'excl') else None incl = request.GET['incl'].split(',') if request.GET.has_key( 'incl') else None if excl: excl = [x.replace('_', '.') for x in excl] display_name += ' -- excl %s' % ','.join(excl) if incl: incl = [x.replace('_', '.') for x in incl] display_name += ' -- incl %s' % ','.join(incl) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, type, ref, from_date=start_date, to_date=end_date, excl_contra=excl, incl=incl) column_titles = [ 'id', 'date', 'comment', 'account_id', 'contra_accts', 'counterparty', 'amount', 'balance' ] elif type == 'creditor': cp = request.GET.get('cp', None) cp_info = api_func('gl', 'counterparty', id) display_name = '%s: %s' % (cp_info['id'], cp_info['name']) history = accountifie.query.query_manager.QueryManager().pd_history( company_ID, 'account', '3000', from_date=start_date, to_date=end_date, cp=id) history = history[history['counterparty'] == id] history['balance'] = history['amount'].cumsum() column_titles = [ 'id', 'date', 'comment', 'contra_accts', 'amount', 'balance' ] else: raise ValueError('This type of history is not supported') years = Year.objects.all() entries = [] if history is not None: unused_history = history[history['date'] < from_date] used_history = history[history['date'] >= from_date] if len(unused_history) > 0: start_row = unused_history.iloc[-1] start_row['id'] = 'None' start_row['date'] = from_date start_row['comment'] = 'Opening Balance' start_row['contra_accts'] = 'None' start_row['counterparty'] = 'None' start_row['amount'] = 0 entries.append(create_row(start_row, column_titles)) for i in used_history.index: entries.append(create_row(history.loc[i], column_titles)) context = {} context['display_name'] = display_name context['column_titles'] = column_titles context['history'] = entries context['years'] = years context['by_date_cleared'] = False context['from_date'] = from_date context['to_date'] = to_date return render_to_response('history.html', RequestContext(request, context))
def react_test(request): company_id = get_company(request) context = dict(company_id=company_id) return render(request, 'main_views/react_test.html', context)
def home(request): company_id = get_company(request) context = dict(company_id=company_id) return render(request, 'main_views/home.html', context)