PageSourceSearch

https://erus.ru/Areas/PSCHPS/Content/js/item.detail.event.js?v1

js erus.ru collected 2026-10-07 19:35:23 UTC 31,702 bytes, 681 lines download raw bytes

1(function ($) {
2    $.ETC = $.ETC || {};
3    $.ETC.PSCHPS = $.ETC.PSCHPS || {};
4    $.ETC.PSCHPS.Items = $.ETC.PSCHPS.Items || {};
5	$.ETC.PSCHPS.Items.Detail = {
6		initForm: function (frm, data, nameSource, usePropsForAllNameSources) {
7	        var okpd = $('#Model_Okpd', frm.container);
8            var okei = $('#Model_Okei', frm.container);
9            var name = $('#Model_Name', frm.container);
10            var price = $('#Model_Price', frm.container);
11            frm.usePropsForAllNameSources = usePropsForAllNameSources == 1;
12		    $.ETC.EventContainer.init(
13				frm.container
14					.data('init', data)
15					.on('QuantityDefinitionTypeChanged', function (e, quantType) { _setFieldsVisibility(quantType, frm, true, data.FinYear, data.ExecutionYear, data.SchemaVersion); return false;})
16					.on('IsAutoRecalcChanged', function (e, value){ _IsAutoRecalcChanged(frm, value, data.SchemaVersion); return false;})
17					.on('QuantityChanged', function (e, val) { _changeQuantity(data.FinYear, data.ExecutionYear, frm, data.SchemaVersion, val); return false;})
18					.on('NameSourceTypeChanged', function (e, val) { _changeSourceType(frm, data.IsLockPgItemGoodsFields, data.SchemaVersion, val); return false;})
19                    .on('GSPositionChanged', function (e, m)
20                    {
21                        if (m != null)
22                        {
23                            if (okpd != null) 
24                                okpd.DmLookup2({ val: { Key: m.OKPDKey, Version: m.OKPDVersion, DisplayText: m.OKPDDisplayText + ' - ' + m.DisplayText } });
25                            if (okei != null)
26                            {
27                                okei.DmLookup2({ val: { Key: m.OkeiKey, Version: m.OkeiVersion, DisplayText: m.OkeiDisplayText } });
28                                okei.DmLookup2({ setUrlParam: { n: "CategoryKey", v: "" }});
29                            }
30                            if (name!=null)
31                                name.val(m.DisplayText);
32                            if (price != null && m.MaxPrice != null && !isNaN(m.MaxPrice)) {
33                                price.val(m.MaxPrice);
34                            }
35                        }
36                        return false;
37                    })
38                    .on('AmountYearChanged', function (e, value) { _recalcAmount(frm, data.SchemaVersion);  return false;})
39                    .on('QntUndefinedChanged', function (e, value) { _qntUndefinedChanged(frm, value, data.SchemaVersion);return false; })
40                    .on('QuantityYearChanged', function (e, value, rawValue) { _quantityYearChanged(frm, e, value, rawValue, data.SchemaVersion); return false;})
41                    .on('AveragePriceChanged', function (e, value, rawValue) { _setAmountYearsChanged(value, rawValue, frm, data.SchemaVersion); return false;})
42                    .on('QntOtherChanged', function (e, value, rawValue) { _quantityOtherChanged(frm, e, value, rawValue, data.SchemaVersion); return false;})
43                    .on('PriceChanged', function (e, eventType) { _recalcAmount(frm, data.SchemaVersion); return false; })
44                    .on('OkpdChanged', function (e, value) { _OkpdChanged(frm, value); })
45                    .on('CategoryChanged', function (e, value) { _CategoryChanged(frm, value); })
46
47			);
48
49		    
50		    var valCheck    = $('input[name="Model.QuantityDefinitionType"]:checked', frm.container).val();
51		    _setFieldsVisibility(valCheck, frm, false, data.FinYear, data.ExecutionYear, data.SchemaVersion);
52
53		    _recalcAmount(frm, data.SchemaVersion);
54            $('#Model_LotNumber', frm.container).attr("readonly", true);
55			$('#Model_CategoryText', frm.container).prop("disabled", true);
56
57			_setNameSource(frm, nameSource, data.SchemaVersion);
58
59			frm.CASHE               = {};
60			frm.CASHE.qntElements   = null;
61	        frm.CASHE.qntOtherYear  = null;
62	        frm.CASHE.qntElement    = null;
63
64		}
65    };
66
67    function _OkpdChanged(frm, val)
68    {
69        var gsPosition  = $('#Model_GSPosition', frm.container);
70        if (val != null && val != undefined && val.Code != null && val.Code != '' && val.Code != undefined) {
71            var okei = $('#Model_Okei', frm.container);
72            var ktru = $('#Model_Category', frm.container);
73
74            if (ktru != null && ktru != undefined) {
75                ktru.DmLookup2({ 'clear': true });
76
77                var nameC = $('#Model_Name', frm.container);
78                nameC.text(val.Text);
79                nameC.html(val.Text);
80                nameC.prop('readonly', false);
81            }
82            if (gsPosition != null) {
83                gsPosition.DmLookup2({ setUrlParam: { n: "okpdCode", v: val.Code } });
84            }
85            okei.DmLookup2({ setUrlParam: { n: "CategoryKey", v: "" } });
86        } else {
87            if (gsPosition != null) {
88                gsPosition.DmLookup2({ setUrlParam: { n: "okpdCode", v: "" }});
89            }
90
91        }
92    }
93
94
95    function _CategoryChanged(frm, vv)
96    {
97        var nameC         = $('#Model_Name', frm.container);
98        var nameSource = $('#Model_NameSource', frm.container);
99        var okei = $('#Model_Okei', frm.container);
100        if (vv!=null && vv!=undefined && vv.Key!=null && vv.Key!='' && vv.Key!=undefined)
101        {
102            var okpdl         = $('#Model_Okpd', frm.container);
103            if (!okpdl.is('Div'))
104            {
105                okpdl.html(vv.OkpdDislpayText);
106            }else
107            {            
108                okpdl.DmLookup2({ 'clear': true });
109                okpdl.DmLookup2({ 'insertData': { 'DisplayText': vv.OkpdDislpayText, 'Key': vv.OkpdKey, 'Version': vv.OkpdVersion } });
110            }
111
112            
113            nameC.text(vv.Text);
114            nameC.html(vv.Text);
115            nameC.val(vv.Text);
116            nameC.prop('readonly', true);
117            //NameSource.val('')
118            okei.DmLookup2({ 'clear': true });
119            okei.DmLookup2({ setUrlParam: { n: "CategoryKey", v: vv.Key }});
120        } else {
121            //okei.DmLookup2({ 'clear': true });
122            okei.DmLookup2({ setUrlParam: { n: "CategoryKey", v: "" }});
123            nameC.prop('readonly', false);
124        }
125    }
126
127
128	function getBool(value)
129	{
130	    return value == true || value == "true";
131	}
132
133	function _IsAutoRecalcChanged(frm, value, schemaVersion)
134	{
135        $('#Model_Amount', frm.container).attr("readonly", value);
136        if ($('#Model_QntOtherYear', frm.container).length > 0
137            || $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).length > 0)
138        {
139            $('#Model_Amount', frm.container).attr("readonly", true);
140        }
141        $("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).attr("readonly", value);
142        $('#Model_AmountOtherYear', frm.container).attr("readonly", value);
143
144        if (getBool(value))
145        {
146            _recalcAmount(frm, schemaVersion);
147        } else
148        {
149            var quantityDef = $('input[name="Model.QuantityDefinitionType"]:checked', frm.container).val();
150			if (quantityDef == 2 && value==false) 
151			{ 
152				$.Dm.Notify({ html: "ЕИС не допускается размещение извещения о закупке, лот которой содержит позиции со стоимостью, не равной произведению цены за единицу и количества товара, работы, услуги. Стоимость позиции лота соответствует максимальному объему оплаты по контракту для товара, работы, услуги позиции плана-графика. Вы действительно хотите отменить автоматический расчет максимального объема оплаты по контракту?", timeout: -1, keys: { "Отмена": function () { $('#Model_isAutoRecalcAmount').prop("checked", true); }, "Продолжить": function () { null; } } });
153			}
154        }
155	}
156
157	function _quantityOtherChanged(frm, e, value, rawValue, schemaVersion)
158	{
159	    _setQuantity(frm, e, value, rawValue, schemaVersion);
160
161	    var isAutoRecalc = getBool($('input[name="Model.isAutoRecalcAmount"]:checked', frm.container).val());
162	    if (isAutoRecalc == true)
163	    {
164	        var _averagePrice = $('#Model_AveragePrice', frm.container);
165	        if (rawValue != "" && _averagePrice.val() != "") {
166	            var amountOther = Math.round(Num.mul(Num.mul(value, _averagePrice.valToNumber()), 100)) / 100;
167	            if (isNaN(amountOther)) {
168	                $('#Model_AmountOtherYear', frm.container).val("");
169	            } else {
170	                $('#Model_AmountOtherYear', frm.container).val(amountOther.toFixed(2));
171	                if (amountOther > 0)
172	                    $('#Model_AmountOtherYear', frm.container).formatNumber();
173	            }
174	        } else {
175	            $('#Model_AmountOtherYear', frm.container).val("");
176	        }
177	    }
178	    if (value>0)
179	    {
180            frm.toggleReq({
181	            AmountOtherYear: '!'
182	        });
183	    } else {
184	        frm.toggleReq({
185	            AmountOtherYear: ''
186	        });
187	    }
188        _recalcAmount(frm, schemaVersion);
189	}
190
191	function _setAmountYearsChanged(value, rawValue, frm, schemaVersion)
192	{
193	    var qntYears = $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).each(function () {
194	        var qnt         = $(this);
195	        var target = splitTarget($(this).attr('id'));            
196            if (qnt.val() != "" && rawValue != "")
197            {
198                var amountYear = Num.mul(Num.mul(qnt.valToNumber(), value), 100);                
199                if (isNaN(amountYear)) {
200                    $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
201                } else {
202                    amountYear = Math.round(amountYear) / 100;
203                    $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val(amountYear.toFixed(11));
204                    if (amountYear > 0)
205                        $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).formatNumber();
206                }
207	        } else {
208	            $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
209	        }
210	    });
211	    var _qntOtherYear = $('#Model_QntOtherYear', frm.container);
212	    var _averagePrice = $('#Model_AveragePrice', frm.container);
213
214	    if (_qntOtherYear.val() != "" && _averagePrice.val()!="") {
215	        var amountOther = Num.mul(Num.mul(_qntOtherYear.valToNumber(), _averagePrice.valToNumber()), 100);
216	        if (isNaN(amountOther)) {
217	            $('#Model_AmountOtherYear', frm.container).val("");
218	        } else {
219                amountOther = Math.round(amountOther) / 100;
220	            $('#Model_AmountOtherYear', frm.container).val(amountOther.toFixed(2));
221	            if (amountOther > 0)
222	                $('#Model_AmountOtherYear', frm.container).formatNumber();
223	        }
224	    } else {
225	        $('#Model_AmountOtherYear', frm.container).val("");
226	    }
227
228        _recalcAmount(frm, schemaVersion); 
229	}
230
231	function _qntUndefinedChanged(frm, value, schemaVersion)
232	{
233	    value   = getBool(value);
234	    //if (schemaVersion >0)
235	    {
236	        if (value)
237	        {
238	            $('input:radio[name="Model.QuantityDefinitionType"][value="1"]', frm.container).prop('checked', true);
239	            $("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).parent().parent().hide();
240	            $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).parent().parent().hide();
241	            $("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).css('display', 'none');
242	            $("[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).css('display', 'none');
243  	            $("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).parent().parent().hide();
244	            $("[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).parent().parent().hide();
245
246	            //$('#Model_Quantity', frm.container).prop("readonly", true);
247	            //$('#Model_Amounty', frm.container).prop("readonly", true);
248	        }
249	        else
250	        {
251	            $('input:radio[name="Model.QuantityDefinitionType"][value="2"]', frm.container).prop('checked', true);
252	            $("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).parent().parent().show();
253	            $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).parent().parent().show();
254	            $("[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).css('display', '');
255	            $("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).css('display', '');
256                $("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).parent().parent().show();
257	            $("[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).parent().parent().show();
258
259	            //$('#Model_Quantity', frm.container).prop("readonly", false);
260	            //$('#Model_Amounty', frm.container).prop("readonly", false);
261	        }
262	        frm.toggle({
263	            Amount: !value,
264	            AveragePrice: !value,
265	            QntOtherYear: !value,
266	            AmountOtherYear: !value,
267	            Quantity: !value,
268	            QuantityOtherYear: !value,
269	            isAutoRecalcAmount: !value,
270	            //Okei: !value,
271	            Price: value
272	        });
273	        _setFieldsVisibilitySchema1(frm, schemaVersion, true);
274            _recalcAmount(frm, schemaVersion); 
275	    }
276	}
277
278	function _setNameSource(frm, numCodeSource, schemaVersion) {
279		for (c1 = 0; c1 < numCodeSource.length; ++c1) {
280		    var option = $('#Model_NameSource option[value="' + numCodeSource[c1] + '"]', frm.container);
281			option.remove();
282		}
283	}
284
285	function _setFieldsVisibility(type, frm, cleanValues, finYear, executionYear, schemaVersion)
286	{
287	    var blockQntCurrentYear     = false;
288	    if (executionYear != 0 && finYear == executionYear)
289	    {
290	        blockQntCurrentYear     = true;
291	    }
292		switch (type)
293		{
294			case "1":
295				{
296				    $('#Model_QuantityInfo', frm.container).prop("disabled", false);
297				    $('#Model_Quantity', frm.container).prop("readonly", true);
298					if (blockQntCurrentYear)
299					    $('#Model_QuantityCurrentYear', frm.container).prop("readonly", true);
300					if (cleanValues == true)
301					{
302					    if (blockQntCurrentYear)
303					        $('#Model_QuantityCurrentYear', frm.container).val('1.00');
304					    $('#Model_Quantity', frm.container).val('1.00');
305					    $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).val(null);
306					}
307					//frm.toggle({ 'Okei': false });
308					$('#Model_isAutoRecalcAmount', frm.container).prop("disabled", false);
309					//$('#Model_isAutoRecalcAmount').prop("checked", true);
310					$('#Model_Amount', frm.container).attr("readonly", true);
311					$("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).css('display', 'none');
312					_recalcAmount(frm, schemaVersion);
313					break;
314				}
315			case "2":
316			    {
317			        if (!blockQntCurrentYear)
318			            $('#Model_QuantityCurrentYear', frm.container).prop("readonly", false);
319			        $('#Model_Quantity', frm.container).prop("readonly", false);
320			        $('#Model_QuantityInfo', frm.container).prop("disabled", true);
321			        $('#Model_QuantityInfo', frm.container).val('');
322					frm.toggle({ 'Okei': true });
323					$('#Model_isAutoRecalcAmount', frm.container).prop("disabled", false);
324					$("[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).css('display', '');
325			    	// $('#Model_Amount').prop("disabled", false);
326					break;
327				}
328	    }
329	    _setFieldsVisibilitySchema1(frm, schemaVersion);
330
331	};
332
333	function _setFieldsVisibilitySchema1(frm, schemaVersion, onlyVisibility) {
334        var qntUndefined = getBool($('input[name="Model.QntUndefined"]:checked', frm.container).val());
335
336            if (onlyVisibility!=true)
337                _qntUndefinedChanged(frm, qntUndefined, schemaVersion);
338
339            $('#Model_Amount', frm.container).attr("readonly", true);
340
341            //если есть группа полей с количеством по годам, то Quantity - РО
342		    if ($('#Model_QntOtherYear', frm.container).length > 0
343                    || $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).length > 0)
344		    {
345			    $('#Model_Quantity', frm.container).attr("readonly", true);
346                $('#Model_Amount', frm.container).attr("readonly", true);
347		    } else {
348                $('#Model_Quantity', frm.container).attr("readonly", false);
349                $('#Model_Amount', frm.container).attr("readonly", false);
350
351            }
352
353		    var isAutoRecalcChangedValue = getBool($('input[name="Model.isAutoRecalcAmount"]:checked', frm.container).val());
354
355            $('#Model_Amount', frm.container).attr("readonly", isAutoRecalcChangedValue);
356            if ($('#Model_QntOtherYear', frm.container).length > 0
357                || $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).length > 0)
358            {
359                $('#Model_Amount', frm.container).attr("readonly", true);
360            }
361            $("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).attr("readonly", isAutoRecalcChangedValue);
362            $('#Model_AmountOtherYear', frm.container).attr("readonly", isAutoRecalcChangedValue);
363
364            if (onlyVisibility!=true && isAutoRecalcChangedValue == true)
365            {
366                _recalcAmount(frm, schemaVersion);
367            }
368	}
369
370	function _quantityYearChanged(frm, e, value, rawValue, schemaVersion) {
371	    _setQuantity(frm, e, value, rawValue,  schemaVersion);
372
373	    var isAutoRecalc = getBool($('input[name="Model.isAutoRecalcAmount"]:checked', frm.container).val());
374
375	    if (isAutoRecalc) {
376	        var target = splitTarget(e.target.id);
377
378	        var averageAmount = $('#Model_AveragePrice', frm.container);
379	        
380	        if (rawValue != "" && averageAmount.val() != "") {
381	            var amountYear = Num.mul(Num.mul(averageAmount.valToNumber(), value), 100);
382	            if (isNaN(amountYear)) {
383	                $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
384	            } else {
385	                amountYear = Math.round(amountYear) / 100;
386	                $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val(amountYear.toFixed(2));
387	                if (amountYear >= 0)
388	                    $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).formatNumber();
389	            }
390	        } else {
391	            $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
392	        }
393	        _recalcAmount(frm, schemaVersion);
394	    }
395	}
396
397	var setQuantityId;
398	var cnt = 0;
399	function _setQuantity(frm, e, value, rawValue, schemaVersion) {
400
401	    cnt++;
402	    var ccnt = cnt;
403	    //clearTimeout(setQuantityId);
404	    var ffunction = function () {
405	        console.log(ccnt, cnt);
406
407	        if (frm.CASHE.qntElements == null) {
408	            frm.CASHE.qntElements = $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container);
409	            frm.CASHE.qntOtherYear = $('#Model_QntOtherYear', frm.container);
410	            frm.CASHE.qntElement = $('#Model_Quantity', frm.container);
411	        }
412	        var totalQuantity = 0;
413
414	        frm.CASHE.qntElements.each(function () {
415	            var val = $(this).valToNumber();
416	            if (isNaN(val) || val == null)
417	                val = 0;
418	            totalQuantity = Num.add(totalQuantity , val);
419	        });
420	        var qntOtherFromCashe = frm.CASHE.qntOtherYear.valToNumber();
421	        if (isNaN(qntOtherFromCashe) || qntOtherFromCashe == null)
422	            qntOtherFromCashe = 0;
423	        totalQuantity = Num.add(totalQuantity, qntOtherFromCashe);
424
425	        frm.CASHE.qntElement.val(totalQuantity.toFixed(11));
426	    };
427	    ffunction();
428	    setQuantityId = setTimeout(ffunction, 500);	   
429	}
430
431	function splitTarget(id) {
432	    var splitArray = id.split("_");
433	    if (splitArray.length < 3) {
434	        return "";
435	    } else {
436	        return splitArray[2];
437	    }
438	}
439
440	function _recalcAmount(frm, schemaVersion)
441	{
442        return _recalcAmount_Default(frm);
443	}
444
445	function _recalcAmount_Default(frm)
446    {
447        var isAutoRecalcInput   = $('input[name="Model.isAutoRecalcAmount"]:checked', frm.container);
448        var isAutoRecalc        = getBool(isAutoRecalcInput.val());        
449
450	    var amount              = 0;
451	    var priceVal            = 0;
452	    var hasManyYears        = $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).length>0;
453	    if (!hasManyYears
454            && $('#Model_QntOtherYear', frm.container).length > 0)
455	    {
456	        hasManyYears = true;
457	    }
458	    var price               = $('input#Model_Price', frm.container);
459	    var qntUndefined        = getBool($('input[name="Model.QntUndefined"]:checked', frm.container).val());
460	    if (!qntUndefined)
461	    {
462	        price               = $('input#Model_AveragePrice', frm.container);
463	    }
464	    if (price.val() != null && price.val() != '')
465	    {
466	        priceVal            = price.valToNumber();
467	    }
468
469	    if (isAutoRecalc && !qntUndefined)
470	    {
471	        var qntYears        = $("input[id^='Model_QuantityByYear'][id$='_Quantity']", frm.container).each(function ()
472	        {
473	            var lqnt = $(this);
474	            if (lqnt.val() != '' && price.val()!='') {
475	                var target = splitTarget($(this).attr('id'));
476	                var amountYear = Num.mul(Num.mul(lqnt.valToNumber(), priceVal), 100);
477	                if (isNaN(amountYear)) {
478	                    $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
479	                } else {
480	                    amountYear = Math.round(amountYear) / 100;
481	                    $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val(amountYear.toFixed(2));
482	                    if (amountYear > 0)
483	                        $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).formatNumber();
484	                }
485	            } else {
486	                $("input[id='Model_QuantityByYear_" + target + "__Amount']", frm.container).val("");
487	            }
488	        });
489	        if ($('#Model_QntOtherYear', frm.container) != null) {
490	            var qntOtherYear = $('#Model_QntOtherYear', frm.container);
491	            if (qntOtherYear.val() != '' && price.val()!='') {
492	                var amountOther = Num.mul(Num.mul(qntOtherYear.valToNumber(), priceVal), 100);
493	                if (isNaN(amountOther)) {
494	                    $('#Model_AmountOtherYear', frm.container).val("");
495	                } else {
496	                    amountOther = Math.round(amountOther) / 100;
497	                    $('#Model_AmountOtherYear', frm.container).val(amountOther.toFixed(2));
498	                    if (amountOther > 0)
499	                        $('#Model_AmountOtherYear', frm.container).formatNumber();
500	                }
501	            } else {
502	                $('#Model_AmountOtherYear', frm.container).val("");
503	            }
504	        }
505		}
506		var totalAmount = 0;
507		if (hasManyYears)
508		{
509		    if ($("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).length != 0)
510		    {
511		        $("input[id^='Model_QuantityByYear'][id$='_Amount']", frm.container).each(function ()
512		        {
513		            var val = $(this).valToNumber();
514		            if (isNaN(val) || val == null)
515		                val = 0;
516		            totalAmount = Num.add(totalAmount , val);
517		        });
518		        var amountOtherYear =  $('#Model_AmountOtherYear', frm.container).valToNumber();
519		        if (isNaN(amountOtherYear) || amountOtherYear==null)
520		            amountOtherYear = 0;
521		        totalAmount = Num.add(totalAmount, amountOtherYear);
522		        if (isNaN(totalAmount)) {
523		            $('#Model_Amount', frm.container).val("");
524		        } else {
525		            $('#Model_Amount', frm.container).val((Math.round(Num.mul(totalAmount, 100)) / 100).toFixed(2));
526		        }
527
528
529		    }
530		} else
531		{
532		    if (isAutoRecalc && !qntUndefined)
533		    {
534		        var qnt = $('input#Model_Quantity', frm.container);
535		        if (qnt.val() != null && price.val()!='')
536		        {
537		            totalAmount = Num.mul(Num.mul(qnt.valToNumber(), priceVal), 100);
538		        } else {
539                    $('#Model_Amount', frm.container).val("");
540		        }
541		        if (isNaN(totalAmount)) {
542		            $('#Model_Amount', frm.container).val("");
543		        } else {
544		            totalAmount = Math.round(totalAmount) / 100;
545		            $('#Model_Amount', frm.container).val(totalAmount.toFixed(2));
546		        }
547		    }
548		}
549		if (!isNaN(totalAmount) && totalAmount > 0) {
550		    $('#Model_Amount', frm.container).formatNumber();
551		}
552	};
553
554    
555
556	function _changeQuantity(fYear, exYear, frm, schemaVersion, val)
557	{
558	    _recalcAmount(frm, schemaVersion);
559	    
560		if (exYear != 0 && fYear == exYear)
561        {
562		    $('#Model_QuantityCurrentYear', frm.container).val($('#Model_Quantity', frm.container).val());
563		}
564	}
565
566	function _changeSourceType(frm, isLockPgItemGoodsFields, schemaVersion, val)
567	{
568		var sourceType = $('#Model_NameSource option:selected', frm.container).val();
569		if (sourceType == undefined)
570			sourceType = val;
571		if (sourceType > 0) {
572			frm.toggle({
573				Name: sourceType == 1 || sourceType == 5 || sourceType == 4,
574				GSPosition: sourceType == 2,
575                Category: sourceType == 5,
576                Okpd: sourceType == 4 || sourceType == 1  || sourceType == 2
577            });
578            $('#Model_Name', frm.container).prop("readonly", sourceType == 5);
579            $("#Model_Name_t", frm.container).html("<span class=\"icon requared\" title=\"Поле обязательно для заполнения\"></span> Наименование товара, работы, услуги");
580            frm.toggleReq({
581				Name: '*'
582			});
583            switch (sourceType+"") {
584                case "1":
585                    var catL = $('#Model_Category', frm.container);
586                    if (catL != null)
587                        catL.DmLookup2({ 'clear': true });
588
589                    var okpdL = $('#Model_Okpd', frm.container);
590                    if (okpdL != null)
591                        okpdL.DmLookup2({ 'clear': true });
592
593                    var gspL = $('#Model_GSPosition', frm.container);
594                    if (gspL != null)
595                        gspL.DmLookup2({ 'clear': true });
596                    if (!frm.usePropsForAllNameSources) {
597                        $("#Model_ItemDetailPropertyListG_c", frm.container).hide();
598                        $("#Model_ItemDetailPropertyList_c", frm.container).hide();
599                    }
600                    $("#Model_FuncCharacteristicsContent", frm.container).hide();
601                    $("#Model_FuncCharacteristicsContent_t", frm.container).hide();
602                    break;
603                case "2":
604                     var catL = $('#Model_Category', frm.container);
605                    if (catL != null) 
606                         catL.DmLookup2({ 'clear': true });
607                    if (!frm.usePropsForAllNameSources) {
608                        $("#Model_ItemDetailPropertyListG_c", frm.container).hide();
609                        $("#Model_ItemDetailPropertyList_c", frm.container).hide();
610                    }
611                    $("#Model_Name_t", frm.container).text("Наименование товара, работы, услуги");
612                    $("#Model_FuncCharacteristicsContent_c", frm.container).show();
613                    $("#Model_FuncCharacteristicsContent_t", frm.container).show();
614                    break;
615                case "3":
616                    var catL = $('#Model_Category', frm.container);
617                    if (catL != null) 
618                        catL.DmLookup2({ 'clear': true });
619
620                    var gspL = $('#Model_GSPosition', frm.container);
621                    if (gspL!=null)
622                        gspL.DmLookup2({ 'clear': true });
623                    if (!frm.usePropsForAllNameSources) {
624                        $("#Model_ItemDetailPropertyListG_c", frm.container).hide();
625                        $("#Model_ItemDetailPropertyList_c", frm.container).hide();
626                    }
627                    $("#Model_FuncCharacteristicsContent_c", frm.container).hide();
628                    $("#Model_FuncCharacteristicsContent_t", frm.container).hide();
629                    break;
630                case "4":
631                    var catL = $('#Model_Category', frm.container);
632                    if (catL != null) 
633                        catL.DmLookup2({ 'clear': true });
634
635                    var gspL = $('#Model_GSPosition', frm.container);
636                    if (gspL!=null)
637                        gspL.DmLookup2({ 'clear': true });
638                    if (!frm.usePropsForAllNameSources) {
639                        $("#Model_ItemDetailPropertyListG_c", frm.container).hide();
640                        $("#Model_ItemDetailPropertyList_c", frm.container).hide();
641                    }
642                    $("#Model_Name_t", frm.container).text("Наименование товара, работы, услуги");
643                    $("#Model_FuncCharacteristicsContent_c", frm.container).show();
644                    $("#Model_FuncCharacteristicsContent_t", frm.container).show();
645                    break;
646                case "5":
647                    var okpdL = $('#Model_Okpd', frm.container);
648                    if (okpdL!=null)
649                        okpdL.DmLookup2({ 'clear': true });
650
651                    var gspL = $('#Model_GSPosition', frm.container);
652                    if (gspL!=null)
653                        gspL.DmLookup2({ 'clear': true });
654                    if (!frm.usePropsForAllNameSources) {
655                        $("#Model_ItemDetailPropertyListG_c", frm.container).show();
656                        $("#Model_ItemDetailPropertyList_c", frm.container).show();
657                    }
658                    $("#Model_FuncCharacteristicsContent_c", frm.container).hide();
659                    $("#Model_FuncCharacteristicsContent_t", frm.container).hide();
660                    break;
661
662            }
663		}
664
665		if (isLockPgItemGoodsFields) {
666			var okpd = $('#Model_Okpd', frm.container);
667			var okei = $('#Model_Okei', frm.container);
668
669			if (sourceType == 2) {
670				okpd.DmLookup2({ enable: false });
671				okei.DmLookup2({ enable: false });
672			} else {
673				okpd.DmLookup2({ enable: true });
674				okei.DmLookup2({ enable: true });
675			}
676			$('#Model_InternationalName', frm.container).prop("readonly", sourceType == 2);
677			$('#Model_MinRequirement', frm.container).prop("readonly", sourceType == 2);
678			$('#Model_Description', frm.container).prop("readonly", sourceType == 2);
679		}
680	}
681})(jQuery);

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.