1/** 2 * «ÐÑпиÑÑ Ð² 1 клик»: поле ÐÐÐ + подÑказки DaData (оÑганизаÑии, ФÐÐ, e-mail). 3 * 4 * ÐÑли Ñказан коÑÑекÑнÑй ÐÐÐ (10 или 12 ÑиÑÑ), заказ ÑÑ Ð¾Ð´Ð¸Ñ ÐºÐ°Ðº «ЮÑидиÑеÑкое 5 * лиÑо» (PERSON_TYPE_ID=2) Ñо ÑпоÑобом оплаÑÑ Â«Ð¡ÑÑÑ Ð½Ð° оплаÑÑ (ÐÐ ÐÑаÑнова 6 * Ð.Ð.)» (PAY_SYSTEM_ID=8 â единÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð¿Ð»Ð°ÑÑжка, доÑÑÑÐ¿Ð½Ð°Ñ ÑÑлиÑам). 7 * РеквизиÑÑ Ð¾ÑганизаÑии ÑеÑÐ²ÐµÑ Ð´Ð¾Ð·Ð°Ð¿Ð¾Ð»Ð½ÑÐµÑ Ð¿Ð¾ ÐÐРв обÑабоÑÑике 8 * OnSaleOrderBeforeSaved (Ñм. /local/php_interface/init.php). 9 * 10 * Файл внеÑний: WAF ÐиÑÑикÑа ÑÐµÐ¶ÐµÑ ÐºÑÑпнÑе инлайн-ÑкÑипÑÑ Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð¾Ð². 11 * ÐонÑиг пеÑедаÑÑÑÑ ÑеÑез window.kadrOcbCfg = {token, personType, paySystem}. 12 */ 13(function () { 14 var CFG = window.kadrOcbCfg || {}; 15 var TOKEN = CFG.token || ''; 16 var PT_ORG = CFG.personType || '2'; 17 var PS_ORG = CFG.paySystem || '8'; 18 var PLUGIN_JS = '/local/js/dadata/16.5.2/js/jquery.suggestions.min.js'; 19 var PLUGIN_CSS = '/local/js/dadata/16.5.2/css/suggestions.css'; 20 var SERVICE_URL = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs'; 21 22 if (!TOKEN) return; 23 24 var pluginPromise = null; 25 function loadPlugin() { 26 if (pluginPromise) return pluginPromise; 27 pluginPromise = new Promise(function (resolve, reject) { 28 if (jQuery.fn && jQuery.fn.suggestions) { resolve(); return; } 29 var css = document.createElement('link'); 30 css.rel = 'stylesheet'; 31 css.href = PLUGIN_CSS; 32 document.head.appendChild(css); 33 jQuery.getScript(PLUGIN_JS) 34 .done(function () { resolve(); }) 35 .fail(function (jqxhr, status, err) { 36 pluginPromise = null; 37 console.error('[OCB INN] suggestions plugin load failed:', status, err); 38 reject(err); 39 }); 40 }); 41 return pluginPromise; 42 } 43 44 function isInn(v) { 45 v = String(v || '').trim(); 46 return /^\d{10}$/.test(v) || /^\d{12}$/.test(v); 47 } 48 49 function setHidden(form, code, value) { 50 var el = form.querySelector('input[name="ONE_CLICK_BUY[' + code + ']"][type="hidden"]'); 51 if (el) el.value = value || ''; 52 } 53 54 function applySwitch(form) { 55 var inn = form.querySelector('#one_click_buy_id_INN'); 56 var pt = form.querySelector('input[name="PERSON_TYPE_ID"]'); 57 var ps = form.querySelector('input[name="PAY_SYSTEM_ID"]'); 58 if (!inn || !pt || !ps) return; 59 if (isInn(inn.value)) { 60 pt.value = PT_ORG; 61 ps.value = PS_ORG; 62 } else { 63 pt.value = pt.dataset.kadrOrig || pt.value; 64 ps.value = ps.dataset.kadrOrig || ps.value; 65 setHidden(form, 'COMPANY', ''); 66 setHidden(form, 'KPP', ''); 67 setHidden(form, 'COMPANY_ADR', ''); 68 var org = form.querySelector('.kadr-inn-org'); 69 if (org) org.style.display = 'none'; 70 } 71 } 72 73 function injectField(form) { 74 if (form.querySelector('#one_click_buy_id_INN')) return; 75 // Ðоле ÐÐÐ â пеÑвÑм, пеÑед Ф.Ð.Ð. (или пеÑвÑм видимÑм полем ÑоÑмÑ) 76 var anchorInput = form.querySelector('#one_click_buy_id_FIO') 77 || form.querySelector('#one_click_buy_id_PHONE') 78 || form.querySelector('#one_click_buy_id_EMAIL'); 79 if (!anchorInput) return; 80 var anchor = anchorInput.closest('.form-control'); 81 if (!anchor) return; 82 83 var wrap = document.createElement('div'); 84 wrap.className = 'form-control bg kadr-inn-control'; 85 wrap.innerHTML = 86 '<label class="description" for="one_click_buy_id_INN">ÐÐÐ</label>' + 87 '<input type="text" name="ONE_CLICK_BUY[INN]" value="" class="inputtext" id="one_click_buy_id_INN" autocomplete="off" maxlength="80">' + 88 '<div class="kadr-inn-hint">ÐÑли нÑжен ÑÑÑÑ Ð½Ð° оÑганизаÑÐ¸Ñ â ÑкажиÑе ÐµÑ ÐÐРили наÑниÑе вводиÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ и вÑбеÑиÑе из ÑпиÑка.</div>' + 89 '<div class="kadr-inn-org" style="display:none;"></div>' + 90 '<input type="hidden" name="ONE_CLICK_BUY[COMPANY]" value="">' + 91 '<input type="hidden" name="ONE_CLICK_BUY[KPP]" value="">' + 92 '<input type="hidden" name="ONE_CLICK_BUY[COMPANY_ADR]" value="">'; 93 anchor.parentNode.insertBefore(wrap, anchor); 94 95 var pt = form.querySelector('input[name="PERSON_TYPE_ID"]'); 96 var ps = form.querySelector('input[name="PAY_SYSTEM_ID"]'); 97 if (pt && !pt.dataset.kadrOrig) pt.dataset.kadrOrig = pt.value; 98 if (ps && !ps.dataset.kadrOrig) ps.dataset.kadrOrig = ps.value; 99 100 var inn = wrap.querySelector('#one_click_buy_id_INN'); 101 inn.addEventListener('input', function () { applySwitch(form); }); 102 inn.addEventListener('change', function () { applySwitch(form); }); 103 } 104 105 function bindSuggest(el, opts) { 106 if (!el || el.dataset.kadrSuggest) return; 107 jQuery(el).suggestions(jQuery.extend({ 108 token: TOKEN, 109 count: 5, 110 serviceUrl: SERVICE_URL 111 }, opts)); 112 el.dataset.kadrSuggest = '1'; 113 } 114
115 function bindAll() { 116 var form = document.getElementById('one_click_buy_form'); 117 if (!form) return; 118 injectField(form); 119 if (form.dataset.kadrInnBound) return; 120 form.dataset.kadrInnBound = '1'; 121 loadPlugin().then(function () { 122 bindSuggest(form.querySelector('#one_click_buy_id_FIO'), { 123 type: 'NAME', 124 onSelect: function (s) { jQuery('#one_click_buy_id_FIO').val(s.value); } 125 }); 126 bindSuggest(form.querySelector('#one_click_buy_id_EMAIL'), { type: 'EMAIL' }); 127 var inn = form.querySelector('#one_click_buy_id_INN'); 128 bindSuggest(inn, { 129 type: 'PARTY', 130 onSelect: function (s) { 131 var d = s.data || {}; 132 if (d.inn) inn.value = d.inn; 133 setHidden(form, 'COMPANY', s.value || ''); 134 setHidden(form, 'KPP', d.kpp || ''); 135 setHidden(form, 'COMPANY_ADR', d.address && (d.address.unrestricted_value || d.address.value) || ''); 136 var org = form.querySelector('.kadr-inn-org'); 137 if (org) { 138 org.textContent = 'СÑÑÑ Ð±ÑÐ´ÐµÑ Ð²ÑÑÑавлен на: ' + (s.value || ''); 139 org.style.display = ''; 140 } 141 applySwitch(form); 142 } 143 }); 144 }).catch(function () {}); 145 } 146 147 (function boot() { 148 if (typeof jQuery === 'undefined' || !document.body) { setTimeout(boot, 200); return; } 149 new MutationObserver(function () { bindAll(); }).observe(document.body, { childList: true, subtree: true }); 150 jQuery(document).ajaxComplete(function () { setTimeout(bindAll, 200); }); 151 bindAll(); 152 })(); 153})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.