示例#1
0
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))
示例#2
0
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
示例#3
0
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
示例#4
0
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))
示例#5
0
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
示例#6
0
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
示例#7
0
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)
示例#8
0
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
示例#9
0
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
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
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
示例#14
0
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)
示例#17
0
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))
示例#18
0
def react_test(request):
    company_id = get_company(request)
    context = dict(company_id=company_id)
    return render(request, 'main_views/react_test.html', context)
示例#19
0
def home(request):
    company_id = get_company(request)
    context = dict(company_id=company_id)
    return render(request, 'main_views/home.html', context)