add partner form, fix dadata api in docs add template

feature/docker
Dmitriy Shesterkin 9 years ago
parent 0fa9d33768
commit 6a3221d0cf
  1. 2
      .gitignore
  2. 1
      requirements/base.txt
  3. 3
      requirements/local.txt
  4. 0
      src/customer/!!!del__forms.py
  5. 2
      src/customer/forms.py
  6. 3
      src/customer/views/profile.py
  7. 11
      src/docs/views/__init__.py
  8. 24
      src/docs/views/base_views.py
  9. 8
      src/dokumentor/settings/base.py
  10. 18
      src/dokumentor/settings/local.py
  11. 25
      src/dokumentor/static/js/client/search-external-api.js
  12. 24
      src/dokumentor/static/js/dialogs.js
  13. 4
      src/dokumentor/static/js/profile/search-main-external-api.js
  14. 237
      src/dokumentor/templates/customer/clients/!!form.html
  15. 15
      src/dokumentor/templates/customer/clients/form.html
  16. 38
      src/dokumentor/templates/customer/profile/license.html
  17. 4
      src/dokumentor/templates/customer/profile/license_list.html
  18. 0
      src/dokumentor/templates/docs/!!del__stub_js.html
  19. 9
      src/dokumentor/templates/docs/_base/base_add.html
  20. 9
      src/dokumentor/templates/docs/_base/base_edit.html
  21. 14
      src/dokumentor/templates/docs/stub_js.html

2
.gitignore vendored

@ -24,4 +24,4 @@ yandex_money.log
!local.py !local.py
!parts !parts
!.gitkeep !.gitkeep
!form.html

@ -55,7 +55,6 @@ pytz==2017.2
reportlab==3.4.0 reportlab==3.4.0
simplejson==3.3.1 simplejson==3.3.1
six==1.10.0 six==1.10.0
sqlparse==0.2.3
Unidecode==0.4.17 Unidecode==0.4.17
vine==1.1.3 vine==1.1.3
webencodings==0.5.1 webencodings==0.5.1

@ -1,6 +1,7 @@
-r base.txt -r base.txt
ipython==2.1.0 ipython==2.1.0
django-debug-toolbar==1.4 django-debug-toolbar==1.5
sqlparse==0.2.3
django-eml-email-backend==0.1 django-eml-email-backend==0.1
ipdb==0.10.3 ipdb==0.10.3
ptpython==0.39 ptpython==0.39

@ -10,7 +10,7 @@ from commons.forms import MyBaseModelForm, set_field_error
from customer import consts, models from customer import consts, models
FILE_UPLOAD_MAX_MEMORY_SIZE = getattr(settings, 'FILE_UPLOAD_MAX_MEMORY_SIZE ', 2621440) # default 2.5Mb FILE_UPLOAD_MAX_MEMORY_SIZE = getattr(settings, 'FILE_UPLOAD_MAX_MEMORY_SIZE ', 2621440) # default 2.5Mb
def get_profile_form_class(profile_type): def get_profile_form_class(profile_type):

@ -86,7 +86,6 @@ def profile_edit(request):
accounts = models.BankAccount.objects.get_all(profile) accounts = models.BankAccount.objects.get_all(profile)
bank_account_form = forms.BankAccountForm(initial={'company': profile}) bank_account_form = forms.BankAccountForm(initial={'company': profile})
dadata_api_key = settings.DADATA_API_KEY
if request.method == 'POST': if request.method == 'POST':
form = form_class(data=request.POST, files=request.FILES, instance=profile) form = form_class(data=request.POST, files=request.FILES, instance=profile)
@ -118,7 +117,7 @@ def profile_edit(request):
'profile': profile, 'profile': profile,
'accounts': accounts, 'accounts': accounts,
'bank_account_form': bank_account_form, 'bank_account_form': bank_account_form,
'dadata_api_key': dadata_api_key 'dadata_api_key': settings.DADATA_API_KEY
} }
return render(request, template_name, dictionary) return render(request, template_name, dictionary)

