add format input invoce string

feature/docker
Dmitriy Shesterkin 9 years ago
parent 64c5809f65
commit 415435b17d
  1. 2
      src/docs/forms/aktrabot.py
  2. 3
      src/docs/forms/invoice.py
  3. 19
      src/docs/models/invoice.py
  4. 7
      src/docs/views/ajax.py
  5. 2
      src/docs/views/base_views.py

@ -46,7 +46,7 @@ class AktRabotItemForm(MyBaseModelForm):
class Meta:
model = AktRabotItem
exclude = ['parent']
fields ='__all__'
fields = '__all__'
class AktRabotItemAdminForm(AktRabotItemForm):

@ -45,7 +45,8 @@ class InvoiceAdminForm(InvoiceForm):
class InvoicesListForm(forms.Form):
"""Форма со списком всех счетов пользователя."""
invoice = forms.ModelChoiceField(queryset=Invoice.objects.get_all(None), empty_label=u'все счета', required=False)
invoice = forms.ModelChoiceField(queryset=Invoice.objects.get_all(None),
empty_label=u'все счета', required=False)
def __init__(self, user, *args, **kwargs):
super(InvoicesListForm, self).__init__(*args, **kwargs)

@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
from django.db import models
from django.db.models import Sum
from django.conf import settings
from pytils.numeral import choose_plural
from docs.models.base_models import BaseInvoiceModel, BaseItemInvoiceModel
from docs.models.linked_docs_mixin import LinkedDocsMixin
from docs import consts
@ -25,6 +28,22 @@ class Invoice(BaseInvoiceModel, LinkedDocsMixin):
verbose_name = u'Счёт'
verbose_name_plural = u'Счета'
def to_string_for_json(self):
# Счёт №Х от ХХ.ХХ.ХХ, Х позиций, на сумму ХХ.
# import ipdb;ipdb.set_trace()
date_format = settings.DATE_INPUT_FORMATS[0]
count = self.invoice_items.count()
str_date = self.doc_date.strftime(format=date_format)
return '{name}{number} от {date}, {count} {count_name}, на сумму {sum}'.format(
name=self._meta.verbose_name or '',
number=self.doc_num,
date=str_date,
count=count or '',
count_name=choose_plural(count, (u"позиция", u"позиции", u"позиций")),
sum=self.invoice_items.aggregate(Sum('total_price'))['total_price__sum']
)
class InvoiceItem(BaseItemInvoiceModel):
"""Табличная часть счета."""

@ -1,13 +1,11 @@
# -*- coding: utf-8 -*-
import simplejson as json
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponseBadRequest, HttpResponse
from django.core import serializers
# use django.apps.apps.get_model since Django 1.9
from django.db.models.loading import get_model
from django.views.decorators.csrf import csrf_protect
from docs.models import Invoice
from customer.utils import raise_if_no_profile
@ -24,7 +22,7 @@ def get_invoices(request, client_id=None):
if client_id:
invoices = invoices.filter(client_id=client_id)
invoices = {invoice.id: '%s от %s' % (invoice.doc_num, invoice.doc_date) for invoice in invoices}
invoices = {invoice.id: invoice.to_string_for_json() for invoice in invoices}
return HttpResponse(json.dumps(invoices), content_type='application/json')
@ -49,7 +47,8 @@ def get_client_by_invoice(request, invoice_id):
invoice = Invoice.objects.get(company=request.user.profile, pk=invoice_id)
return HttpResponse(json.dumps([invoice.client.id, invoice.client.name]), content_type='application/json')
return HttpResponse(json.dumps([invoice.client.id, invoice.client.name]),
content_type='application/json')
def toggle_doc_status(request, doc_type, doc_id, doc_attr):

@ -624,7 +624,7 @@ class BaseItemsViews(BaseViews):
"""
queryset = super(BaseItemsViews, self).get_list_qs()
if self.LIST_SUM_FIELD:
queryset = queryset.annotate(doc_sum = Sum(self.LIST_SUM_FIELD))
queryset = queryset.annotate(doc_sum=Sum(self.LIST_SUM_FIELD))
return queryset
def get_obj_items_qs(self, obj):

Loading…
Cancel
Save