add parts template

feature/docker
Dmitriy Shesterkin 9 years ago
parent 1d4916d0b7
commit 01df2c8f42
  1. 1
      .gitignore
  2. 0
      bin/diff_static.sh
  3. 17
      src/docs/forms/invoice.py
  4. 24
      src/docs/views/base_views.py
  5. 17
      src/dokumentor/templates/docs/parts/doc_actions.html
  6. 13
      src/dokumentor/templates/docs/parts/doc_actions2nd.html
  7. 9
      src/dokumentor/templates/docs/parts/form_buttons.html
  8. 4
      src/dokumentor/templates/docs/parts/form_client_choices.html
  9. 23
      src/dokumentor/templates/docs/parts/form_field.html
  10. 22
      src/dokumentor/templates/docs/parts/form_field_client.html
  11. 3
      src/dokumentor/templates/docs/parts/form_field_receiver.html
  12. 2
      src/dokumentor/templates/docs/parts/form_field_sender.html
  13. 53
      src/dokumentor/templates/docs/parts/form_tbl_items.html
  14. 9
      src/dokumentor/templates/docs/parts/invoice_create_docs.html
  15. 21
      src/dokumentor/templates/docs/parts/linked_docs_list.html

1
.gitignore vendored

@ -18,3 +18,4 @@ yandex_money.log
/src/dokumentor/media/
/tmp/
/conf/env
!parts

