$(document).ready(function() { var clientForm = $("#client-edit-form"), clientSearch = $("#searchClientInput", clientForm), clientName = $("#id_name", clientForm), clientNameShort = $("#id_name_short_self", clientForm), clientNameShortD = $("#id_name_short_dadata", clientForm), clientInn = $("#id_inn", clientForm), clientKpp = $("#id_kpp", clientForm), clientOqrn = $("#id_ogrn", clientForm), clientAddress = $("#id_address", clientForm), bankSearch = $("#searchClientBankInput", clientForm), bankBic = $("#id_bank_bik", clientForm), bankFullName = $("#id_bank_name", clientForm), bankShortName = $("#id_bank_short_name", clientForm), bankCorrespondentAccount = $("#id_bank_korr_account", clientForm), contactName = $("#id_contact_name", clientForm), clientInputs = [clientName, clientNameShort, clientNameShortD, clientInn, clientOqrn, clientAddress]; function confirmChangeDataPromise(inputArray) { var dlg_msg = $('#dialog-message'); var emptyInput = true; var defer = $.Deferred(); for (var i = inputArray.length - 1; i >= 0; --i) { if (inputArray[i].val()) { emptyInput = false; break; } } if (!emptyInput) { dlg_msg.dialog({ title: 'Изменить данные', buttons: {'Да': function(){ defer.resolve(true); $(this).dialog('close'); }, 'Нет': function(){ defer.resolve(false); $(this).dialog('close'); } } }).html('Имеются уже заполненные данные, они будут изменены, продолжить?'); dlg_msg.dialog('open'); } else { defer.resolve(true); } return defer.promise(); } function cleanSearchInput() { clientSearch.val(''); } function changeDataInInputs(data) { if (data.type === "LEGAL"|| data.type === "INDIVIDUAL" ) { if (data.name) { clientName.val(join([data.opf && data.opf.short || "", data.name.short || data.name.full], " ")); clientNameShort.val(data.name.short); clientNameShortD.val(data.name.short); } if (data.name && data.name.full) { clientName.val(join([data.opf && data.opf.full || "",'"' + data.name.full + '"'], " ")); clientNameShort.val(data.name.short); 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)); } // fill self contact name for individual entrepreneur if (data.type === "INDIVIDUAL" && data.name && data.name.full) { var resultName = ''; clientNameShort.val(getShortPersonNameWithOpf(data.name.full, data.opf.short)); } clientInn.val(data.inn); clientKpp.val(data.kpp); clientOqrn.val(data.ogrn); if (data.address) { if (data.address.data.postal_code) { clientAddress.val(data.address.data.postal_code +', ' + data.address.value); } else { clientAddress.val(data.address.value); } } } else { if (data.name && data.name.full || "") { bankFullName.val(data.name && data.name.full || ""); } if (data.name && data.name.payment || "") { bankShortName.val(data.name.payment || ""); } bankBic.val(data.bic); bankCorrespondentAccount.val(data.correspondent_account); var advancedObj = expandObject(data, 118, "right"); fillResultSearchBankTemplate(advancedObj); } } function showSuggestion(suggestion) { var data = suggestion.data; if (!data) return; if (data.type === "LEGAL"|| data.type === "INDIVIDUAL" ) { confirmChangeDataPromise(clientInputs).then(function (answer) { if (answer) { changeDataInInputs(data) } cleanSearchInput(); }) ; } else { changeDataInInputs(data) } } function fillInput(input, type, count) { input.suggestions({ token: daDataExternalApiKey, type: type, count: count, onSelect: showSuggestion }); } function cleanFormErrors() { var formErrors = $('.errors-layout'), inputErrors = $('.ui-state-error'); if (formErrors) { formErrors.hide()} if (inputErrors) {inputErrors.removeClass('ui-state-error')} } bankSearch.on('keyup',(function () { if (bankSearch.val().length === 0) { clearResultSearchDiv($("#searchBankResult")); clearSearchInputs([bankFullName, bankBic, bankCorrespondentAccount]); } })); clientSearch.on('keyup',(function () { cleanFormErrors(); })); fillInput(clientSearch, "PARTY", 5); fillInput(bankSearch, "BANK", 3); });