Esempio n. 1
0
 def monthly_chunk_periods(from_date, to_date):
     # dates should be from_date, to_date and the first and last days of every month included
     months = list(set(utils.monthrange(from_date, to_date)))
     dates = [(max(utils.start_of_month(x[1], x[0]),
                   from_date), min(utils.end_of_month(x[1], x[0]), to_date))
              for x in months]
     periods = [{'from': dt[0], 'to': dt[1]} for dt in dates]
     return periods
Esempio n. 2
0
    def trans_detail(self, trans_list, company_id=utils.get_default_company()):

        cache = glcache.get_cache(company_id)
        entries = cache.get_gl_entries_trans(trans_list)

        entries['date_end'] = entries.apply(
            lambda row: row['date_end']
            if row['date_end'] is not None else row['date'],
            axis=1)
        start_date = min(min(entries['date']), min(entries['date_end']))
        end_date = max(max(entries['date']), max(entries['date_end']))

        start_mth = start_date.month
        start_yr = start_date.year

        end_mth = end_date.month
        end_yr = end_date.year

        dt = utils.start_of_month(start_date.month, start_date.year)
        dates = {dt.isoformat(): dt}

        dt1 = start_date
        dt2 = end_date
        start_month = dt1.month
        end_months = (dt2.year - dt1.year) * 12 + dt2.month + 1
        date_list = [
            utils.end_of_month(mn, yr)
            for (yr, mn) in (((m - 1) / 12 + dt1.year, (m - 1) % 12 + 1)
                             for m in range(start_month, end_months))
        ]

        date_list = list(set([start_date, end_date] + date_list))
        dates = dict((d.isoformat(), d) for d in date_list)

        dates[datetime.date(start_yr, start_month,
                            1).isoformat()] = datetime.date(
                                start_yr, start_month, 1)

        data = {}
        for dt in dates:
            start, end = utils.get_dates(dates[dt])
            sub_entries = self.deprec_calcs(start, end, entries)
            col = sub_entries[['account_id',
                               'amount']].groupby('account_id').sum()['amount']
            data[dt] = col[col != 0.0]
        return pd.DataFrame(data).fillna(0.0).T
Esempio n. 3
0
 def trans_detail(self, trans_list, company_id=utils.get_default_company()):
     
     cache = glcache.get_cache(company_id)
     entries = cache.get_gl_entries_trans(trans_list)
 
     entries['date_end'] = entries.apply(lambda row: row['date_end'] if row['date_end'] is not None else row['date'],axis=1)
     start_date = min(min(entries['date']), min(entries['date_end']))
     end_date = max(max(entries['date']), max(entries['date_end']))
 
     start_mth = start_date.month
     start_yr = start_date.year
 
     end_mth = end_date.month
     end_yr = end_date.year
 
     dt = utils.start_of_month(start_date.month, start_date.year)
     dates = {dt.isoformat(): dt}
 
     dt1 = start_date
     dt2 = end_date
     start_month=dt1.month
     end_months=(dt2.year-dt1.year)*12 + dt2.month+1
     date_list = [utils.end_of_month(mn,yr) for (yr, mn) in (
               ((m - 1) / 12 + dt1.year, (m - 1) % 12 + 1) for m in range(start_month, end_months)
           )]
 
     date_list = list(set([start_date,end_date] + date_list))
     dates = dict((d.isoformat(), d) for d in date_list)
 
     dates[datetime.date(start_yr,start_month,1).isoformat()] = datetime.date(start_yr,start_month,1)
 
     data = {}
     for dt in dates:
         start, end = utils.get_dates(dates[dt])
         sub_entries = self.deprec_calcs(start, end, entries)
         col = sub_entries[['account_id','amount']].groupby('account_id').sum()['amount']
         data[dt] = col[col!=0.0]
     return pd.DataFrame(data).fillna(0.0).T
 def monthly_chunk_periods(from_date, to_date):
     # dates should be from_date, to_date and the first and last days of every month included
     months = list(set(utils.monthrange(from_date, to_date)))
     dates = [(max(utils.start_of_month(x[1], x[0]), from_date), min(utils.end_of_month(x[1], x[0]), to_date)) for x in months]
     periods = [{'from': dt[0], 'to': dt[1]} for dt in dates]
     return periods