@ -9,13 +9,14 @@ from docs.models import Invoice, InvoiceItem
class InvoiceForm(BaseModelForm):
"""Форма редактирования счета."""
class Meta:
model = Invoice
fields = ('doc_num', 'doc_date',
'bank_account', 'client',
'nds_value',
'doc_text',
)
'bank_account', 'client',
'nds_value',
'doc_text',
)
_radioselect = forms.RadioSelect
_textarea = forms.Textarea(attrs={'cols': 80, 'rows': 3})
widgets = {
@ -25,6 +26,7 @@ class InvoiceForm(BaseModelForm):
class InvoiceAdminForm(InvoiceForm):
"""Форма редактирования счета - для админки."""
class Meta(InvoiceForm.Meta):
# fields = None
exclude = ()
@ -49,13 +51,16 @@ class InvoicesListForm(forms.Form):
class InvoiceItemForm(MyBaseModelForm):
"""Форма редактирования табличной части счета."""
class Meta:
model = InvoiceItem
exclude = ['parent']
fields = '__all__'
# exclude = ('parent',)
# fields = ('name', 'qty', 'units', 'price', 'total_price', 'id',)
fields = ('id', 'name', 'qty', 'units', 'price', 'total_price',)
class InvoiceItemAdminForm(InvoiceItemForm):
"""Форма редактирования табличной части счета - для админки."""
class Meta(InvoiceItemForm.Meta):
exclude = None

@ -8,6 +8,8 @@ from time import time
import simplejson as json
import ghostscript
from django.contrib import messages
from django.db import DatabaseError
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponseServerError, HttpResponseBadRequest, HttpResponse
@ -632,7 +634,7 @@ class BaseItemsViews(BaseViews):
@method_decorator(license_required)
@method_decorator(csrf_protect)
def add(self, *args, **kwargs):
def add(self, *args, initial_items=None, initial=None, **kwargs):
"""Добавить документ.
Если при GET-запросе в kwargs передать initial и/или initial_items, то создаст предзаполненный документ.
"""
@ -656,16 +658,22 @@ class BaseItemsViews(BaseViews):
new_obj.user = self.request.user
new_obj.company = self.request.user.profile
new_obj.save()
# сохранить табличную часть
if formset.is_valid():
new_items = formset.save(commit=False)
for item in new_items:
item.parent = new_obj
item.save()
try:
if not formset.instance.pk:
formset.instance = new_obj
new_items = formset.save(commit=False)
for item in new_items:
item.parent = new_obj
item.save()
messages.success(self.request, "Документ успешно сохранен")
except DatabaseError:
messages.error(self.request, "Ошибка базы данных. Пожалуйста, попробуйте снова")
return redirect(self.REDIRECT_AFTER_ADD)
else:
initial = kwargs.get('initial') or self.init_form()
initial_items = kwargs.get('initial_items')
initial = initial or self.init_form()
initial_items = initial_items
form = self.FORM_CLASS(self.request.user, initial=initial)
formset = self.ITEM_FORMSET_CLASS(prefix=self.ITEM_FORM_PREFIX, initial=initial_items)

@ -0,0 +1,17 @@
{% url url_prefix|add:'img' id=obj.pk as url_img %}
{% url url_prefix|add:'pdf' id=obj.pk as url_pdf %}
{% url url_prefix|add:'xls' id=obj.pk as url_xls %}
<div class="doc-panel-header">Скачать документ</div>
{% if not images %}
<a class="doc look-link" href="{{ url_img }}">Предпросмотр {{ padeji.rodit }}</a>
{% endif %}
<div class="clear"></div>
<a class="doc pdf-link left" href="{{ url_pdf }}">Документ в PDF</a>
<a class="doc excel-link left" href="{{ url_xls }}"> Документ в Excel</a>
<div class="clear"></div>

@ -0,0 +1,13 @@
{% url url_prefix|add:'edit' id=obj.pk as url_edit %}
{% url url_prefix|add:'delete' id=obj.pk as url_delete %}
{% url url_prefix|add:'email' id=obj.pk as url_email %}
<div class="doc-panel-header">Действия с документом</div>
<a class="doc email-link" href="{{ url_email }}">Отправить по e-mail</a>
<a class="doc edit-link" href="{{ url_edit }}">Редактировать документ</a>
<a class="doc delete-link" href="{{ url_delete }}">Удалить документ</a>
<div class="clear"></div>

@ -0,0 +1,9 @@
<div class="buttons">
{% if not is_ajax %}
<input class="btn save_btn" type="submit" name="submit" value="Сохранить {{ padeji.imenit }}" />
<input type="submit" name="_cancel" value="Отмена" />
{% else %}
<button type="submit" role="button" name="submit">Сохранить</button>
<button class="close-form" type="button" role="close" name="close-form">Отмена</button>
{% endif %}
</div>

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

@ -0,0 +1,23 @@
{% comment %}
field - поле
id - id поля
classes - css классы
required - отметить, что поле обязательное?
label - заголовок поля
label_inline - вывести заголовок и поле на одной строке?
help - подсказка по заполнению поля
is_ajax - ajax-форма?
no_clear_after - не добавлять очистку float после блока
{% endcomment %}
<div{% if id %} id="{{ id }}"{% endif %}{% if classes %} class="{{ classes }}"{% endif %}>
{% if label %}{{ label }}:{% if required %} <span class="required">*</span>{% endif %}{% endif %}
{% if label_inline %}
{{ field }}
{% else %}
<p>{{ field }}</p>
{% endif %}
{% if help %}<p><span class="help-text">{{ help }}</span></p>{% endif %}
{% if not is_ajax %}{{ field.errors }}{% endif %}
</div>
{% if not no_clear_after %}<div class="clear"></div>{% endif %}

@ -0,0 +1,22 @@
{% comment %}
field - поле
required - отметить, что поле обязательное?
label - заголовок поля (по умолчанию, `Контрагент`)
is_ajax - ajax-форма?
no_clear_after - не добавлять очистку float после блока
{% endcomment %}
<div id={{ id|default:"client" }} class="field">
{{ label|default:"Контрагент" }}:{% if required %} <span class="required">*</span>{% endif %}
<p>
{{ field }}
<a class="client add-client-link" href="{% url 'customer_clients_add' %}" title="Добавить контрагента">
Добавить контрагента
</a>
</p>
{{ form.client.errors }}
{% if not is_ajax %}{{ form.client.errors }}{% endif %}
</div>
{% if not no_clear_after %}<div class="clear"></div>{% endif %}

@ -0,0 +1,3 @@
{% 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="Получатель" %}

@ -0,0 +1,2 @@
{% 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="Отправитель" %}

@ -0,0 +1,53 @@
{# табличная часть документа #}
<table id="tbl_items" class="doc-list">
<tr>
<th>Наименование:</th>
<th>Количество:</th>
<th>Ед. изм.:</th>
<th>Цена:</th>
<th>Сумма:</th>
<th></th>
</tr>
{% for iform in formset %}
<tr class="row_tbl_items row {% cycle 'even' 'odd' %}" {% if iform.DELETE.value %}style='display:none;'{% endif %}>
{% for field in iform %}
{% if field.name == "id" or field.name == "parent" %}
{{ field }}
{% else %}
{% if field.name != "DELETE" %}
<td class="{{ field.name }}">
{{ field.errors }}
{{ field }}
</td>
{% endif %}
{% endif %}
{% endfor %}
<td class="DELETE center">
{% if iform.instance.pk %}<span style='display:none;'>{{ iform.DELETE }}</span>{% endif %}
</td>
</tr>
{% endfor %}
<tr>
<td colspan="3">
</td>
<td class="itogo-td itogo-td1"><span>Итого</span></td>
<td class="itogo-td itogo-td2"><span id="itogo"></span></td>
<td></td>
</tr>
{% comment %}
<tr>
<td colspan="3"></td>
<td align="right"><b id="itogo_nds_text">Без НДС</b></td>
<td><b id="itogo_nds"></b></td>
<td></td>
</tr>
{% endcomment %}
</table>
{{ formset.management_form }}
<div class="clear"></div>

@ -0,0 +1,9 @@
{% url 'docs_aktrabot_add_by_invoice' invoice_id=obj.pk as url_aktrabot_by_invoice %}
{% url 'docs_nakladn_add_by_invoice' invoice_id=obj.pk as url_nakladn_by_invoice %}
{% url 'docs_faktura_add_by_invoice' invoice_id=obj.pk as url_faktura_by_invoice %}
<a href="{{ url_aktrabot_by_invoice }}" title="Акт по счёту" class="invoice-add-doc doc">Акт выполненных работ</a>
<a href="{{ url_nakladn_by_invoice }}" title="Накладную" class="doc invoice-add-doc ">Накладную</a>
<a href="{{ url_faktura_by_invoice }}" title="Счёт-фактуру" class="invoice-add-doc doc">Счёт-фактуру</a>

@ -0,0 +1,21 @@
{% if obj.linked_docs %}
<div class="doc-panel-header">Связанные документы</div>
{% for invoice in obj.linked_docs.Invoice %}
<a href="{% url 'docs_invoice_img' invoice.id %}" class="doc">{{ invoice }}</a>
{% endfor %}
{% for akt in obj.linked_docs.AktRabot %}
<a href="{% url 'docs_aktrabot_img' akt.id %}" class="doc">{{ akt }}</a>
{% endfor %}
{% for nakladn in obj.linked_docs.Nakladn %}
<a href="{% url 'docs_nakladn_img' nakladn.id %}" class="doc">{{ nakladn }}</a>
{% endfor %}
{% for faktura in obj.linked_docs.Faktura %}
<a href="{% url 'docs_faktura_img' faktura.id %}" class="doc">{{ faktura }}</a>
{% endfor %}
{% endif %}
Loading…
Cancel
Save