@ -1,8 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.conf import settings
from docs.views.invoice import InvoiceViews from docs.views.invoice import InvoiceViews
from docs.views.aktrabot import AktRabotViews from docs.views.aktrabot import AktRabotViews
@ -16,9 +14,12 @@ from docs.views.ajax import get_invoices, get_tbl_items, get_client_by_invoice,
@login_required # важно!!! @login_required # важно!!!
def getview(request, *args, **kwargs): def getview(request, *args, **kwargs):
views = kwargs['klass'](request) # класс с вьюхами # класс с вьюхами
handler = getattr(views, kwargs['oper']) # конкретная вьюха views = kwargs['klass'](request)
return handler(request, *args, **kwargs) # передать управление во вьюху и вернуть ее результат # конкретная вьюха
handler = getattr(views, kwargs['oper'])
# передать управление во вьюху и вернуть ее результат
return handler(request, *args, **kwargs)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------

@ -37,6 +37,7 @@ from docs import filters
from customer.decorators import license_required from customer.decorators import license_required
from customer.utils import raise_if_no_profile from customer.utils import raise_if_no_profile
from django.conf import settings
DEBUG = getattr(settings, 'DEBUG', False) DEBUG = getattr(settings, 'DEBUG', False)
@ -91,7 +92,7 @@ class BaseViews(object):
TEMPLATE_EMAIL = 'docs/email/base_email.html' TEMPLATE_EMAIL = 'docs/email/base_email.html'
TEMPLATE_EMAIL_FORM = 'docs/email/base_email_form.html' TEMPLATE_EMAIL_FORM = 'docs/email/base_email_form.html'
EMAIL_MSG_TEMPLATE = 'docs/email/email.txt' # шаблон письма EMAIL_MSG_TEMPLATE = 'docs/email/email.txt' # шаблон письма
# для генерации pdf/xls # для генерации pdf/xls
PDF_TEMPLATE = '' PDF_TEMPLATE = ''
@ -184,7 +185,7 @@ class BaseViews(object):
def get_filename(self, *args, **kwargs): def get_filename(self, *args, **kwargs):
obj = self.get_obj(kwargs['id']) obj = self.get_obj(kwargs['id'])
client = obj.client.name.replace('\n',' ').replace('\r',' ').strip() client = obj.client.name.replace('\n', ' ').replace('\r', ' ').strip()
return self.FILENAME % (obj.doc_num, client,) return self.FILENAME % (obj.doc_num, client,)
def update_list_dict(self, dictionary): def update_list_dict(self, dictionary):
@ -200,7 +201,7 @@ class BaseViews(object):
# фильтрация списка # фильтрация списка
filters = self.get_filters(obj_list) filters = self.get_filters(obj_list)
obj_list_count_before_filtering = 0 # сколько записей было в списке до его фильтрации obj_list_count_before_filtering = 0 # сколько записей было в списке до его фильтрации
if not filters.qs: if not filters.qs:
obj_list_count_before_filtering = obj_list.count() obj_list_count_before_filtering = obj_list.count()
obj_list = filters.qs obj_list = filters.qs
@ -344,13 +345,6 @@ class BaseViews(object):
} }
return HttpResponse(json.dumps(result), content_type='application/json') return HttpResponse(json.dumps(result), content_type='application/json')
#dictionary = {
# 'padeji': self.PADEJI,
# 'padeji_mnoj': self.PADEJI_MNOJ,
# 'obj': obj,
#}
#return render(self.request, self.TEMPLATE_DELETE, dictionary)
def prepare(self, obj, export_to=None): def prepare(self, obj, export_to=None):
"""Изменить/подмешать дополнительные поля к документу.""" """Изменить/подмешать дополнительные поля к документу."""
pass pass
@ -596,12 +590,12 @@ class BaseViews(object):
class BaseItemsViews(BaseViews): class BaseItemsViews(BaseViews):
"""Базовые views для документов с табличной частью.""" """Базовые views для документов с табличной частью."""
ITEM_MODEL = None # модель табличной части документа ITEM_MODEL = None # модель табличной части документа
ITEM_FORM_CLASS = None # форма табличной части документа ITEM_FORM_CLASS = None # форма табличной части документа
ITEM_FORM_PREFIX = None # префикс формы табличной части ITEM_FORM_PREFIX = None # префикс формы табличной части
# по какому полю суммировать табличную часть при показе списка документов # по какому полю суммировать табличную часть при показе списка документов
LIST_SUM_FIELD = None # None или строка LIST_SUM_FIELD = None # None или строка
def __init__(self, request): def __init__(self, request):
super(BaseItemsViews, self).__init__(request) super(BaseItemsViews, self).__init__(request)
@ -696,6 +690,7 @@ class BaseItemsViews(BaseViews):
'client_form': ClientForm(), 'client_form': ClientForm(),
'receiver_choice': receiver_choice, 'receiver_choice': receiver_choice,
'sender_choice': sender_choice, 'sender_choice': sender_choice,
'dadata_api_key': settings.DADATA_API_KEY,
} }
return render(self.request, self.TEMPLATE_ADD, dictionary) return render(self.request, self.TEMPLATE_ADD, dictionary)
@ -806,6 +801,7 @@ class BaseItemsViews(BaseViews):
'client_form': ClientForm(), 'client_form': ClientForm(),
'receiver_choice': receiver_choice, 'receiver_choice': receiver_choice,
'sender_choice': sender_choice, 'sender_choice': sender_choice,
'dadata_api_key': settings.DADATA_API_KEY,
} }
return render(self.request, self.TEMPLATE_EDIT, dictionary) return render(self.request, self.TEMPLATE_EDIT, dictionary)

