diff --git a/project/commons/forms.py b/project/commons/forms.py index de8de01..0c07ca0 100644 --- a/project/commons/forms.py +++ b/project/commons/forms.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from django import forms - +import autocomplete_light def set_field_error(form, field, msg=u'Обязательное поле.'): """Добавить сообщение об ошибке поля и убрать это поле из списка успешно прошедших валидацию. @@ -62,3 +62,6 @@ class MyBaseModelForm(forms.ModelForm, _MySuperForm): def __init__(self, *args, **kwargs): forms.ModelForm.__init__(self, *args, **kwargs) _MySuperForm.__init__(self, *args, **kwargs) + f = self.fields + if 'units' in f: + f['units'].widget = autocomplete_light.TextWidget('ACMeasure') diff --git a/project/docs/forms/faktura.py b/project/docs/forms/faktura.py index d35a997..6120b6b 100644 --- a/project/docs/forms/faktura.py +++ b/project/docs/forms/faktura.py @@ -11,9 +11,9 @@ from project.customer.models import Client class FakturaForm(BaseModelForm): """Форма редактирования фактуры.""" - sender = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=True, + sender = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=False, widget=autocomplete_light.ChoiceWidget('ACClient')) - receiver = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=True, + receiver = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=False, widget=autocomplete_light.ChoiceWidget('ACClient')) adjust_client_fields = [] @@ -48,7 +48,6 @@ class FakturaAdminForm(FakturaForm): class FakturaItemForm(MyBaseModelForm): """Форма редактирования табличной части фактуры.""" - units = forms.CharField(widget=autocomplete_light.TextWidget('ACMeasure'),) country_name = forms.CharField(widget=autocomplete_light.TextWidget('ACCountry'),) class Meta: model = FakturaItem diff --git a/project/docs/views/base_views.py b/project/docs/views/base_views.py index 0167215..d64577c 100644 --- a/project/docs/views/base_views.py +++ b/project/docs/views/base_views.py @@ -642,6 +642,21 @@ class BaseItemsViews(BaseViews): return redirect(self.REDIRECT_AFTER_EDIT) obj = self.get_obj(kwargs['id']) + receiver_choice = 1 + sender_choice = 1 + if self.request.method == 'GET': + if obj.user_is_sender: + sender_choice = 'he_is' + elif obj.sender: + sender_choice = 'another' + else: + sender_choice = 'nobody' + if obj.receiver == obj.client: + receiver_choice = 'he_is' + elif obj.sender: + receiver_choice = 'another' + else: + receiver_choice = 'nobody' if self.pformset: pformset = self.pformset(self.request.POST or None, instance=obj) @@ -653,6 +668,21 @@ class BaseItemsViews(BaseViews): if form.is_valid() and formset.is_valid() and ((not pformset) or (pformset and pformset.is_valid())): new_obj = form.save() + # По сути - для фактуры. + receiver = form.data.get('receiver_group', None) + if receiver == 'he_is': + new_obj.receiver = new_obj.client + elif receiver == 'nobody': + new_obj.receiver = None + sender = form.data.get('receiver_group', None) + if sender == 'he_is': + new_obj.user_is_sender = True + new_obj.sender = None + elif sender == 'nobody': + new_obj.user_is_sender = False + new_obj.sender = None + new_obj.save() + # сохранить табличную часть if formset.is_valid(): items = formset.save(commit=False) @@ -679,6 +709,8 @@ class BaseItemsViews(BaseViews): 'formset': formset, 'pformset': pformset, 'client_form': ClientForm(), + 'receiver_choice': receiver_choice, + 'sender_choice': sender_choice, } return render(self.request, self.TEMPLATE_EDIT, dictionary) diff --git a/project/docs/views/faktura.py b/project/docs/views/faktura.py index 824ceb4..d53453e 100644 --- a/project/docs/views/faktura.py +++ b/project/docs/views/faktura.py @@ -45,7 +45,7 @@ class FakturaViews(BaseItemsViews, AddByInvoiceMethodMixin): # для генерации pdf/xls PDF_TEMPLATE = 'docs/faktura/as_pdf.html' XLS_TEMPLATE = 'faktura.xls' - FILENAME = u'Накладная № %s, %s' # без расширения + FILENAME = u'Счёт-фактура № %s, %s' # без расширения # --- грамматика для вывода наименований в шаблонах PADEJI = { diff --git a/project/templates/customer/clients/form.html b/project/templates/customer/clients/form.html index 0efff0e..89bb83e 100644 --- a/project/templates/customer/clients/form.html +++ b/project/templates/customer/clients/form.html @@ -207,7 +207,7 @@ {% else %} - + {% endif %} diff --git a/project/templates/docs/parts/form_client_choices.html b/project/templates/docs/parts/form_client_choices.html index 879942d..6b101de 100644 --- a/project/templates/docs/parts/form_client_choices.html +++ b/project/templates/docs/parts/form_client_choices.html @@ -1,3 +1,4 @@ - {{ label1|default:'Он же' }}
-{{ label1|default:'Стороннее лицо' }}
- Не указывать \ No newline at end of file +

{{ label }}

+ {{ label1|default:'Он же' }}
+{{ label2|default:'Стороннее лицо' }}
+ Не указывать \ No newline at end of file diff --git a/project/templates/docs/parts/form_field_receiver.html b/project/templates/docs/parts/form_field_receiver.html index 569a814..8b2bf0d 100644 --- a/project/templates/docs/parts/form_field_receiver.html +++ b/project/templates/docs/parts/form_field_receiver.html @@ -1,2 +1,4 @@ -{% include 'docs/parts/form_client_choices.html' with client_group="receiver_group" id="receiver_choices" classes="field" label="Получатель" default=1 %} -{% include 'docs/parts/form_field_client.html' with field=form.receiver id="receiver" classes="field" label="Получатель" %} \ No newline at end of file +{% include 'docs/parts/form_client_choices.html' with client_group="receiver_group" id="receiver_choices" classes="field" label="Получатель" default=receiver_choice %} + +{% include 'docs/parts/form_field_client.html' with field=form.receiver id="receiver" classes="field" label="Получатель" %} +
\ No newline at end of file diff --git a/project/templates/docs/parts/form_field_sender.html b/project/templates/docs/parts/form_field_sender.html index 5c8c5e8..5d14041 100644 --- a/project/templates/docs/parts/form_field_sender.html +++ b/project/templates/docs/parts/form_field_sender.html @@ -1,2 +1,3 @@ -{% include 'docs/parts/form_client_choices.html' with client_group="sender_group" id="sender_choices" classes="field" label="Отправитель" default=1 %} -{% include 'docs/parts/form_field_client.html' with field=form.receiver id="sender" classes="field" label="Отправитель" %} \ No newline at end of file +{% include 'docs/parts/form_client_choices.html' with client_group="sender_group" id="sender_choices" classes="field" label="Отправитель" label1='Подставить мои данные' default=sender_choice %} +{% include 'docs/parts/form_field_client.html' with field=form.sender id="sender" classes="field" label="Отправитель" %} +
\ No newline at end of file diff --git a/project/templates/docs/stub_js.html b/project/templates/docs/stub_js.html index f15cef3..4868ebe 100644 --- a/project/templates/docs/stub_js.html +++ b/project/templates/docs/stub_js.html @@ -84,5 +84,24 @@ }) }) }) + //var sender_val = $('input:radio[name=sender_group]:checked', '#doc-form').val(); + var toggle_sender = function(client_type) { + var sender_val = $('input:radio[name=' + client_type + '_group]:checked', '#doc-form').val(); + console.log(sender_val); + if (sender_val == 'another') { + $('#' + client_type).show() + } else { + $('#' + client_type).hide() + } + } + + $.each(['sender', 'receiver'], function(i, client_type){ + console.log(client_type); + toggle_sender(client_type); + $('input:radio[name=' + client_type + '_group]').change(function(){ + toggle_sender(client_type); + }) + }) + }); \ No newline at end of file diff --git a/project/xls_templates/faktura.xls b/project/xls_templates/faktura.xls new file mode 100644 index 0000000..bd7878c Binary files /dev/null and b/project/xls_templates/faktura.xls differ