receiver and sender

remotes/origin/yandex
Bachurin Sergey 12 years ago
parent 39c46bb3d0
commit 8ee691754b
  1. 5
      project/commons/forms.py
  2. 5
      project/docs/forms/faktura.py
  3. 32
      project/docs/views/base_views.py
  4. 2
      project/docs/views/faktura.py
  5. 2
      project/templates/customer/clients/form.html
  6. 7
      project/templates/docs/parts/form_client_choices.html
  7. 4
      project/templates/docs/parts/form_field_receiver.html
  8. 5
      project/templates/docs/parts/form_field_sender.html
  9. 19
      project/templates/docs/stub_js.html
  10. BIN
      project/xls_templates/faktura.xls

@ -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')

@ -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

@ -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)

@ -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 = {

@ -207,7 +207,7 @@
<input type="submit" name="submit" value="Сохранить" />
<input type="submit" name="_cancel" value="Отмена" />
{% else %}
<button type="submit" role="button" name="submit">Сохранить</button>
<button type="submit" role="button" name="submit" id='add_client'>Сохранить</button>
<button class="close-form" type="button" role="close" name="close-form">Отмена</button>
{% endif %}
</div>

@ -1,3 +1,4 @@
<input type="radio" name="{{ client_group|default:'client_group' }}" value="he_is" checked> {{ label1|default:'Он же' }}<br>
<input type="radio" name="{{ client_group|default:'client_group' }}" value="another">{{ label1|default:'Стороннее лицо' }}<br>
<input type="radio" name="{{ client_group|default:'client_group' }}" value="nobody"> Не указывать
<p>{{ label }}</p>
<input type="radio" name="{{ client_group|default:'client_group' }}" value="he_is"{% if default == 'he_is' %} checked{% endif %}> {{ label1|default:'Он же' }}<br>
<input type="radio" name="{{ client_group|default:'client_group' }}" value="another"{% if default == 'another' %} checked{% endif %}>{{ label2|default:'Стороннее лицо' }}<br>
<input type="radio" name="{{ client_group|default:'client_group' }}" value="nobody"{% if default == 'nobody' %} checked{% endif %}> Не указывать

@ -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_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="Получатель" %}
<hr />

@ -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="Отправитель" %}
{% 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="Отправитель" %}
<hr />

@ -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);
})
})
});
</script>

Binary file not shown.
Loading…
Cancel
Save