@ -1,7 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Django settings for project project.
import os import os
import sys import sys
from datetime import timedelta from datetime import timedelta
@ -22,12 +20,6 @@ SECRET_KEY = e.get('DJANGO_SECRET')
DEBUG = False DEBUG = False
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
# Hosts/domain names that are valid for this site; required if DEBUG is False # Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts

@ -4,24 +4,26 @@ import dj_database_url
from dokumentor.settings.base import * from dokumentor.settings.base import *
def custom_show_toolbar(self):
return True
DEBUG = True DEBUG = True
if DEBUG: if DEBUG:
INSTALLED_APPS.append('debug_toolbar') INSTALLED_APPS.append('debug_toolbar')
MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware') MIDDLEWARE_CLASSES.append('debug_toolbar.middleware.DebugToolbarMiddleware')
INTERNAL_IPS = ['127.0.0.1', '0.0.0.0']
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
}
DATABASES = { DATABASES = {
'default': dj_database_url.parse(e.get('DJANGO_DB')), 'default': dj_database_url.parse(e.get('DJANGO_DB')),
} }
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/tmp/django_cache_garpun',
}
}
EMAIL_BACKEND = 'eml_email_backend.EmailBackend' EMAIL_BACKEND = 'eml_email_backend.EmailBackend'
EMAIL_FILE_PATH = os.path.join(ROOT_DIR, 'tmp_emails') EMAIL_FILE_PATH = os.path.join(ROOT_DIR, 'tmp_emails')
INTERNAL_IPS = ['127.0.0.1']

