コード例 #1
0
    def calcs(self):
        bals = self.query_manager.pd_acct_balances(self.company_id, {'balance': self.date})
        
        accts = api_func('gl', 'account')
        accts_map = dict((a['id'], a) for a in accts)

        # dataframe.apply won't work until v0.17 for lambda returning dict... so have to do in roundabout way till then
        debits_map = lambda x: x['balance'] if accts_map[x.name]['role'] in ['asset', 'expense'] else 0
        credits_map = lambda x: -x['balance'] if accts_map[x.name]['role'] in ['liability', 'income', 'capital'] else 0
        
        bals['Debits'] = bals.apply(debits_map, axis=1)
        bals['Credits'] = bals.apply(credits_map, axis=1)
        del bals['balance']

        bals['fmt_tag'] = 'item'
        label_map = lambda x: x + ': ' + accts_map[x]['display_name']
        bals['label'] = bals.index.map(label_map)
        
        totals = bals[self.column_order].sum(axis=0)
        totals['fmt_tag'] = 'major_total'
        totals['label'] = 'Totals'

        bals.loc['Total'] = totals

        bals['index'] = bals.index
        data = bals.to_dict(orient='records')

        credits_link_map = lambda x: utils.acct_history_link(x['index']) if x['index'] != 'Total' and x['Credits'] != '' else ''
        debits_link_map = lambda x: utils.acct_history_link(x['index']) if x['index'] != 'Total' and x['Debits'] != '' else ''
        
        for row in data:
            row['Credits'] = {'text': row['Credits'], 'link':credits_link_map(row)}
            row['Debits'] = {'text': row['Debits'], 'link': debits_link_map(row)}
        
        return data
コード例 #2
0
    def __init__(self, company_id, date=None):

        self.date = date
        self.description = 'Trial Balance'
        self.title = "Trial Balance"
        self.company_id = company_id
        self.columns = {'Debits':'Debits', 'Credits': 'Credits'}
        self.calc_type = 'as_of'
        self.set_company()
        self.works_for = [cmpny['id'] for cmpny in api_func('gl', 'company')]
        self.column_order = ['Debits', 'Credits']
        self.label_map = None
        self.link_map = lambda x: utils.acct_history_link(x.name)
コード例 #3
0
    def __init__(self, company_id, date=None):

        self.date = date
        self.description = 'Account Activity'
        self.title = None
        self.company_id = company_id
        self.columns = None
        self.column_order = None
        self.calc_type = 'as_of'
        self.set_company()
        self.label_map = None
        self.link_map = lambda x: utils.acct_history_link(x.name)
        self.equity_sign = False

        self.path = None
        self.acct_list = None
        self.works_for = [cmpny['id'] for cmpny in api_func('gl', 'company')]
コード例 #4
0
ファイル: activity.py プロジェクト: electronifie/accountifie
    def __init__(self, company_id, date=None):

        self.date = date
        self.description = 'Account Activity'
        self.title = None
        self.company_id = company_id
        self.columns = None
        self.column_order = None
        self.calc_type = 'as_of'
        self.set_company()
        self.label_map = None
        self.link_map = lambda x: utils.acct_history_link(x.name)
        self.equity_sign = False

        self.path = None
        self.acct_list = None
        self.works_for = [cmpny['id'] for cmpny in api_func('gl', 'company')]
コード例 #5
0
    def calcs(self):

        if self.path:
            bals = self.query_manager.pd_acct_balances(self.company_id,
                                                       self.columns,
                                                       paths=[self.path
                                                              ]).fillna(0.0)
        elif self.acct_list:
            bals = self.query_manager.pd_acct_balances(
                self.company_id,
                self.columns,
                acct_list=self.acct_list,
                excl_contra=['4150']).fillna(0.0)
        else:
            bals = self.query_manager.pd_acct_balances(
                self.company_id, self.columns).fillna(0.0)

        if self.equity_sign:
            bals = bals * (-1.0)

        bals.loc['Total'] = bals.apply(sum, axis=0)
        accts = gl.Account.objects.all()
        acct_map = dict((a.id, a.display_name) for a in accts)
        label_map = lambda x: x + ': ' + acct_map[x] if x in acct_map else x
        link_map = lambda x: utils.acct_history_link(x['index']) if x[
            'index'] != 'Total' else ''

        bals['fmt_tag'] = 'item'
        bals['label'] = bals.index.map(label_map)
        bals['index'] = bals.index

        if 'Change' in bals.columns:
            is_small = lambda row: (abs(row['Change']) < 0.5 and row['index']
                                    != 'Total')
            bals = bals[~bals.apply(is_small, axis=1)]

        bals.loc['Total', 'fmt_tag'] = 'major_total'

        data = bals.to_dict(orient='records')

        for row in data:
            for col in self.column_order:
                row[col] = {'text': row[col], 'link': link_map(row)}

        return data
コード例 #6
0
ファイル: activity.py プロジェクト: electronifie/accountifie
    def calcs(self):
        
        if self.path:
            bals = self.query_manager.pd_acct_balances(self.company_id,self.columns, paths=[self.path]).fillna(0.0)
        elif self.acct_list:
            bals = self.query_manager.pd_acct_balances(self.company_id,self.columns, acct_list=self.acct_list, excl_contra=['4150']).fillna(0.0)
        else:
            bals = self.query_manager.pd_acct_balances(self.company_id,self.columns).fillna(0.0)

        
        if self.equity_sign:
            bals = bals * (-1.0)

        bals.loc['Total'] = bals.apply(sum, axis=0)
        accts = gl.Account.objects.all()
        acct_map = dict((a.id, a.display_name) for a in accts)
        label_map = lambda x: x + ': ' + acct_map[x] if x in acct_map else x
        link_map = lambda x: utils.acct_history_link(x['index']) if x['index'] != 'Total' else ''        

        bals['fmt_tag'] = 'item'
        bals['label'] = bals.index.map(label_map)
        bals['index'] = bals.index

        if 'Change' in bals.columns:
            is_small = lambda row: (abs(row['Change']) < 0.5 and row['index'] != 'Total')
            bals = bals[~bals.apply(is_small, axis=1)]
        
        bals.loc['Total', 'fmt_tag'] = 'major_total'

        data = bals.to_dict(orient='records')

        for row in data:
            for col in self.column_order:
                row[col] = {'text': row[col], 'link': link_map(row)}
        
        return data