From 1535720a234e0c8586775a38c45ae570f7d207d6 Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Sun, 30 Jul 2017 19:22:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=BA=D0=BB=D0=B0=D0=B4=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D1=83,=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D1=88=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/forms/base_forms.py | 5 +- src/docs/forms/faktura.py | 1 - src/docs/forms/nakladn.py | 23 +++++++++ src/docs/models/nakladn.py | 25 ++++++++++ src/docs/views/faktura.py | 27 +++++----- src/docs/views/nakladn.py | 2 +- static/css/style.css | 49 +++++++++++++++---- templates/docs/nakladn/form.html | 27 ++++++---- templates/docs/parts/form_field_receiver.html | 2 +- templates/docs/stub_js.html | 32 +++++++++--- 10 files changed, 150 insertions(+), 43 deletions(-) diff --git a/src/docs/forms/base_forms.py b/src/docs/forms/base_forms.py index e3d308c..5307a15 100644 --- a/src/docs/forms/base_forms.py +++ b/src/docs/forms/base_forms.py @@ -49,7 +49,10 @@ class BaseModelForm(MyBaseModelForm): f['plat_doc_date'].widget.attrs['class'] = 'has-datepicker' if f.get('fix_doc_date'): f['fix_doc_date'].widget.attrs['class'] = 'has-datepicker' - + if f.get('transport_date'): + f['transport_date'].widget.attrs['class'] = 'has-datepicker' + if f.get('doc_reason_date'): + f['doc_reason_date'].widget.attrs['class'] = 'has-datepicker' # Если в форме есть поле bank_account, настроить связь # с BankAccount: чтобы можно было выбрать __только__ # расчетные счета данного пользователя. Также убрать diff --git a/src/docs/forms/faktura.py b/src/docs/forms/faktura.py index db39219..777c984 100644 --- a/src/docs/forms/faktura.py +++ b/src/docs/forms/faktura.py @@ -59,7 +59,6 @@ class FakturaForm(BaseModelForm): class FakturaAdminForm(FakturaForm): """Форма редактирования фактуры - для админки.""" class Meta(FakturaForm.Meta): - # fields = None exclude = () _textarea = forms.Textarea(attrs={'cols': 80, 'rows': 3}) widgets = { diff --git a/src/docs/forms/nakladn.py b/src/docs/forms/nakladn.py index 92bd982..cc34091 100644 --- a/src/docs/forms/nakladn.py +++ b/src/docs/forms/nakladn.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- +import autocomplete_light from django import forms from commons.forms import MyBaseModelForm +from customer.models import Client from .base_forms import BaseModelForm from ..models import Nakladn, NakladnItem @@ -9,6 +11,20 @@ from ..models import Nakladn, NakladnItem class NakladnForm(BaseModelForm): """Форма редактирования накладной.""" + sender = forms.ModelChoiceField( + Client.objects.all(), + label='клиент', + required=False, + widget=autocomplete_light.ChoiceWidget('ACClient') + ) + receiver = forms.ModelChoiceField( + Client.objects.all(), + label='клиент', + required=False, + widget=autocomplete_light.ChoiceWidget('ACClient') + ) + adjust_client_fields = [] + class Meta: model = Nakladn fields = ( @@ -18,9 +34,16 @@ class NakladnForm(BaseModelForm): 'client', 'invoice', 'doc_reason', + 'doc_reason_num', + 'doc_reason_date', 'nds_value', 'nds_method', 'doc_text', + 'transport', + 'transport_date', + 'transport_num', + 'sender', + 'receiver', ) _radioselect = forms.RadioSelect _textarea = forms.Textarea(attrs={'cols': 80, 'rows': 3}) diff --git a/src/docs/models/nakladn.py b/src/docs/models/nakladn.py index 2cc21a2..f9fccd8 100644 --- a/src/docs/models/nakladn.py +++ b/src/docs/models/nakladn.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django.db import models +from customer.models import Client from docs.models.base_models import BaseInvoiceModel, BaseItemInvoiceModel from docs.models.mixins import SignedStatusFieldMixin, InvoiceFieldMixin from docs.models.linked_docs_mixin import LinkedDocsMixin @@ -9,6 +10,30 @@ from docs.models.linked_docs_mixin import LinkedDocsMixin class Nakladn(BaseInvoiceModel, SignedStatusFieldMixin, InvoiceFieldMixin, LinkedDocsMixin): """Накладная торг12.""" doc_reason = models.CharField('Основание', max_length=256, blank=True, default='') + doc_reason_num = models.PositiveIntegerField('Номер основания', blank=True, null=True) + doc_reason_date = models.DateField('Дата основания', blank=True, null=True) + transport = models.BooleanField('Есть транспортная накладная', default=False) + transport_num = models.PositiveIntegerField( + 'Номер транспортной накладной', + blank=True, + null=True + ) + transport_date = models.DateField('Дата транспортной накладной', blank=True, null=True) + user_is_sender = models.BooleanField('пользователь - отправитель', default=False) + sender = models.ForeignKey( + Client, + related_name='sender_nakladn', + blank=True, + null=True, + verbose_name='Отправитель' + ) + receiver = models.ForeignKey( + Client, + related_name='receiver_nakladn', + blank=True, + null=True, + verbose_name='Получатель' + ) class Meta(BaseInvoiceModel.Meta): verbose_name = 'Накладная' diff --git a/src/docs/views/faktura.py b/src/docs/views/faktura.py index d3d176a..309b37f 100644 --- a/src/docs/views/faktura.py +++ b/src/docs/views/faktura.py @@ -27,6 +27,7 @@ class FakturaViews(BaseItemsViews, AddByInvoiceMethodMixin): # префикс формы табличной части ITEM_FORM_PREFIX = 'faktura_items' + # фильтры FILTERSET_CLASS = FakturaFilterSet # фильтры # по какому полю суммировать табличную часть документа при показе списком @@ -47,25 +48,25 @@ class FakturaViews(BaseItemsViews, AddByInvoiceMethodMixin): # для генерации pdf/xls PDF_TEMPLATE = 'docs/faktura/as_pdf.html' XLS_TEMPLATE = 'faktura.xls' - FILENAME = u'Счёт-фактура № %s, %s' # без расширения + FILENAME = 'Счёт-фактура № %s, %s' # без расширения # --- грамматика для вывода наименований в шаблонах PADEJI = { - 'imenit': u'счёт-фактура', # кто? что? - 'rodit': u'счёта-фактуры', # кого? чего? - 'dateln': u'счёту-фактуре', # кому? чему? - 'vinit': u'счёт-фактуру', # кого? что? - 'tvorit': u'счётом-фактурой', # кем? чем? - 'predlojn': u'счёте-фактуре', # о ком? о чём? + 'imenit': 'счёт-фактура', # кто? что? + 'rodit': 'счёта-фактуры', # кого? чего? + 'dateln': 'счёту-фактуре', # кому? чему? + 'vinit': 'счёт-фактуру', # кого? что? + 'tvorit': 'счётом-фактурой', # кем? чем? + 'predlojn': 'счёте-фактуре', # о ком? о чём? } PADEJI_MNOJ = { - 'imenit': u'счета-фактуры', # кто? что? - 'rodit': u'счетов-фактур', # кого? чего? - 'dateln': u'счетам-фактурам', # кому? чему? - 'vinit': u'счета-фактуры', # кого? что? - 'tvorit': u'счетами-фактурами', # кем? чем? - 'predlojn': u'счетах-фактурах', # о ком? о чём? + 'imenit': 'счета-фактуры', # кто? что? + 'rodit': 'счетов-фактур', # кого? чего? + 'dateln': 'счетам-фактурам', # кому? чему? + 'vinit': 'счета-фактуры', # кого? что? + 'tvorit': 'счетами-фактурами', # кем? чем? + 'predlojn': 'счетах-фактурах', # о ком? о чём? } def prepare(self, obj, obj_items, export_to=None): diff --git a/src/docs/views/nakladn.py b/src/docs/views/nakladn.py index 92b1ecd..50175b3 100644 --- a/src/docs/views/nakladn.py +++ b/src/docs/views/nakladn.py @@ -48,7 +48,7 @@ class NakladnViews(BaseItemsViews, AddByInvoiceMethodMixin): # для генерации pdf/xls PDF_TEMPLATE = 'docs/nakladn/as_pdf.html' XLS_TEMPLATE = 'nakladn.xls' - FILENAME = u'Накладная № %s, %s' # без расширения + FILENAME = 'Накладная № %s, %s' # без расширения MAYBE_SIGNED = True # --- грамматика для вывода наименований в шаблонах diff --git a/static/css/style.css b/static/css/style.css index df1b53e..cec64b5 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -440,12 +440,17 @@ a.delete { vertical-align: top; } #id_nds_value{padding-left: 2px;margin-left: 0;height: 36px;font-size: 25px;} #id_doc_num, #id_doc_date {padding-left: 2px;margin-left: 0;height: 36px;width: 155px;} .doc-form #doc_date, - .doc-form #doc_mesto, .doc-form #end_date, - .doc-form #doc_expire_date, .doc-form #dover_doc_date, .doc-form #dover_passport_num, .doc-form #plat_doc_date - { margin-left: 10px; } +.doc-form #doc_mesto, +.doc-form #end_date, +.doc-form #doc_expire_date, +.doc-form #dover_doc_date, +.doc-form #dover_passport_num, +.doc-form #plat_doc_date { margin-left: 10px; } .doc-form #client .hilight {font-size:25px;} .doc-form #client .deck {font-size:25px;} +.doc-form #sender .deck {font-size:25px;} +.doc-form #receiver .deck {font-size:25px;} .doc-form #saldo_debit input { margin-left: 12px; } .doc-form #saldo_credit input { margin-left: 5px; } .doc-form #saldo_debit .errorlist, .doc-form #saldo_credit .errorlist { margin-left: 83px; } @@ -460,9 +465,10 @@ a.delete { vertical-align: top; } .doc-form #id_dover_passport_date {} .doc-form #dover_name .help-text, - .doc-form #dover_name .errorlist, .doc-form #dover_passport_ser .errorlist, - .doc-form #dover_passport_org .errorlist, .doc-form #dover_passport_date .errorlist - { margin-left: 168px;margin-top: -10px; } +.doc-form #dover_name .errorlist, +.doc-form #dover_passport_ser .errorlist, +.doc-form #dover_passport_org .errorlist, +.doc-form #dover_passport_date .errorlist { margin-left: 168px;margin-top: -10px; } .doc-form select#id_bank_account {width: 410px;height: 40px;font-size: 25px;margin-left: 0;padding-left: 2px;} .doc-form select#id_client { width: 370px; } @@ -878,7 +884,8 @@ input[type=number] { .fixes__wrapper, .avance__wrapper, -.government__wrapper { +.government__wrapper, +.transport__wrapper { padding-bottom: 7px; font-size: 15px; } @@ -925,7 +932,8 @@ input[type=number] { #fixes, #avance, -#government { +#government, +#transport { cursor: pointer; font-style: normal; } @@ -1151,9 +1159,32 @@ input[type=number] { } #id_doc_reason { - width: 570px; + width: 325px; } #id_government_description { width: 325px; } + +.bank-account__invoice { + margin-left: -15px; +} + +#doc_reason_num { + margin-left: -268px; +} + +#id_transport_num, +#id_doc_reason_num { + margin-right: 10px; + width: 155px; +} + +#id_transport_date, +#id_doc_reason_date { + width: 155px; +} + +#doc_reason_date { + margin-left: -96px; +} diff --git a/templates/docs/nakladn/form.html b/templates/docs/nakladn/form.html index f00fb3a..29786a9 100644 --- a/templates/docs/nakladn/form.html +++ b/templates/docs/nakladn/form.html @@ -5,22 +5,31 @@ {% block form_content %}
{% include 'docs/parts/form_field.html' with field=form.doc_num id="doc_num" classes="left" label="Номер" required="True" no_clear_after="True" %} - {% include 'docs/parts/form_field.html' with field=form.doc_date id="doc_date" classes="left" label="Дата создания" required="True" %} -
+ {% include 'docs/parts/form_field.html' with field=form.doc_date id="doc_date" classes="left" label="Дата создания" required="True" no_clear_after="True" %} -
{% if user.profile.bank_accounts.count > 1 %} - {% include 'docs/parts/form_field.html' with field=form.bank_account id="bank_account" classes="field" label="Расчётный счёт" %} + {% include 'docs/parts/form_field.html' with field=form.bank_account id="bank_account" classes="left bank-account__invoice" label="Расчётный счёт" %} {% else %} - {% include 'docs/parts/form_field.html' with field=form.bank_account id="bank_account" classes="field hidden" label="Расчётный счёт" %} + {% include 'docs/parts/form_field.html' with field=form.bank_account id="bank_account" classes="left bank-account__invoice" label="Расчётный счёт" %} {% endif %} +
+
+ {% include 'docs/parts/form_field.html' with field=form.transport_num id="transport_num" classes="left" label="Номер" required="True" no_clear_after="True" %} + {% include 'docs/parts/form_field.html' with field=form.transport_date id="transport_date" classes="left" label="Дата" required="True" no_clear_after="True" %} +
+
+ {% include 'docs/parts/form_field.html' with field=form.doc_reason id="doc_reason" classes="left" label="Основание" no_clear_after="True" help='Например "Договор №25 от 01.01.2017" или "Заказ-наряд №23 от 01.01.2017".
Можно написать "Счёт №25 от 01.01.2017", если в этом счёте указаны основные условия поставки и он заменяет договор.' %} + {% include 'docs/parts/form_field.html' with field=form.doc_reason_num id="doc_reason_num" classes="left" label="Номер" no_clear_after="True" %} + {% include 'docs/parts/form_field.html' with field=form.doc_reason_date id="doc_reason_date" classes="left" label="Дата" no_clear_after="True" %} +
- {% include 'docs/parts/form_field_client.html' with field=form.client required="True" is_ajax="True" %} - {% include 'docs/parts/form_field.html' with field=form.invoice id="invoice" classes="field hidden" label="Создать накладную по счёту" %}
+
+ {% include 'docs/parts/form_field_client.html' with field=form.client required="True" is_ajax="True" label="Плательщик" %} + {% include 'docs/parts/form_field.html' with field=form.invoice id="invoice" classes="field hidden" label="Создать накладную по счёту" %} -
- {% include 'docs/parts/form_field.html' with field=form.doc_reason id="doc_reason" classes="field" label="Основание" help='Например "Договор №25 от 01.01.2017" или "Заказ-наряд №23 от 01.01.2017".
Можно написать "Счёт №25 от 01.01.2017", если в этом счёте указаны основные условия поставки и он заменяет договор.' %} + {% include 'docs/parts/form_field_sender.html' with field=form.sender id="sender" type="sender" %} + {% include 'docs/parts/form_field_receiver.html' with field=form.receiver id="receiver" type="receiver" %}
diff --git a/templates/docs/parts/form_field_receiver.html b/templates/docs/parts/form_field_receiver.html index be1c515..ed5050f 100644 --- a/templates/docs/parts/form_field_receiver.html +++ b/templates/docs/parts/form_field_receiver.html @@ -1,2 +1,2 @@ {% include 'docs/parts/form_client_choices.html' with client_group="receiver_group" id="receiver_choices" classes="field" label2='Грузополучатель - стороннее лицо (не покупатель)' default=receiver_choice %} -{% include 'docs/parts/form_field_client.html' with field=form.receiver id="receiver" classes="field" label=' ' type="receiver" %} +{% include 'docs/parts/form_field_client.html' with field=form.receiver id="receiver" classes="field" label=" " type="receiver" %} diff --git a/templates/docs/stub_js.html b/templates/docs/stub_js.html index 0356180..90a92ad 100644 --- a/templates/docs/stub_js.html +++ b/templates/docs/stub_js.html @@ -2,8 +2,6 @@