コード例 #1
0
    def get(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            entity = EntityModel.objects.for_user(
                user_model=self.request.user).get(
                    slug__exact=self.kwargs['entity_slug'])

            entity_digest = entity.digest(user_model=self.request.user,
                                          equity_only=True,
                                          signs=False,
                                          by_period=True,
                                          process_groups=True,
                                          to_date=get_end_date_from_session(
                                              self.kwargs['entity_slug'],
                                              request))

            group_balance_by_period = entity_digest['tx_digest'][
                'group_balance_by_period']
            group_balance_by_period = dict(
                sorted((k, v) for k, v in group_balance_by_period.items()))
            entity_data = {
                f'{month_name[k[1]]} {k[0]}':
                {d: float(f)
                 for d, f in v.items()}
                for k, v in group_balance_by_period.items()
            }
            return JsonResponse({
                'results': {
                    'entity_slug': entity.slug,
                    'entity_name': entity.name,
                    'pnl_data': entity_data
                }
            })

        return JsonResponse({'message': 'Unauthorized'}, status=401)
コード例 #2
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        entity_model = self.object
        context['page_title'] = entity_model.name
        context['header_title'] = entity_model.name
        context['header_subtitle'] = _('Dashboard')
        context['header_subtitle_icon'] = 'mdi:monitor-dashboard'

        end_date = get_end_date_from_session(entity_slug=entity_model.slug,
                                             request=self.request)
        context['date_filter'] = end_date

        set_default_entity(self.request, entity_model)

        context[
            'pnl_chart_id'] = f'djl-entity-pnl-chart-{randint(10000, 99999)}'
        context['pnl_chart_endpoint'] = reverse(
            'django_ledger:entity-json-pnl',
            kwargs={'entity_slug': self.kwargs['entity_slug']})

        context[
            'payables_chart_id'] = f'djl-entity-payables-chart-{randint(10000, 99999)}'
        context['payables_chart_endpoint'] = reverse(
            'django_ledger:entity-json-net-payables',
            kwargs={'entity_slug': self.kwargs['entity_slug']})

        context[
            'receivables_chart_id'] = f'djl-entity-receivables-chart-{randint(10000, 99999)}'
        context['receivables_chart_endpoint'] = reverse(
            'django_ledger:entity-json-net-receivables',
            kwargs={'entity_slug': self.kwargs['entity_slug']})

        # DIGEST PHASE ---
        by_period = self.request.GET.get('by_period')
        digest = entity_model.digest(user_model=self.request.user,
                                     to_date=end_date,
                                     by_period=True if by_period else False,
                                     process_ratios=True,
                                     process_roles=True,
                                     process_groups=True)
        context.update(digest)

        # Unpaid Bills for Dashboard
        context['bills'] = BillModel.objects.for_entity_unpaid(
            user_model=self.request.user,
            entity_slug=self.kwargs['entity_slug']).select_related(
                'vendor').order_by('due_date')

        # Unpaid Invoices for Dashboard
        context['invoices'] = InvoiceModel.objects.for_entity_unpaid(
            user_model=self.request.user,
            entity_slug=self.kwargs['entity_slug']).select_related(
                'customer').order_by('due_date')
        return context
コード例 #3
0
def date_filter_form(context, inline=False):
    entity_slug = context['view'].kwargs.get('entity_slug')
    end_date = get_end_date_from_session(entity_slug, context['request'])
    identity = randint(0, 1000000)
    if entity_slug:
        form = AsOfDateFilterForm(form_id=identity, initial={
            'entity_slug': context['view'].kwargs['entity_slug'],
            'date': end_date
        })
        next_url = context['request'].path
        return {
            'date_form': form,
            'form_id': identity,
            'entity_slug': entity_slug,
            'date_filter': end_date,
            'next': next_url,
            'inline': inline
        }
コード例 #4
0
ファイル: account.py プロジェクト: fesp21/django-ledger
 def get_context_data(self, **kwargs):
     account = self.object
     context = super().get_context_data(**kwargs)
     context['header_title'] = f'Account {account.code} - {account.name}'
     context['page_title'] = f'Account {account.code} - {account.name}'
     to_date = get_end_date_from_session(
         entity_slug=self.kwargs['entity_slug'],
         request=self.request,
     )
     txs_qs = self.object.txs.order_by('-journal_entry__date').to_date(
         to_date)
     txs_days = self.request.GET.get('txs_days')
     if txs_days:
         from_date = to_date - timedelta(days=int(txs_days))
     else:
         from_date = to_date - timedelta(days=self.DEFAULT_TXS_DAYS)
     txs_qs = txs_qs.from_date(from_date)
     context['transactions'] = txs_qs
     return context
コード例 #5
0
def get_current_end_date_filter(context):
    entity_slug = context['view'].kwargs.get('entity_slug')
    return get_end_date_from_session(entity_slug, context['request'])