@ -12,7 +12,7 @@ $(document).ready(function() {
bankBic = $("#id_bank_bik", clientForm), bankBic = $("#id_bank_bik", clientForm),
bankFullName = $("#id_bank_name", clientForm), bankFullName = $("#id_bank_name", clientForm),
bankCorrespondentAccount = $("#id_bank_korr_account", clientForm), bankCorrespondentAccount = $("#id_bank_korr_account", clientForm),
//clientInputs = [clientName, clientInn, clientOqrn, clientAddress]; contactName = $("#id_contact_name", clientForm),
clientInputs = [clientName, clientNameShort, clientNameShortD, clientInn, clientOqrn, clientAddress]; clientInputs = [clientName, clientNameShort, clientNameShortD, clientInn, clientOqrn, clientAddress];
@ -60,15 +60,28 @@ $(document).ready(function() {
function changeDataInInputs(data) { function changeDataInInputs(data) {
if (data.type === "LEGAL"|| data.type === "INDIVIDUAL" ) { if (data.type === "LEGAL"|| data.type === "INDIVIDUAL" ) {
console.log(data); //console.log(data);
if (data.name) if (data.name) {
clientName.val(join([data.opf && data.opf.short || "", data.name.short || data.name.full], " ")); clientName.val(join([data.opf && data.opf.short || "", data.name.short || data.name.full], " "));
clientNameShort.val(data.name.short); clientNameShort.val(data.name.short);
clientNameShortD.val(data.name.short); clientNameShortD.val(data.name.short);
if (data.name && data.name.full) }
if (data.name && data.name.full) {
clientName.val(join([data.opf && data.opf.full || "", data.name.full], " ")); clientName.val(join([data.opf && data.opf.full || "", data.name.full], " "));
clientNameShort.val(data.name.short); clientNameShort.val(data.name.short);
clientNameShortD.val(data.name.short_with_opf); clientNameShortD.val(data.name.short_with_opf);
}
// fill contact name for organizations
if (data.management && data.management.name) {
contactName.val(getShortPersonName(data.management.name));
}
// fill contact name for individual entrepreneur
if (data.type === "INDIVIDUAL" && data.name && data.name.full) {
contactName.val(getShortPersonName(data.name.full));
}
clientInn.val(data.inn); clientInn.val(data.inn);
clientKpp.val(data.kpp); clientKpp.val(data.kpp);
@ -126,7 +139,7 @@ $(document).ready(function() {
})); }));
clientSearch.on('keyup',(function () { clientSearch.on('keyup',(function () {
//console.log(clientSearch.val());
if (clientSearch.val().length === 0) { if (clientSearch.val().length === 0) {
clearSearchInputs([clientName, clientInn, clientKpp, clientOqrn, clientAddress]); clearSearchInputs([clientName, clientInn, clientKpp, clientOqrn, clientAddress]);
} else { } else {
@ -137,4 +150,4 @@ $(document).ready(function() {
fillInput(clientSearch, "PARTY", 5); fillInput(clientSearch, "PARTY", 5);
fillInput(bankSearch, "BANK", 1); fillInput(bankSearch, "BANK", 1);
}); });

@ -23,7 +23,7 @@ $(document).ready(function() {
},*/ },*/
success: function(data) { success: function(data) {
clear_form_errors(form); clear_form_errors(form);
if (data.success) { if (data.success) {
console.log('!!!!!!!!!!!!!!!!!!!'); console.log('!!!!!!!!!!!!!!!!!!!');
console.log(data); console.log(data);
@ -32,7 +32,7 @@ $(document).ready(function() {
$('#id_client-deck').html( $('#id_client-deck').html(
'<span class="div hilight" data-value='+ data.id + '<span class="div hilight" data-value='+ data.id +
'><span class="remove div" style="display: inline;">X</span>' + data.name + '</span>'); '><span class="remove div" style="display: inline;">X</span>' + data.name + '</span>');
$('#id_client').html('<option selected="selected" value="'+ data.id +'"></option>'); $('#id_client').html('<option selected="selected" value="'+ data.id +'"></option>');
$('#id_client').trigger('change'); $('#id_client').trigger('change');
} }
@ -49,17 +49,17 @@ $(document).ready(function() {
dlg_msg.dialog('open'); dlg_msg.dialog('open');
} }
} }
if (data.action){ if (data.action){
if (data.action == 'client-add'){ if (data.action == 'client-add'){
$(data.row_html).insertAfter('#clients_header_row'); $(data.row_html).insertAfter('#clients_header_row');
window.clients_edit_del_update(); window.clients_edit_del_update();
$('table#clients').show(); $('table#clients').show();
} }
if (data.action == 'client-edit'){ if (data.action == 'client-edit'){
$("tr#client_" + data.id).replaceWith(data.row_html); $("tr#client_" + data.id).replaceWith(data.row_html);
window.clients_edit_del_update(); window.clients_edit_del_update();
} }
if (data.action == 'client-delete'){ if (data.action == 'client-delete'){
$("tr#client_" + data.id).remove(); $("tr#client_" + data.id).remove();
} }
} }
@ -71,7 +71,7 @@ $(document).ready(function() {
// process form errors // process form errors
if (data.form_errors) { if (data.form_errors) {
var captcha = $(form).find('img.captcha'); var captcha = $(form).find('img.captcha');
if (captcha) { if (captcha) {
$(form).find('a.captcha_refresh').click(); $(form).find('a.captcha_refresh').click();
} }
var errors = $('.errors-layout', form); var errors = $('.errors-layout', form);
@ -111,8 +111,6 @@ $(document).ready(function() {
dlg_msg.dialog({ dlg_msg.dialog({
modal: true, modal: true,
autoOpen: false, autoOpen: false,
//resizable: false,
//width: 310,
buttons: { buttons: {
'Закрыть': function() { 'Закрыть': function() {
$(this).dialog('close'); $(this).dialog('close');
@ -122,8 +120,6 @@ $(document).ready(function() {
dlg_django_msg.dialog({ dlg_django_msg.dialog({
modal: true, modal: true,
autoOpen: true, autoOpen: true,
//resizable: false,
//width: 310,
buttons: { buttons: {
'Закрыть': function() { 'Закрыть': function() {
$(this).dialog('close'); $(this).dialog('close');
@ -172,6 +168,12 @@ function getPartOfPersonName(fullName, part) {
} }
function getShortPersonName(fullName) {
if (!fullName) return;
return getPartOfPersonName(fullName,0) + ' ' + getPartOfPersonName(fullName,1)[0] + '.' + getPartOfPersonName(fullName,2)[0] + '.';
}
function expandObject(obj, width, align) { function expandObject(obj, width, align) {
obj["templateColWidth"] = width; obj["templateColWidth"] = width;
obj["templateColAlign"] = align; obj["templateColAlign"] = align;
@ -236,4 +238,4 @@ function fillResultSearchBankTemplate(obj) {
} }
bankResultDiv.html(template(obj)); bankResultDiv.html(template(obj));
} }

@ -73,6 +73,7 @@ $(document).ready(function() {
var management = data.management; var management = data.management;
if (management.post) {profileBossTitle.val(data.management.post)} if (management.post) {profileBossTitle.val(data.management.post)}
if (management.name) { if (management.name) {
var fullName = management.name; var fullName = management.name;
profileBossSurname.val(getPartOfPersonName(fullName, 0)); profileBossSurname.val(getPartOfPersonName(fullName, 0));
@ -111,7 +112,6 @@ $(document).ready(function() {
var data = suggestion.data; var data = suggestion.data;
if (!data) return; if (!data) return;
confirmChangeDataPromise(profileInputs).then(function (answer) { confirmChangeDataPromise(profileInputs).then(function (answer) {
if (answer) { if (answer) {
changeDataInInputs(data) changeDataInInputs(data)
@ -155,4 +155,4 @@ $(document).ready(function() {
onSelect: showSuggestion onSelect: showSuggestion
}); });
}); });

@ -1,237 +0,0 @@
{% load my_tags %}
<div class="client-form">
{% if not is_ajax %}
{% if form.non_field_errors %}<p class="error">{{ form.non_field_errors }}</p>{% endif %}
{% endif %}
<form id="client-edit-form" class="client-form{% if is_ajax %} ajax-form{% endif %}" action="" method="post"{% if is_ajax %} title="Добавить / редактировать контрагента"{% endif %}>
{% csrf_token %}
<div class="search__container">
<div class="field">
<div class="left label search__label">
Поиск реквизитов:
</div>
<div class="form-field">
<input id="searchClientInput" class="search__input search__input_long" maxlength="256" autocomplete="off" name="searchClientInput" type="text" placeholder="Введите название в свободной форме, адрес, ИНН или ОГРН">
</div>
<div class="clear"></div>
</div>
</div>
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% if is_ajax %}<div class="errors-layout"></div>{% endif %}
<div class="col1">
<div id="name" class="field">
<div class="left label">
Наименование{% if form.name.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.name }}
{% if not is_ajax %}{{ form.name.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="inn" class="field">
<div class="left label">
ИНН{% if form.inn.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.inn }}
{% if not is_ajax %}{{ form.inn.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="kpp" class="field">
<div class="left label">
КПП{% if form.kpp.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.kpp }}
{% if not is_ajax %}{{ form.kpp.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="ogrn" class="field">
<div class="left label">
ОГРН{% if form.ogrn.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.ogrn }}
{% if not is_ajax %}{{ form.ogrn.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="okpo" class="field">
<div class="left label">
ОКПО{% if form.okpo.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.okpo }}
{% if not is_ajax %}{{ form.okpo.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="address" class="field" style="width: 700px;margin-bottom: 5px;">
<div class="left label">
Юр. адрес{% if form.address.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field ">
{{ form.address }}
{% if not is_ajax %}{{ form.address.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div class="search-bank" style="width: 803px;">
<div class="search__container">
<div class="left label search__label">
Поиск банка:
</div>
<div class="form-field">
<input class="search__input search__input_long" id="searchClientBankInput" placeholder="Введите название, БИК или SWIFT" type="text">
</div>
</div>
<div id="searchBankResult"></div>
</div>
{% if not form.bank_bik.is_hidden %}
<div id="bank_bik" class="field">
<div class="left label">
БИК{% if form.bank_bik.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_bik }}
{% if not is_ajax %}{{ form.bank_bik.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
{% endif %}
{% if not form.bank_name.is_hidden %}
<div id="bank_name" class="field">
<div class="left label">
Наименование банка{% if form.bank_name.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_name }}
{% if not is_ajax %}{{ form.bank_name.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
{% endif %}
{% comment %}
<div id="bank_address" class="field">
<div class="left label">
Местонахождение{% if form.bank_address.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_address }}
{% if not is_ajax %}{{ form.bank_address.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
{% endcomment %}
{% if not form.bank_korr_account.is_hidden %}
<div id="bank_korr_account" class="field">
<div class="left label">
К/сч.{% if form.bank_korr_account.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_korr_account }}
{% if not is_ajax %}{{ form.bank_korr_account.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
{% endif %}
<div id="bank_account" class="field">
<div class="left label">
Р/сч.{% if form.bank_account.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_account }}
{% if not is_ajax %}{{ form.bank_account.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
</div>
<div class="col2">
<div id="contact_name" class="field">
<div class="left label">
Имя{% if form.contact_name.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.contact_name }}
{% if not is_ajax %}{{ form.contact_name.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="contact_email" class="field">
<div class="left label">
E-mail{% if form.contact_email.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.contact_email }}
{% if not is_ajax %}{{ form.contact_email.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="contact_phone" class="field">
<div class="left label">
Телефон{% if form.contact_phone.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.contact_phone }}
{% if not is_ajax %}{{ form.contact_phone.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="contact_skype" class="field">
<div class="left label">
Skype{% if form.contact_skype.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.contact_skype }}
{% if not is_ajax %}{{ form.contact_skype.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
<div id="contact_other" class="field">
<div class="left label">
Другое{% if form.contact_other.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.contact_other }}
{% if not is_ajax %}{{ form.contact_other.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
<div class="buttons">
{% if not is_ajax %}
<input type="submit" name="submit" value="Сохранить" />
<input type="submit" name="_cancel" value="Отмена" />
{% endif %}
</div>
</form>
</div>

@ -118,7 +118,7 @@
<div class="col2"> <div class="col2">
<div id="contact_name" class="field"> <div id="contact_name" class="field">
<div class="left label"> <div class="left label">
Имя{% if form.contact_name.field.required %}<span class="required">*</span>{% endif %}: ФИО руководителя{% if form.contact_name.field.required %}<span class="required">*</span>{% endif %}:
</div> </div>
<div class="form-field"> <div class="form-field">
{{ form.contact_name }} {{ form.contact_name }}
@ -224,18 +224,7 @@
<div class="clear"></div> <div class="clear"></div>
</div> </div>
{% endif %} {% endif %}
{% comment %}
<div id="bank_address" class="field">
<div class="left label">
Местонахождение{% if form.bank_address.field.required %}<span class="required">*</span>{% endif %}:
</div>
<div class="form-field">
{{ form.bank_address }}
{% if not is_ajax %}{{ form.bank_address.errors }}{% endif %}
</div>
<div class="clear"></div>
</div>
{% endcomment %}
{% if not form.bank_korr_account.is_hidden %} {% if not form.bank_korr_account.is_hidden %}
<div id="bank_korr_account" class="field"> <div id="bank_korr_account" class="field">

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load pytils_numeral %} {% load pytils_numeral static %}
{% block title %}Купить лицензию{% endblock %} {% block title %}Купить лицензию{% endblock %}
{% block content %} {% block content %}
@ -57,42 +57,42 @@
</div> </div>
<div class='left col'> <div class='left col'>
<div class='col-title'>Интернет-банкинг</div> <div class='col-title'>Интернет-банкинг</div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/alfa.svg' /></div> <div class='left mr-5'><img src="{% static 'img/alfa.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/sber.svg' /></div> <div class='left mr-5'><img src="{% static 'img/sber.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/psb.svg' /></div> <div class='left mr-5'><img src="{% static 'img/psb.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/masterpass.svg' /></div> <div class='left mr-5'><img src="{% static 'img/masterpass.svg' %}"></div>
<div class="clear"></div> <div class="clear"></div>
<div class='col-title'>Банковскими картами</div> <div class='col-title'>Банковскими картами</div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/mir.svg' /></div> <div class='left mr-5'><img src="{% static 'img/mir.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/visa.svg' /></div> <div class='left mr-5'><img src="{% static 'img/visa.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/mastercard.svg' /></div> <div class='left mr-5'><img src="{% static 'img/mastercard.svg' %}" /></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/maestro.svg' /></div> <div class='left mr-5'><img src='{{ STATIC_URL }}/img/maestro.svg' /></div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class='left col'> <div class='left col'>
<div class='col-title'>Электронными деньгами</div> <div class='col-title'>Электронными деньгами</div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/yamoney.svg' /></div> <div class='left mr-5'><img src="{% static 'img/yamoney.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/webmoney.svg' /></div> <div class='left mr-5'><img src="{% static 'img/webmoney.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/qiwi.svg' /></div> <div class='left mr-5'><img src="{% static 'img/qiwi.svg' %}"></div>
<div class="clear"></div> <div class="clear"></div>
<div class='col-title'>Со счёта телефона</div> <div class='col-title'>Со счёта телефона</div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/beel.svg' /></div> <div class='left mr-5'><img src="{% static 'img/beel.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/mts.svg' /></div> <div class='left mr-5'><img src="{% static 'img/mts.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/megafon.svg' /></div> <div class='left mr-5'><img src="{% static 'img/megafon.svg' %}"></div>
<div class="clear"></div> <div class="clear"></div>
<div class='col-title'>Наличными</div> <div class='col-title'>Наличными</div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/comepay.svg' /></div> <div class='left mr-5'><img src="{% static 'img/comepay.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/svyaznoy.svg' /></div> <div class='left mr-5'><img src="{% static 'img/svyaznoy.svg' %}"></div>
<div class='left mr-5'><img src='{{ STATIC_URL }}/img/euroset.svg' /></div> <div class='left mr-5'><img src="{% static 'img/euroset.svg' %}"></div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
{% endblock %} {% endblock %}
{% block js %} {% block js %}
<script src="{{ STATIC_URL }}js/license.js"></script> <script src="{% static 'js/license.js' %}"></script>
{% endblock %} {% endblock %}

@ -1,5 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load pytils_numeral %} {% load pytils_numeral static %}
{% block title %}Мои счета{% endblock %} {% block title %}Мои счета{% endblock %}
{% block content %} {% block content %}
@ -33,5 +33,5 @@
{% endblock %} {% endblock %}
{% block js %} {% block js %}
<script src="{{ STATIC_URL }}js/license.js"></script> <script src="{% static 'js/license.js' %}"></script>
{% endblock %} {% endblock %}

@ -1,4 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load static %}
{% block title %}Добавить {{ padeji.vinit }}{% endblock %} {% block title %}Добавить {{ padeji.vinit }}{% endblock %}
@ -19,8 +20,10 @@
{% endblock %} {% endblock %}
{% block js %} {% block js %}
<script src="{{ STATIC_URL }}js/client.commons.js"></script> <script src="{% static 'js/client.commons.js' %}"></script>
<script src="{{ STATIC_URL }}js/docs/client.form.js"></script> <script src="{% static 'js/docs/client.form.js' %}"></script>
<script src="{% static 'js/lib/jquery.suggestions.min.js' %}"></script>
<script src="{% static 'js/client/search-external-api.js' %}"></script>
{% include 'hbs/bank-tpl.html' %}
{% include form_template_js %} {% include form_template_js %}
{% endblock %} {% endblock %}

@ -1,4 +1,5 @@
{% extends "base.html" %} {% extends "base.html" %}
{% load static %}
{% block title %}Редактировать {{ padeji.vinit }}{% endblock %} {% block title %}Редактировать {{ padeji.vinit }}{% endblock %}
@ -22,8 +23,10 @@
{% endblock %} {% endblock %}
{% block js %} {% block js %}
<script src="{{ STATIC_URL }}js/client.commons.js"></script> <script src="{% static 'js/client.commons.js' %}"></script>
<script src="{{ STATIC_URL }}js/docs/client.form.js"></script> <script src="{% static 'js/docs/client.form.js' %}"></script>
<script src="{% static 'js/lib/jquery.suggestions.min.js' %}"></script>
<script src="{% static 'js/client/search-external-api.js' %}"></script>
{% include 'hbs/bank-tpl.html' %}
{% include form_template_js %} {% include form_template_js %}
{% endblock %} {% endblock %}

@ -95,11 +95,11 @@
'><span class="remove div" style="display: inline;">X</span>' + data[1] + '</span>'); '><span class="remove div" style="display: inline;">X</span>' + data[1] + '</span>');
$('#id_client').html('<option selected="selected" value="'+ data[0] +'"></option>'); $('#id_client').html('<option selected="selected" value="'+ data[0] +'"></option>');
//$('#id_client').trigger('change');
}) });
$.get('/my/docs/ajax_get_tbl_items/' + invoice_id, function(data) { $.get('/my/docs/ajax_get_tbl_items/' + invoice_id, function(data) {
console.log('==================='); //console.log('===================');
var items = JSON.parse(data); var items = JSON.parse(data);
$.each(items, function(index, item){ $.each(items, function(index, item){
var name = item['fields']['name']; var name = item['fields']['name'];
@ -121,8 +121,8 @@
}); });
}) })
}) })
}) });
//var sender_val = $('input:radio[name=sender_group]:checked', '#doc-form').val();
var toggle_sender = function(client_type) { var toggle_sender = function(client_type) {
var sender_val = $('input:radio[name=' + client_type + '_group]:checked', '#doc-form').val(); var sender_val = $('input:radio[name=' + client_type + '_group]:checked', '#doc-form').val();
if (sender_val == 'another') { if (sender_val == 'another') {
@ -130,14 +130,14 @@
} else { } else {
$('#' + client_type).hide() $('#' + client_type).hide()
} }
} };
$.each(['sender', 'receiver'], function(i, client_type){ $.each(['sender', 'receiver'], function(i, client_type){
toggle_sender(client_type); toggle_sender(client_type);
$('input:radio[name=' + client_type + '_group]').change(function(){ $('input:radio[name=' + client_type + '_group]').change(function(){
toggle_sender(client_type); toggle_sender(client_type);
}) })
}) });
if ($('#id_fixes').is(':checked')){ if ($('#id_fixes').is(':checked')){
$('#fix_block').show(); $('#fix_block').show();

Loading…
Cancel
Save