PageSourceSearch

https://erus.ru/Areas/FKS/Content/js/lot.js?v45

js erus.ru collected 2026-10-07 19:34:45 UTC 78,095 bytes, 1,521 lines download raw bytes

1(function ($) {
2    "use strict";
3	$.ETC						= $.ETC || {};
4	$.ETC.FKS					= $.ETC.FKS || {};
5
6    $.ETC.FKS.Events = {
7        initForm: function (frm, data, nmck) {
8            frm.maxPriceCalcType = -1;
9            frm.readOnly = data.IsReadOnly == true;
10            frm.is223 = data.Is223 == true;
11            frm.Nmck = data.LotNmckSchema3Changed;
12            frm.DisableGrntCustRenewBtn = true;
13            $.ETC.EventContainer.init(
14                frm.container
15                    .data('init', data)
16                    .on('LotPriceTypeChanged', function (e, priceType) { _eventLotPriceTypeChanged(frm, e, priceType); })
17                    .on('DeliveryPlaceIndicationChanged', function (e, deliveryPlaceIndication) { _eventDeliveryPlaceIndicationChanged(frm, e, deliveryPlaceIndication); })
18                    .on('LotQuantityUndefinedChanged', function (e, isUdefined) { _eventLotQuantityUndefinedChanged(frm, e, isUdefined); })
19                    .on('LotOnlyNumericPriceInit', function (e, isOnlyNumericPrice) { _eventLotOnlyNumericPriceInit(frm, e, isOnlyNumericPrice); })
20                    .on('LotGuaranteePayTypeChanged', function (e, payType) { _eventLotGuaranteePayTypeChanged(frm, e, payType); })
21                    .on('LotGarantCntrInit', function (e, payType) { _eventLotGarantCntrInit(frm, e, payType); })
22                    .on('LotGarantAppInit', function (e, payType) { _eventLotGarantAppInit(frm, e, payType); })
23                    .on('LotGarantProvInit', function (e, payType) { _eventLotGarantProvInit(frm, e, payType); })
24                    .on('LotCustomerIsQuantityUndefinedChange', function (e, isUndefined) { _eventLotCustomerIsQuantityUndefinedChange(frm, e, isUndefined); })
25                    .on('LotCustomerIsOverwriteDeliveryPlaceChanged', function (e, isOverwrite) { _eventLotCustomerIsOverwriteDeliveryPlaceChanged(frm, e, isOverwrite); })
26                    .on('LotCustomerIsOverwriteDeliveryTermChanged', function (e, isOverwrite) { _eventLotCustomerIsOverwriteDeliveryTermChanged(frm, e, isOverwrite); })
27                    .on('LotCustomerIsOverwritePaymentTermChanged', function (e, isOverwrite) { _eventLotCustomerIsOverwritePaymentTermChanged(frm, e, isOverwrite); })
28                    .on('LotCustomerIsNeedOverwriteGarantAppChanged', function (e, isNeedOverwrite) { _eventLotCustomerIsNeedOverwriteGarantAppChanged(frm, e, isNeedOverwrite); })
29                    .on('LotCustomerIsNeedOverwriteGarantCntrChanged', function (e, isNeedOverwrite) { _eventLotCustomerIsNeedOverwriteGarantCntrChanged(frm, e, isNeedOverwrite); })
30                    .on('LotCustomerIsNeedOverwriteGarantProvChanged', function (e, isNeedOverwrite) { _eventLotCustomerIsNeedOverwriteGarantProvChanged(frm, e, isNeedOverwrite); })
31                    .on('LotPurchaseFeatureChanged', function (e, data1) { _eventLotPurchaseFeatureChanged(frm, e, data1); })
32                    .on('LotPrefValueAsSelectChanged', function (e, data1) { _lotPrefValueAsSelectChanged(frm, e, data1); })
33                    .on('LotGuaranteeAmountChanged', function (e, amount) { _recalcPercentGarant(frm, e, amount, nmck); })
34                    .on('LotGuaranteePartInPercentsChanged', function (e, percent) { _recalcAmountGarant(frm, e, percent, nmck); })
35                    .on('LotIsNeedOverwriteGarantAppChanged', function (e, isNeedOverwrite) { _eventLotIsNeedOverwriteGarantAppChanged(frm, e, isNeedOverwrite); })
36                    .on('LotIsNeedOverwriteGarantProvChanged', function (e, isNeedOverwrite) { _eventLotIsNeedOverwriteGarantProvChanged(frm, e, isNeedOverwrite); })
37                    .on('LotIsNeedOverwriteGarantCntrChanged', function (e, isNeedOverwrite) { _eventLotIsNeedOverwriteGarantCntrChanged(frm, e, isNeedOverwrite); })
38                    .on('LotGarantRecalcInit', function (e) { _eventLotGarantRecalcInit(frm, nmck); })
39                    .on('LotCustomerPriceTypeChanged', function (e, price) { _eventLotGarantRecalcInit(frm, price); })
40                    .on('LotNmckChanged', function (e, nmck) { _eventLotNmckChanged(frm, nmck); })
41                    .on('LotNoPublicDiscussionChanged', function (e, flag) { _eventLotNoPublicDiscussionChanged(frm, flag); })
42                    .on('LotPublicDiscussionPlaceChanged', function (e, place) { _eventLotPublicDiscussionPlaceChanged(frm, place); })
43                    .on('LotPublicDiscussionNumberChanged', function (e, number) { _eventLotPublicDiscussionNumberChanged(frm, number); })
44                    .on('LotNmckSchema3Changed', function (e, nmck) { _lotNmckSchema3Changed(frm, nmck); })
45                    .on('LotIsNeedPublicDiscussionChanged', function (e, need) { _lotIsNeedPublicDiscussionChanged(frm, need); })
46                    .on('LotIsNeedPublicDiscussionSchema4Changed', function (e, need) { _lotIsNeedPublicDiscussionSchema4Changed(frm, need); })
47                    .on('LotPublicDiscussionPlaceSchema3Changed', function (e, place) { _publicDiscussionPlaceSchema3Changed(frm, place); })
48                    .on('LotPublicDiscussionPlaceSchema4Changed', function (e, place) { _publicDiscussionPlaceSchema4Changed(frm, place); })
49                    .on('PriceProofTypeChanged', function (e, type) { _eventPriceProofTypeChanged(frm, type); })
50                    .on('IsContractLifeCycleChanged', function (e, value) { _eventContractLifeCycleChanged(frm, value); })
51                    .on('ContractMultiInfoChanged', function (e, value) { _contractMultiInfoChanged(frm, value); })
52                    .on('IsLotGarantCntrNotNeedChanged', function (e, value) { _isLotGarantCntrNotNeedChanged(frm, value); })
53                    .on('IsLotCustomerGarantCntrNotNeedChanged', function (e, value) { _isLotCustomerGarantCntrNotNeedChanged(frm, value); })
54                    .on('IsLotCustomerGarantProvNotNeedChanged', function (e, value) { _isLotCustomerGarantProvNotNeedChanged(frm, value); })
55                    .on('IsOnesideRejectionChanged', function (e, value) { _isLotCustomerIsOnesideRejectionChanged(frm, value); })
56                    .on('IsLotGarantPurNotNeedChanged', function (e, value) { _isLotGarantPurNotNeedChanged(frm, value); })
57                    .on('IsLotGarantProvNotNeedChanged', function (e, value) { _isLotGarantProvNotNeedChanged(frm, value); })
58                    .on('IsLotCustomerGarantPurNotNeedChanged', function (e, value) { _isLotCustomerGarantPurNotNeedChanged(frm, value); })
59                    .on('IsMaxPriceCurrencyChanged', function (e, value) { _isMaxPriceCurrencyChanged(frm, value); })
60                    .on('MaxPriceCalcTypeChanged', function (e, value) { _maxPriceCalcTypeChanged(frm, value); })
61                    .on('MaxPriceDateChanged', function (e, value) { _maxPriceDateChanged(frm, value); })
62                    .on('MaxPriceValueChanged', function (e, value) { _maxPriceValueChanged(frm, value); })
63                    .on('MaxPriceCurrencyChanged', function (e, value) { _maxPriceCurrencyChanged(frm, value); })
64                    .on('PriceProposalTypeChanged', function (e, value) { _PriceProposalTypeChanged(frm, value); })
65                    .on('IsPriceDetermWithVatChanged', function (e, value) { _IsPriceDetermWithVatChanged(frm, value); })
66                    .on('IsNmckUndefinedChanged', function (e, value) { _IsNmckUndefinedChanged(frm, value); })
67                    .on('VatRateChanged', function (e, value) { _VatRateChanged(frm, value); })
68                    .on('IsPriceWithVatChanged', function (e, value) { _IsPriceWithVatChanged(frm, value); })
69                    .on('SumVatChanged', function (e, value) { _SumVatChanged(frm, value); })
70                    .on('Lot223GarantCntrInit', function (e, payType) { _eventLot223GarantCntrInit(frm, payType); })
71                    .on('Lot223GarantAppInit', function (e, payType) { _eventLot223GarantAppInit(frm, payType); })
72                    .on('RtsGarantPayTypeChanged', function (e, payType) { _eventRtsLotGuaranteePayTypeChanged(frm, e, payType); })
73                    .on('IsOverwriteGrntCntrCust', function (e, val) { _isOverwriteGrntCntrCust(frm, e, val); })
74                    .on('IsOverwriteGrntAppCust', function (e, val) { _isOverwriteGrntAppCust(frm, e, val); })
75                    .on('IsOverwriteGrntProvCust', function (e, val) { _isOverwriteGrntProvCust(frm, e, val); })
76                    .on('IsDrugPurchaseChanged', function (e, val) { _isDrugPurchaseChanged(frm, e, val); })
77                    .on('IsMedicalCommissionDecisionChanged', function (e, val) { _isMedicalCommissionDecisionChanged(frm, e, val); })
78                    .on('IsTreasurySupportCntrReqChanged', function (e, val) { _isTreasurySupportCntrReqChanged(frm, e, val); })
79                
80
81            );
82
83            function _isMedicalCommissionDecisionChanged(frm, e, val) {
84                if (val == true) {
85                    $("#Model_MedicalDecisionFilesHeader_c", frm.container).show();
86                    $("#Model_MedicalDecisionFiles_c", frm.container).show();
87                } else {
88                    $("#Model_MedicalDecisionFilesHeader_c", frm.container).hide();
89                    $("#Model_MedicalDecisionFiles_c", frm.container).hide();
90                }
91            }
92            function _isTreasurySupportCntrReqChanged(frm, e, val) {
93                frm.toggle({
94                    TreasurySupportContractType: val
95                });
96            }
97            
98
99            function _isDrugPurchaseChanged(frm, e, val) {
100
101                if (val == true) {
102                    $("#Model_IsMedicalCommissionDecisionHeader_c", frm.container).show();
103                    $("#Model_MedicalDecisionFilesHeader_c", frm.container).show();
104                    $("#Model_MedicalDecisionFiles_c", frm.container).show();
105                    _isMedicalCommissionDecisionChanged(frm, e, $('#Model_IsMedicalCommissionDecision', frm.container).is(':checked'))
106
107                } else {
108                    $("#Model_IsMedicalCommissionDecisionHeader_c", frm.container).hide();
109                    $("#Model_MedicalDecisionFilesHeader_c", frm.container).hide();
110                    $("#Model_MedicalDecisionFiles_c", frm.container).hide();
111                }
112                frm.toggle({
113                    IsMedicalCommissionDecision: val
114                });
115            }
116
117            _eventDeliveryPlaceIndicationChangedInit(frm);
118            $('#Model_recalcHref').on('click', function () {
119                calcMaxPriceValue(frm);
120            });
121            _recheckOverwriteGuaranteeCustBtn(frm);
122
123            function _eventRtsLotGuaranteePayTypeChanged(frm, e, payType) {
124                var idElement = e.target.id;
125                if (idElement.indexOf("GarantCntr") != -1) {
126                    _eventLot223GarantCntrInit(frm, payType);
127                } else {
128                    _eventLot223GarantAppInit(frm, payType);
129                }
130            }
131
132            function _eventLot223GarantCntrInit(frm, payType) {
133                $('#Model_GarantCntr_PartInPercents', frm.container).prop('readonly', payType == 1);
134                $('#Model_GarantCntr_Amount', frm.container).prop('readonly', payType == 2);
135                var val = false;
136                if (payType != 1 && payType != 2)
137                    val = true;
138                frm.toggle({
139                    GarantCntr_Amount: !val,
140                    GarantCntr_Percent: !val,
141                    GarantCntr_PartInPercents: !val,
142                    GarantCntr_AdditionalInfoContent: payType != 4,
143                    GarantCntrInfo: payType != 4
144                });
145
146            }
147
148            function _eventLot223GarantAppInit(frm, payType) {
149                $('#Model_GarantApp_PartInPercents', frm.container).prop('readonly', payType == 1);
150                $('#Model_GarantApp_Amount', frm.container).prop('readonly', payType == 2);
151                var val = false;
152                if (payType != 1 && payType != 2 && payType != 3)
153                    val = true;
154                frm.toggle({
155                    GarantApp_Amount: !val,
156                    GarantApp_Percent: !val,
157                    GarantApp_PartInPercents: !val,
158                    GarantApp_AdditionalInfoContent: payType != 4,
159                    GarantAppInfo: payType != 4
160                });
161            }
162
163            function _SumVatChanged(frm, val) {
164                _VatRateChanged(frm, $('#Model_VatRate', frm.container).val());
165            }
166            function _IsPriceWithVatChanged(frm, val) {
167                if (frm.readOnly
168                    || frm.is223 != true)
169                    return;
170                _VatRateChanged(frm, $('#Model_VatRate', frm.container).val());
171            }
172            function _VatRateChanged(frm, val) {
173                $('#Model_SumVat', frm.container).prop("readonly", true);
174                $('#Model_NmckPriceExVat', frm.container).prop("readonly", true);
175
176                if (frm.readOnly
177                    || frm.is223 != true)
178                    return;
179
180                var nmck = frm.Nmck;
181                var isNmckExTax = $('#Model_IsPriceWithVat', frm.container).is(':checked') != true;
182                if ($('#Model_IsMaxPriceCurrency', frm.container).is(':checked'))
183                    nmck = $('#Model_MaxPriceValue', frm.container).val();
184
185                var calcVal = 0;
186                if (nmck != undefined
187                    || !isNaN(nmck)) {
188                    switch (val + '') {
189                        case '1': //0
190
191                            break;
192                        case '2': //10
193                            if (isNmckExTax)
194                                calcVal = Num.div(Math.round(Num.mul(Num.div(Num.mul(nmck, 10), 100), 100)), 100);
195                            else
196                                calcVal = Num.div(Math.round(Num.mul(Num.sub(nmck, Num.div(nmck, 1.1)), 100)), 100);
197                            break;
198                        case '3': //20
199                            if (isNmckExTax)
200                                calcVal = Num.div(Math.round(Num.mul(Num.div(Num.mul(nmck, 20), 100), 100)), 100);
201                            else
202                                calcVal = Num.div(Math.round(Num.mul(Num.sub(nmck, Num.div(nmck, 1.2)), 100)), 100);
203                            break;
204                        case '4': //10/110
205                            if (isNmckExTax)
206                                calcVal = Num.div(Math.round(Num.mul(Num.div(Num.mul(nmck, 10), 110), 100)), 100);
207                            else
208                                calcVal = Num.div(Math.round(Num.mul(Num.sub(nmck, Num.div(nmck, Num.add(1, Num.div(10, 110)))), 100)), 100);
209                            break;
210                        case '5': //20/120
211                            if (isNmckExTax)
212                                calcVal = Num.div(Math.round(Num.mul(Num.div(Num.mul(nmck, 20), 120), 100)), 100);
213                            else
214                                calcVal = Num.div(Math.round(Num.mul(Num.sub(nmck, Num.div(nmck, Num.add(1, Num.div(20, 120)))), 100)), 100);
215                            break;
216                        case '6':
217                            $('#Model_SumVat', frm.container).prop("readonly", false);
218                            calcVal = $('#Model_SumVat', frm.container).val();
219                            if (calcVal == undefined || isNaN(calcVal) || calcVal == "")
220                                calcVal = 0;
221                            break;
222                    }
223                    var nmckExTax = isNmckExTax ? nmck : Num.sub(nmck, calcVal);
224                    if (isNaN(nmckExTax))
225                        nmckExTax = "";
226                    $('#Model_NmckPriceExVat', frm.container).val(nmckExTax);
227                }
228                $('#Model_SumVat', frm.container).val(calcVal);
229            }
230
231            function _PriceProposalTypeChanged(frm, val) {
232
233                frm.toggle({
234                    IsPriceWithVat: val == 0,
235                    IsPriceDetermWithVat: val == 0,
236                    VatRate: val == 0,
237                    SumVat: val == 0,
238                    NmckPriceExVat: val == 0
239                });
240                if (frm.readOnly
241                    || frm.is223 != true)
242                    return;
243                if (val != 0) {
244                    $('#Model_IsPriceDetermWithVat', frm.container).prop("checked", false);
245                    $('#Model_IsPriceDetermWithVat', frm.container).val(false);
246                }
247                _IsPriceDetermWithVatChanged(frm, $('#Model_IsPriceDetermWithVat', frm.container).is(':checked'));
248
249            }
250
251            function _IsPriceDetermWithVatChanged(frm, val) {
252                frm.toggle({
253                    VatRate: val,
254                    SumVat: val,
255                    NmckPriceExVat: val
256                });
257                if (frm.readOnly
258                    || frm.is223 != true)
259                    return;
260
261            }
262
263            function _IsNmckUndefinedChanged(frm, val) {
264
265                frm.toggle({
266                    NmckPrice: !val,
267                    PriceInfo: val
268                });
269                if (frm.readOnly
270                    || frm.is223 != true)
271                    return;
272
273                if (val == true) {
274
275                    $('#Model_IsMaxPriceCurrency', frm.container).prop("checked", false);
276                    $('#Model_IsMaxPriceCurrency', frm.container).val(false);
277                    $('#Model_IsMaxPriceCurrency', frm.container).prop('disabled', true);
278                    _isMaxPriceCurrencyChanged(frm, false);
279
280                    $('#Model_IsPriceDetermWithVat', frm.container).prop("checked", false);
281                    $('#Model_IsPriceDetermWithVat', frm.container).val(false);
282                    $('#Model_IsPriceDetermWithVat', frm.container).prop('disabled', true);
283                    _IsPriceDetermWithVatChanged(frm, false);
284                } else {
285                    $('#Model_IsMaxPriceCurrency', frm.container).prop('disabled', false);
286                    $('#Model_IsPriceDetermWithVat', frm.container).prop('disabled', false);
287                }
288            }
289
290            function _maxPriceCurrencyChanged(frm, val) {
291                if (!frm.readOnly) {
292                    $('#Model_MaxPriceCurrencyRate', frm.container).val("");
293                    $('#Model_MaxPriceValue', frm.container).val("");
294                    $('#Model_MaxPriceCurrencyRateDisplay', frm.container).html("");
295                    $('#Model_MaxPriceValueDisplay', frm.container).html("");
296                    $('#Model_MaxPriceDate', frm.container).val("");
297                    $('#Model_MaxPriceDateDisplay', frm.container).val("");
298                    $('#Model_MaxPriceDateDisplay', frm.container).html("");
299
300                    var dd = $('#Model_MaxPriceDate', frm.container);
301                    if (dd.is('span'))
302                        dd.html("");
303                    else
304                        dd.val("");
305                }
306                calcMaxPriceValue(frm);
307            }
308            function _maxPriceValueChanged(frm, val) {
309                _VatRateChanged(frm, $('#Model_VatRate', frm.container).val());
310            }
311
312            function _contractMultiInfoChanged(frm, value) {
313                frm.toggle({
314                    ContractCount: value == 1,
315                });
316            }
317            function _maxPriceDateChanged(frm, val) {
318                //calcMaxPriceValue(frm);
319                var dd = $('#Model_MaxPriceDateDisplay', frm.container);
320                if (!dd.is('span'))
321                    $('#Model_MaxPriceDateDisplay', frm.container).val(val);
322                else
323                    $('#Model_MaxPriceDateDisplay', frm.container).html(val);
324
325
326            }
327
328            function _eventContractLifeCycleChanged(frm, value) {
329                frm.toggle({
330                    LotContractLifeCycleContainer: value,
331                    LotContractLifeCycle: value,
332                    ContractLcPrice: value,
333                    ContractLcServicePrice: value
334                });
335            }
336
337            function _isLotGarantCntrNotNeedChanged(frm, val) {
338
339                //if (val)
340                //  _initGarantCntr(frm, $("input[name='Model.GarantCntr.PayType']:checked", frm.container).val()));
341
342                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantCntr']:checked", frm.container).val() + '' == 'true';
343                var isNeedOverrideCust = $("input[name='Model.IsOverwriteGrntCntrCust']:checked", frm.container).val() + '' == 'true';
344
345                if (isNeedOverrideCust == false && isNeedOverride == false)
346                    return;
347
348                frm.toggle({
349                    GarantCntr_Procedure: !val,
350                    GarantCntr_SettlementAccount: !val,
351                    GarantCntr_PersonalAccount: !val,
352                    GarantCntr_Bik: !val,
353                    GarantCntr_PayType: !val,
354                    GarantCntr_Amount: !val,
355                    GarantCntr_Percent: !val,
356                    GarantCntr_PartInPercents: !val,
357                    AdvanceInPercents: !val,
358                    //GarantCntrNotNeed: val
359                });
360                if (isNeedOverrideCust == true) {
361                    frm.toggle({
362                        GarantCntr_SettlementAccount: false,
363                        GarantCntr_PersonalAccount: false,
364                        GarantCntr_Bik: false,
365                    });
366                }
367
368            }
369
370            function _isOverwriteGrntAppCust(frm, e, isNeedOverwrite) {
371
372                useLotInfoElementToggle(frm, 'GarantApp', !isNeedOverwrite);
373                frm.toggle({
374                    //GarantApp_Head: isNeedOverwrite,
375                    GarantApp_Procedure: isNeedOverwrite,
376                    GarantApp_SettlementAccount: false,//isNeedOverwrite,
377                    GarantApp_PersonalAccount: false,//isNeedOverwrite,
378                    GarantApp_Bik: false,//isNeedOverwrite,
379                    GarantApp_PayType: isNeedOverwrite,
380                    GarantApp_PartInPercents: isNeedOverwrite,
381                    GarantApp_Amount: isNeedOverwrite,
382                    GarantApp_IsBail: isNeedOverwrite,
383                    GarantApp_AdditionalInfoContent: isNeedOverwrite,
384                    IsGarantPurNotNeed: isNeedOverwrite
385                });
386                var isNeedOverwriteFlag = $("input[id='Model_IsNeedOverwriteGarantApp']", frm.container);
387                if (isNeedOverwrite) {
388                    _isLotGarantPurNotNeedChanged(frm, $("input[name='Model.IsGarantPurNotNeed']:checked", frm.container).val() == 'true');
389
390                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked'))
391                        isNeedOverwriteFlag.prop("checked", false);
392                    if (isNeedOverwriteFlag != null)
393                        isNeedOverwriteFlag.attr("disabled", true);
394                } else {
395                    if (isNeedOverwriteFlag != null)
396                        isNeedOverwriteFlag.removeAttr("disabled");
397                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked')) {
398                        _eventLotIsNeedOverwriteGarantAppChanged(frm, e, true);
399                    }
400                }
401                _recheckOverwriteGuaranteeCustBtn(frm);
402            }
403            function _isOverwriteGrntCntrCust(frm, e, isNeedOverwrite) {
404
405                useLotInfoElementToggle(frm, 'GarantCntr', !isNeedOverwrite);
406                frm.toggle({
407                    GarantCntr_Procedure: isNeedOverwrite,
408                    GarantCntr_SettlementAccount: false,//isNeedOverwrite,
409                    GarantCntr_PersonalAccount: false,//isNeedOverwrite,
410                    GarantCntr_Bik: false,//isNeedOverwrite,
411                    GarantCntr_PayType: isNeedOverwrite,
412                    GarantCntr_PartInPercents: isNeedOverwrite,
413                    GarantCntr_Amount: isNeedOverwrite,
414                    GarantCntr_IsBail: isNeedOverwrite,
415                    GarantCntr_AdditionalInfoContent: isNeedOverwrite,
416                    IsGarantCntrNotNeed: isNeedOverwrite,
417                    //GarantCntrNotNeed: isNeedOverwrite,
418                    AdvanceInPercents: isNeedOverwrite
419                });
420
421                var isNeedOverwriteFlag = $("input[id='Model_IsNeedOverwriteGarantCntr']", frm.container);
422                if (isNeedOverwrite) {
423                    _isLotGarantCntrNotNeedChanged(frm, $("input[name='Model.IsGarantCntrNotNeed']:checked", frm.container).val() == 'true');
424
425                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked'))
426                        isNeedOverwriteFlag.prop("checked", false);
427                    if (isNeedOverwriteFlag != null)
428                        isNeedOverwriteFlag.attr("disabled", true);
429                } else {
430                    if (isNeedOverwriteFlag != null)
431                        isNeedOverwriteFlag.removeAttr("disabled");
432                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked')) {
433                        _eventLotIsNeedOverwriteGarantCntrChanged(frm, e, true);
434                    }
435                }
436                _recheckOverwriteGuaranteeCustBtn(frm);
437            }
438            function _isOverwriteGrntProvCust(frm, e, isNeedOverwrite) {
439                useLotInfoElementToggle(frm, 'GarantProv', !isNeedOverwrite);
440                frm.toggle({
441                    //GarantProv_Head: isNeedOverwrite,
442                    GarantProv_Procedure: isNeedOverwrite,
443                    GarantProv_SettlementAccount: false,//isNeedOverwrite,
444                    GarantProv_PersonalAccount: false,//isNeedOverwrite,
445                    GarantProv_Bik: false,//isNeedOverwrite,
446                    GarantProv_PayType: isNeedOverwrite,
447                    GarantProv_PartInPercents: isNeedOverwrite,
448                    GarantProv_Amount: isNeedOverwrite,
449                    GarantProv_IsBail: isNeedOverwrite,
450                    GarantProv_AdditionalInfoContent: isNeedOverwrite,
451                    IsGarantProvNotNeed: isNeedOverwrite
452                });
453
454                var isNeedOverwriteFlag = $("input[id='Model_IsNeedOverwriteGarantProv']", frm.container);
455                if (isNeedOverwrite) {
456                    _isLotGarantProvNotNeedChanged(frm, $("input[name='Model.IsGarantProvNotNeed']:checked", frm.container).val());
457
458                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked'))
459                        isNeedOverwriteFlag.prop("checked", false);
460                    if (isNeedOverwriteFlag != null)
461                        isNeedOverwriteFlag.attr("disabled", true);
462                } else {
463                    if (isNeedOverwriteFlag != null)
464                        isNeedOverwriteFlag.removeAttr("disabled");
465                    if (isNeedOverwriteFlag != null && isNeedOverwriteFlag.is(':checked')) {
466                        _eventLotIsNeedOverwriteGarantProvChanged(frm, e, true);
467                    }
468                }
469                _recheckOverwriteGuaranteeCustBtn(frm);
470
471            }
472            function _recheckOverwriteGuaranteeCustBtn(frm) {
473                if (frm.readOnly)
474                    return;
475                var btn = $("[name='updateguarantee']", frm.container);
476                if (btn != null) {
477
478                    var isNeedOverwriteAppFlag = $("input[id='Model_IsOverwriteGrntAppCust']", frm.container);
479                    var isNeedOverwriteCntrFlag = $("input[id='Model_IsOverwriteGrntCntrCust']", frm.container);
480                    var isNeedOverwriteProvFlag = $("input[id='Model_IsOverwriteGrntProvCust']", frm.container);
481                    var enabled = (isNeedOverwriteAppFlag != null && isNeedOverwriteAppFlag.is(':checked'))
482                        || (isNeedOverwriteCntrFlag != null && isNeedOverwriteCntrFlag.is(':checked'))
483                        || (isNeedOverwriteProvFlag != null && isNeedOverwriteProvFlag.is(':checked'));
484                
485                    btn.attr("disabled", !enabled);
486                }
487            }
488
489            function _isLotCustomerGarantCntrNotNeedChanged(frm, val) {
490
491                
492                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantCntr']:checked", frm.container).val();
493                
494                if (isNeedOverride == false
495                    || isNeedOverride == undefined)
496                    return;
497
498                frm.toggle({
499                    GarantCntr_Procedure: !val,
500                    GarantCntr_SettlementAccount: !val,
501                    GarantCntr_PersonalAccount: !val,
502                    GarantCntr_Bik: !val,
503                    GarantCntr_IsBail: !val,
504                    GarantCntr_AdditionalInfoContent: !val,
505                    GarantCntr_PayType: !val,
506                    GarantCntr_Amount: !val,
507                    GarantCntr_Percent: !val,
508                    GarantCntr_PartInPercents: !val,
509                    AdvanceInPercents: !val,
510                    //GarantCntrNotNeed: val
511                });
512            }
513
514            function _isLotCustomerIsOnesideRejectionChanged(frm, val) {
515                frm.toggle({
516                    OnesideRejection : val
517                });
518            }
519
520            function _isLotCustomerGarantProvNotNeedChanged(frm, val) {
521
522                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantProv']:checked", frm.container).val();
523
524                if (isNeedOverride == false
525                    || isNeedOverride == undefined)
526                    return;
527
528                frm.toggle({
529                    GarantProv_Procedure: !val,
530                    GarantProv_SettlementAccount: !val,
531                    GarantProv_PersonalAccount: !val,
532                    GarantProv_Bik: !val,
533                    GarantProv_IsBail: !val,
534                    GarantProv_AdditionalInfoContent: !val,
535                    GarantProv_PayType: !val,
536                    GarantProv_Amount: !val,
537                    GarantProv_Percent: !val,
538                    GarantProv_PartInPercents: !val
539                });
540                frm.toggle({
541                    GarantProv_Amount: !val,
542                    GarantProv_Percent: !val
543                });
544
545            }
546
547            function _isLotGarantPurNotNeedChanged(frm, val) {
548
549
550                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantApp']:checked", frm.container).val();
551                var isNeedOverrideCust = $("input[name='Model.IsOverwriteGrntAppCust']:checked", frm.container).val();
552
553                if ((isNeedOverrideCust == 'false'
554                    || isNeedOverrideCust == undefined)
555                    && (isNeedOverride == 'false'
556                        || isNeedOverride == undefined))
557                    return;
558
559                frm.toggle({
560                    GarantApp_Procedure: !val,
561                    GarantApp_SettlementAccount: !val,
562                    GarantApp_PersonalAccount: !val,
563                    GarantApp_Bik: !val,
564                    GarantApp_IsBail: !val,
565                    GarantApp_PayType: !val,
566                    GarantApp_Amount: !val,
567                    GarantApp_Percent: !val,
568                    GarantApp_PartInPercents: !val,
569//                    AdvanceInPercents: !val
570                });
571                if (isNeedOverrideCust == 'true') {
572                    frm.toggle({
573                        GarantApp_SettlementAccount: false,
574                        GarantApp_PersonalAccount: false,
575                        GarantApp_Bik: false,
576                    });
577                }
578
579            }
580
581            function _isLotGarantProvNotNeedChanged(frm, val) {
582
583
584                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantProv']:checked", frm.container).val();
585                var isNeedOverrideCust = $("input[name='Model.IsOverwriteGrntProvCust']:checked", frm.container).val();
586
587                if ((isNeedOverrideCust == 'false'
588                    || isNeedOverrideCust == undefined)
589                    && (isNeedOverride == 'false'
590                        || isNeedOverride == undefined))
591                    return;
592
593                frm.toggle({
594                    GarantProv_Procedure: !val,
595                    GarantProv_SettlementAccount: !val,
596                    GarantProv_PersonalAccount: !val,
597                    GarantProv_Bik: !val,
598                    GarantProv_IsBail: !val,
599                    GarantProv_PayType: !val,
600                    GarantProv_Amount: !val,
601                    GarantProv_Percent: !val,
602                    GarantProv_PartInPercents: !val,
603                    GarantProv_AdditionalInfoContent: !val
604                });
605                if (isNeedOverrideCust == 'true') {
606                    frm.toggle({
607                        GarantProv_SettlementAccount: false,
608                        GarantProv_PersonalAccount: false,
609                        GarantProv_Bik: false
610                    });
611                }
612            }
613            
614            function _isMaxPriceCurrencyChanged(frm, val) {
615                frm.toggle({
616                    MaxPriceCurrency: val,
617                    //MaxPriceDate: val,
618                    MaxPriceDateDisplay: val,
619                    MaxPriceCurrencyRateDisplay: val,
620                    MaxPriceValueDisplay: val
621                });
622                if (frm.is223) {
623                    frm.toggle({
624                        Currency: !val
625                    });
626                }
627                if (val) {
628                    $("#Model_contentRefReniew_c", frm.container).show();
629                    $('#Model_MaxPriceCurrencyRate', frm.container).prop('readonly', true);
630                    $('#Model_MaxPriceValue', frm.container).prop('readonly', true);
631                    $('#Model_MaxPriceCalcType', frm.container).prop('readonly', true);
632
633                    //calcMaxPriceValue(frm);
634                } else {
635                    $("#Model_contentRefReniew_c", frm.container).hide();
636                }
637            }
638            function _maxPriceCalcTypeChanged(frm, val) {
639                $('#Model_MaxPriceCurrencyRate', frm.container).prop('readonly', (val == 0 || val == 2));
640                $('#Model_MaxPriceValue', frm.container).prop('readonly', (val == 0 || val == 1));
641                frm.maxPriceCalcType = val;
642                calcMaxPriceValue(frm);
643            }
644
645            function calcMaxPriceValue(frm) {
646                if (frm.readOnly)
647                    return;
648
649                //if (frm.maxPriceCalcType == 0)
650                {
651                    var lotKey = $('#Model_Key', frm.container).val();
652                    var lotAmount = $('#Model_NmckPrice', frm.container).val();
653                    if ($('#Model_NmckPrice', frm.container).is('Span') && frm.nmck != undefined)
654                        lotAmount = frm.nmck;
655                    var currencyCode = $('#Model_MaxPriceCurrencyCode', frm.container).val();
656                    if (currencyCode != null
657                        && currencyCode != undefined
658                        && currencyCode != "") {
659                        $.ajax({
660                            type: "POST",
661                            url: '/FKS/Home/Lot/GetCurrencyRate',
662                            data: { code: currencyCode, key: lotKey, amount: lotAmount },
663                            dataType: "json",
664                            success: function (data) {
665                                if (data.message != "") {
666                                    $.Dm.Notify(data.message);
667                                } else {
668                                    $('#Model_MaxPriceCurrencyRate', frm.container).val(Number(data.rate).toFixed(4));
669                                    $('#Model_MaxPriceValue', frm.container).val(Number(data.amount).toFixed(2));
670                                    if ($('#Model_VatRate', frm.container) != null) {
671                                        _VatRateChanged(frm, $('#Model_VatRate', frm.container).val());
672                                    }
673                                    $('#Model_MaxPriceCurrencyRateDisplay', frm.container).html(Number(data.rate).toFixed(4));
674                                    $('#Model_MaxPriceValueDisplay', frm.container).html(Number(data.amount).toFixed(2));
675
676                                    var dd = $('#Model_MaxPriceDate', frm.container);
677                                    if (dd.is('span'))
678                                        dd.html(data.rateDate);
679                                    else
680                                        dd.val(data.rateDate).trigger("onchange");
681                                    //$('#Model_MaxPriceDateDisplay', frm.container).val(Model_MaxPriceDateDisplay);
682                                }
683                            },
684                            error: function () {
685                                $.Dm.Notify('Ошибка получения данных о курсе конвертации. Обновите страницу.');
686                            }
687                        });
688                    }
689                }
690            }
691
692
693            function _isLotCustomerGarantPurNotNeedChanged(frm, val) {
694
695                var isNeedOverride = $("input[name='Model.IsNeedOverwriteGarantApp']:checked", frm.container).val();
696
697                if (isNeedOverride == false
698                    || isNeedOverride == undefined)
699                    return;
700
701                frm.toggle({
702                    GarantApp_Procedure: !val,
703                    GarantApp_SettlementAccount: !val,
704                    GarantApp_PersonalAccount: !val,
705                    GarantApp_Bik: !val,
706                    GarantApp_IsBail: !val,
707                    GarantApp_AdditionalInfoContent: !val,
708                    GarantApp_PayType: !val,
709                    GarantApp_Amount: !val,
710                    GarantApp_Percent: !val,
711                    GarantApp_PartInPercents: !val,
712//                    AdvanceInPercents: !val
713                });
714            }
715
716            function _eventPriceProofTypeChanged(frm, type) {
717                frm.toggle({
718                    PriceProof_Description: type == 6
719                });
720            }
721
722            function _eventLotNmckChanged(frm, nmck) {
723                var isVisibleNoPublicDiscussion = _isVisiblePublicDiscussion(frm, nmck);
724                frm.nmck = nmck;
725                frm.toggle({
726                    NoPublicDiscussion: isVisibleNoPublicDiscussion
727                        && $('input[name="Model.PublicDiscussionNumber"]', frm.container).valToNumber() == null
728                        && $('input[name="Model.PublicDiscussionHref"]', frm.container).val() == undefined,
729                    PublicDiscussion_Place: isVisibleNoPublicDiscussion
730                        && $("input#Model_NoPublicDiscussion", frm.container).is(':checked') == 'False'
731                });
732
733                if (!isVisibleNoPublicDiscussion) {
734                    $("input#Model_NoPublicDiscussion", frm.container).prop("checked", "checked");
735                    $('#Model_PublicDiscussion_Place', frm.container).val("")
736                    frm.toggle({
737                        NoPublicDiscussion: false
738                    });
739                } else {
740                    $("input#Model_NoPublicDiscussion", frm.container).prop("checked", false);
741                }
742                _eventLotPublicDiscussionPlaceChanged(frm, $('input[name="Model.PublicDiscussion.Place"]:checked', frm.container).val());
743                _eventLotNoPublicDiscussionChanged(frm, $("input#Model_NoPublicDiscussion", frm.container).is(':checked'));
744            }
745
746            // Определяет видимость блока "Общественное обсуждение"
747            function _isVisiblePublicDiscussion(frm, nmck) {
748                var isVisiblePublicDiscussion = (nmck > 1e9);
749                return isVisiblePublicDiscussion;
750            }
751
752            // Обработчик изменения НМЦК для схемы 3
753            function _lotNmckSchema3Changed(frm, nmck) {
754                var isNeed = $("input#Model_IsNeedPublicDiscussion", frm.container).is(':checked');
755                frm.nmck = nmck;
756                _togglePublicDiscussion(frm, nmck, isNeed);
757                calcMaxPriceValue(frm);
758            }
759
760            // Обработчик изменения флага необходимости общественного обсуждения
761            function _lotIsNeedPublicDiscussionChanged(frm, isNeed) {
762                var nmck = $('input#Model_NmckPrice', frm.container).valToNumber();
763                _togglePublicDiscussion(frm, nmck, isNeed);
764            }
765
766            // Обработчик изменения флага необходимости общественного обсуждения
767            function _lotIsNeedPublicDiscussionSchema4Changed(frm, isNeed) {
768                _togglePublicDiscussionSchema4(frm, isNeed);
769            }
770
771            // Переключение видимости блока общественного обсуждения
772            function _togglePublicDiscussion(frm, nmck, isNeed) {
773                var isVisiblePublicDiscussion = _isVisiblePublicDiscussion(frm, nmck);
774                frm.toggle({
775                    IsNeedPublicDiscussion: isVisiblePublicDiscussion || isNeed,
776                    PublicDiscussion_Place: isNeed
777                });
778                _publicDiscussionPlaceSchema3Changed(frm, $('input[name="Model.PublicDiscussion.Place"]:checked', frm.container).val());
779            }
780
781            function _togglePublicDiscussionSchema4(frm, isNeed) {
782                frm.toggle({
783                    PublicDiscussion_Place2020: isNeed
784                });
785                _publicDiscussionPlaceSchema4Changed(frm, $('input[name="Model.PublicDiscussion.Place2020"]:checked', frm.container).val());
786            }
787
788            // На изменение места проведения публичного обсуждения по схеме 3 и 4 
789            function _publicDiscussionPlaceSchema3Changed(frm, place) {
790                var isNeed = $("input#Model_IsNeedPublicDiscussion", frm.container).is(':checked');
791                frm.toggle({
792                    PublicDiscussion_Number: place == '0' && isNeed,
793                    PublicDiscussion_Href: place == '1' && isNeed
794                });
795            }
796            function _publicDiscussionPlaceSchema4Changed(frm, place) {
797                if (place == undefined)
798                    place = $('input[name="Model.PublicDiscussion.Place2020"]:checked', frm.container).val();
799                var isNeed = $("input#Model_IsNeedPublicDiscussion", frm.container).is(':checked');
800                frm.toggle({
801                    PublicDiscussion_Number2020: place == '0' && isNeed,
802                    PublicDiscussion_Place2020: isNeed
803                });                
804            }
805
806            function _eventLotNoPublicDiscussionChanged(frm, flag) {
807                var nmck = $('input#Model_NmckPrice', frm.container).valToNumber();
808                var isVisibleNoPublicDiscussion = _isVisiblePublicDiscussion(frm, nmck);
809                if (flag) {
810                    $('#Model_PublicDiscussion_Place', frm.container).val("");
811                }
812                frm.toggle({
813                    PublicDiscussion_Place: isVisibleNoPublicDiscussion && !flag
814                });
815
816                _eventLotPublicDiscussionPlaceChanged(frm, $('input[name="Model.PublicDiscussion.Place"]:checked', frm.container).val());
817            }
818
819            function _eventLotPublicDiscussionPlaceChanged(frm, place) {
820                frm.toggle({
821                    PublicDiscussion_Number: place == '0',
822                    PublicDiscussion_Href: place == '1'
823                });
824                if (place == '0')
825                    $('#Model_PublicDiscussion_Href', frm.container).val("");
826                if (place == '1')
827                    $('#Model_PublicDiscussion_Number', frm.container).val("");
828                if (place != "")
829                    _eventLotPublicDiscussionNumberChanged(frm, "");
830            }
831
832            function _eventLotPublicDiscussionNumberChanged(frm, obj) {
833                var nmck = $('input#Model_NmckPrice', frm.container).valToNumber();
834                var isVisibleNoPublicDiscussion = _isVisiblePublicDiscussion(frm, nmck);
835                frm.toggle({
836                    NoPublicDiscussion: isVisibleNoPublicDiscussion && (obj == "" || undefined)
837                });
838            }
839
840            function _eventDeliveryPlaceIndicationChangedInit(frm) {
841                var dp = $("input#Model_DeliveryPlaceIndication_1", frm.container);
842                if (dp.val() != null) {
843                    frm.toggle({
844                        DeliveryPlaceIndication_4: false
845                    });
846                    _eventDeliveryPlaceIndicationChanged(frm, null, dp.is(':checked') ? '1' : '2');
847                }
848            }
849
850            function _eventLotGuaranteePayTypeChanged(frm, e, payType) {
851                var idElement = e.target.id;
852                if (idElement.indexOf("GarantCntr") != -1) {
853                    _initGarantCntr(frm, payType);
854                }
855                else if (idElement.indexOf("GarantProv") != -1) {
856                    _initGarantProv(frm, payType);
857                }else {
858                    _initGarantApp(frm, payType);
859                }
860            }
861            function _eventDeliveryPlaceIndicationChanged(frm, e, deliveryPlaceIndication) {
862                switch (deliveryPlaceIndication) {
863                    case '1':
864                        frm.toggle({
865                            DeliveryPlace: true,
866                            Region: true,
867                            RegionOkato: true
868                        });
869                        break;
870                    case '2':
871                    case '3':
872                        frm.toggle({
873                            DeliveryPlace: false,
874                            Region: false,
875                            RegionOkato: false
876                        });
877                        break;
878                }
879            }
880
881            function _initGarantApp(frm, payType) {
882                $('#Model_GarantApp_PartInPercents', frm.container).prop('readonly', payType == 1);
883                $('#Model_GarantApp_Amount', frm.container).prop('readonly', payType == 2);
884            }
885
886            function _initGarantCntr(frm, payType) {
887                $('#Model_GarantCntr_PartInPercents', frm.container).prop('readonly', payType == 1);
888                $('#Model_GarantCntr_Amount', frm.container).prop('readonly', payType == 2);
889            }
890            function _initGarantProv(frm, payType) {
891                $('#Model_GarantProv_PartInPercents', frm.container).prop('readonly', payType == 1);
892                $('#Model_GarantProv_Amount', frm.container).prop('readonly', payType == 2);
893            }
894
895            function _eventLotGarantCntrInit(frm, e, payType) {
896                _initGarantCntr(frm, payType);
897            }
898
899            function _eventLotGarantAppInit(frm, e, payType) {
900                _initGarantApp(frm, payType);
901            }
902            function _eventLotGarantProvInit(frm, e, payType) {
903                _initGarantProv(frm, payType);
904            }
905
906            function _eventLotOnlyNumericPriceInit(frm, e, isOnlyNumericPrice) {
907                if (isOnlyNumericPrice) {
908                    $('#Model_PriceType_2, #Model_PriceType_3', frm.container).prop('disabled', true);
909                }
910            }
911
912            function _eventLotQuantityUndefinedChanged(frm, e, isUdefined) {
913                frm.toggle({ QuantityInfo: !isUdefined });
914            }
915
916            function _eventLotPriceTypeChanged(frm, e, priceType) {
917                switch (priceType) {
918                    case '1':
919                        frm.toggle({
920                            PriceInfo: false,
921                            Currency: true,
922                            NmckPrice: true
923                        });
924
925                        break;
926                    case '2':
927                        frm.toggle({
928                            PriceInfo: true,
929                            Currency: true,
930                            NmckPrice: false
931                        });
932                        break;
933                    case '3':
934                        frm.toggle({
935                            PriceInfo: false,
936                            Currency: false,
937                            NmckPrice: false
938                        });
939                        break;
940                }
941            }
942
943            function _eventLotCustomerIsQuantityUndefinedChange(frm, e, isUndefined) {
944                frm.toggle({
945                    Quantity: !isUndefined
946                });
947            }
948
949            function _eventLotCustomerIsOverwriteDeliveryPlaceChanged(frm, e, isOverwrite) {
950                useLotInfoElementToggle(frm, 'DeliveryPlace', !isOverwrite);
951                frm.toggle({
952                    DeliveryPlace: isOverwrite
953                });
954            }
955
956            function _eventLotCustomerIsOverwriteDeliveryTermChanged(frm, e, isOverwrite) {
957                useLotInfoElementToggle(frm, 'DeliveryTerm', !isOverwrite);
958                frm.toggle({
959                    DeliveryTerm: isOverwrite
960                });
961            }
962
963            function _eventLotCustomerIsOverwritePaymentTermChanged(frm, e, isOverwrite) {
964                useLotInfoElementToggle(frm, 'PaymentTerm', !isOverwrite);
965                frm.toggle({
966                    PaymentTerm: isOverwrite
967                });
968            }
969
970            function useLotInfoElementToggle(frm, element, isShow) {
971                var el = $('.useLotInfo' + element, frm.container).parent('tr');
972                if (isShow) {
973                    el.show();
974                } else {
975                    el.hide();
976                }
977            }
978
979
980            function _eventLotIsNeedOverwriteGarantAppChanged(frm, e, isNeedOverwrite) {
981                useLotInfoElementToggle(frm, 'GarantApp', !isNeedOverwrite);
982                frm.toggle({
983                    //GarantApp_Head: isNeedOverwrite,
984                    GarantApp_Procedure: isNeedOverwrite,
985                    GarantApp_SettlementAccount: isNeedOverwrite,
986                    GarantApp_PersonalAccount: isNeedOverwrite,
987                    GarantApp_Bik: isNeedOverwrite,
988                    GarantApp_PayType: isNeedOverwrite,
989                    GarantApp_PartInPercents: isNeedOverwrite,
990                    GarantApp_Amount: isNeedOverwrite,
991                    GarantApp_IsBail: isNeedOverwrite,
992                    GarantApp_AdditionalInfoContent: isNeedOverwrite,
993                    IsGarantPurNotNeed: isNeedOverwrite
994                });
995                var isNeedOverwriteCustFlag = $("input[id='Model_IsOverwriteGrntAppCust']", frm.container);
996                if (isNeedOverwrite) {
997                    _isLotGarantPurNotNeedChanged(frm, $("input[name='Model.IsGarantPurNotNeed']:checked", frm.container).val());
998
999                    if (isNeedOverwriteCustFlag != null && isNeedOverwriteCustFlag.is(':checked'))
1000                        isNeedOverwriteCustFlag.prop("checked", false);
1001                    if (isNeedOverwriteCustFlag != null)
1002                        isNeedOverwriteCustFlag.attr("disabled", true);
1003                } else {
1004                    if (isNeedOverwriteCustFlag != null)
1005                        isNeedOverwriteCustFlag.removeAttr("disabled");
1006                }
1007            }
1008
1009            function _eventLotIsNeedOverwriteGarantProvChanged(frm, e, isNeedOverwrite) {
1010                useLotInfoElementToggle(frm, 'GarantProv', !isNeedOverwrite);
1011                frm.toggle({
1012                    //GarantProv_Head: isNeedOverwrite,
1013                    GarantProv_Procedure: isNeedOverwrite,
1014                    GarantProv_SettlementAccount: isNeedOverwrite,
1015                    GarantProv_PersonalAccount: isNeedOverwrite,
1016                    GarantProv_Bik: isNeedOverwrite,
1017                    GarantProv_PayType: isNeedOverwrite,
1018                    GarantProv_PartInPercents: isNeedOverwrite,
1019                    GarantProv_Amount: isNeedOverwrite,
1020                    GarantProv_IsBail: isNeedOverwrite,
1021                    GarantProv_AdditionalInfoContent: isNeedOverwrite,
1022                    IsGarantProvNotNeed: isNeedOverwrite
1023                });
1024
1025                var isNeedOverwriteCustFlag = $("input[id='Model_IsOverwriteGrntProvCust']", frm.container);
1026                if (isNeedOverwrite) {
1027                    _isLotGarantProvNotNeedChanged(frm, $("input[name='Model.IsGarantProvNotNeed']:checked", frm.container).val());
1028
1029                    if (isNeedOverwriteCustFlag != null && isNeedOverwriteCustFlag.is(':checked'))
1030                        isNeedOverwriteCustFlag.prop("checked", false);
1031                    if (isNeedOverwriteCustFlag != null)
1032                        isNeedOverwriteCustFlag.attr("disabled", true);
1033                } else {
1034                    if (isNeedOverwriteCustFlag != null)
1035                        isNeedOverwriteCustFlag.removeAttr("disabled");
1036                }
1037            }
1038
1039
1040            function _eventLotCustomerIsNeedOverwriteGarantAppChanged(frm, e, isNeedOverwrite) {
1041                useLotInfoElementToggle(frm, 'GarantApp', !isNeedOverwrite);
1042                frm.toggle({
1043                    GarantApp_Procedure: isNeedOverwrite,
1044                    GarantApp_SettlementAccount: isNeedOverwrite,
1045                    GarantApp_PersonalAccount: isNeedOverwrite,
1046                    GarantApp_Bik: isNeedOverwrite,
1047                    GarantApp_PayType: isNeedOverwrite,
1048                    GarantApp_PartInPercents: isNeedOverwrite,
1049                    GarantApp_Amount: isNeedOverwrite,
1050                    GarantApp_IsBail: isNeedOverwrite,
1051                    GarantApp_AdditionalInfoContent: isNeedOverwrite,
1052                    IsGarantAppNotNeed: isNeedOverwrite
1053                });
1054                if (isNeedOverwrite)
1055                    _isLotCustomerGarantPurNotNeedChanged(frm, $("input[name='Model.IsGarantAppNotNeed']:checked", frm.container).val());
1056            }
1057
1058            function _eventLotCustomerIsNeedOverwriteGarantCntrChanged(frm, e, isNeedOverwrite) {
1059                useLotInfoElementToggle(frm, 'GarantCntr', !isNeedOverwrite);
1060                frm.toggle({
1061                    GarantCntr_Procedure: isNeedOverwrite,
1062                    GarantCntr_SettlementAccount: isNeedOverwrite,
1063                    GarantCntr_PersonalAccount: isNeedOverwrite,
1064                    GarantCntr_Bik: isNeedOverwrite,
1065                    GarantCntr_PayType: isNeedOverwrite,
1066                    GarantCntr_PartInPercents: isNeedOverwrite,
1067                    GarantCntr_Amount: isNeedOverwrite,
1068                    GarantCntr_IsBail: isNeedOverwrite,
1069                    GarantCntr_AdditionalInfoContent: isNeedOverwrite,
1070                    IsGarantCntrNotNeed: isNeedOverwrite,
1071                    //GarantCntrNotNeed: isNeedOverwrite,
1072                    AdvanceInPercents: isNeedOverwrite
1073                });
1074                if (isNeedOverwrite)
1075                    _isLotCustomerGarantCntrNotNeedChanged(frm, $("input[name='Model.IsGarantCntrNotNeed']:checked", frm.container).val());
1076
1077            }
1078
1079            function _eventLotCustomerIsNeedOverwriteGarantProvChanged(frm, e, isNeedOverwrite) {
1080                useLotInfoElementToggle(frm, 'GarantProv', !isNeedOverwrite);
1081                frm.toggle({
1082                    GarantProv_Procedure: isNeedOverwrite,
1083                    GarantProv_SettlementAccount: isNeedOverwrite,
1084                    GarantProv_PersonalAccount: isNeedOverwrite,
1085                    GarantProv_Bik: isNeedOverwrite,
1086                    GarantProv_PayType: isNeedOverwrite,
1087                    GarantProv_PartInPercents: isNeedOverwrite,
1088                    GarantProv_Amount: isNeedOverwrite,
1089                    GarantProv_IsBail: isNeedOverwrite,
1090                    GarantProv_AdditionalInfoContent: isNeedOverwrite,
1091                    IsGarantProvNotNeed: isNeedOverwrite                    
1092                });
1093                if (isNeedOverwrite)
1094                    _isLotCustomerGarantProvNotNeedChanged(frm, $("input[name='Model.IsGarantProvNotNeed']:checked", frm.container).val());
1095
1096            }
1097
1098            function _eventLotIsNeedOverwriteGarantCntrChanged(frm, e, isNeedOverwrite) {
1099                useLotInfoElementToggle(frm, 'GarantCntr', !isNeedOverwrite);
1100                frm.toggle({
1101                    GarantCntr_Procedure: isNeedOverwrite,
1102                    GarantCntr_SettlementAccount: isNeedOverwrite,
1103                    GarantCntr_PersonalAccount: isNeedOverwrite,
1104                    GarantCntr_Bik: isNeedOverwrite,
1105                    GarantCntr_PayType: isNeedOverwrite,
1106                    GarantCntr_PartInPercents: isNeedOverwrite,
1107                    GarantCntr_Amount: isNeedOverwrite,
1108                    GarantCntr_IsBail: isNeedOverwrite,
1109                    GarantCntr_AdditionalInfoContent: isNeedOverwrite,
1110                    IsGarantCntrNotNeed: isNeedOverwrite,
1111                    //GarantCntrNotNeed: isNeedOverwrite,
1112                    AdvanceInPercents: isNeedOverwrite
1113                });
1114                    
1115                var isNeedOverwriteCustFlag = $("input[id='Model_IsOverwriteGrntCntrCust']", frm.container);
1116                if (isNeedOverwrite) {
1117                    _isLotGarantCntrNotNeedChanged(frm, $("input[name='Model.IsGarantCntrNotNeed']:checked", frm.container).val()=='true');
1118
1119                    if (isNeedOverwriteCustFlag != null && isNeedOverwriteCustFlag.is(':checked'))
1120                        isNeedOverwriteCustFlag.prop("checked", false);
1121                    if (isNeedOverwriteCustFlag != null)
1122                        isNeedOverwriteCustFlag.attr("disabled", true);
1123                } else {
1124                    if (isNeedOverwriteCustFlag != null)
1125                        isNeedOverwriteCustFlag.removeAttr("disabled");
1126                }
1127
1128            }
1129
1130            function _lotPrefValueAsSelectChanged(frm, e, val) {
1131                if (val + "" == "0")
1132                    return;
1133                if (frm.readOnly)
1134                    return;
1135               
1136                if ($('#Model_ValueAsSelect option[value='+val+']', frm.container).text() + "" != "") {
1137                    $("input[id='Model_Value']", frm.container).val(Number($('#Model_ValueAsSelect option[value='+val+']', frm.container).text()));
1138                }
1139            }
1140
1141            function _eventLotPurchaseFeatureChanged(frm, e, data) {
1142                if (frm.readOnly)
1143                    return;
1144                data = data || {}; //надо бы понять почему data не приходит иногда
1145                frm.toggle({ Value: !data.IsFlag, ValueAsSelect: false });
1146
1147                if (!data.IsFlag) {
1148                    /*if (isNaN(data.MaxValue))
1149                        $("input[id='Model_Value']", frm.container).val("");
1150                    */
1151                    $("input[id='Model_Value']", frm.container).prop('readonly', false);
1152                    if (!isNaN(data.MaxValue) && data.MaxValue == data.MinValue) {
1153                        $("input[id='Model_Value']", frm.container).val(Number(data.MinValue).toFixed(2));
1154                        $("input[id='Model_Value']", frm.container).prop('readonly', true);
1155                        frm.toggle({ ValueAsSelect: false });
1156                    }
1157                    if (!isNaN(data.MaxValue) && !isNaN(data.MinValue)
1158                        && Number(data.MaxValue) != Number(data.MinValue))
1159                    {
1160                        var tval = $("input[id='Model_Value']", frm.container).val();
1161                        if (tval == "" || isNaN(tval))
1162                            tval = data.MinValue;
1163                        if ((Number(tval) > Number(data.MaxValue)
1164                            || Number(tval) < Number(data.MinValue))
1165                            || (Number(tval) != Number(data.MaxValue)
1166                                && Number(tval) != Number(data.MinValue))) {
1167                            tval = data.MinValue;
1168                        }
1169                        $("input[id='Model_Value']", frm.container).val(tval);
1170                        frm.toggle({ Value: false, ValueAsSelect: true });
1171                        $('#Model_ValueAsSelect option[value=1]', frm.container).text(data.MinValue).prop('selected', Number(tval) == Number(data.MinValue));
1172                        $('#Model_ValueAsSelect option[value=2]', frm.container).text(data.MaxValue).prop('selected', Number(tval) == Number(data.MaxValue));
1173                    }
1174                } else {
1175                    $("input[id='Model_Value']", frm.container).val("");
1176                }
1177            }
1178
1179
1180            function _recalcPercentGarant(frm, e, amount, nmck) {
1181                var idElement = e.target.id;
1182                if (nmck > 0) {
1183                    if (idElement.indexOf("GarantCntr") != -1) {
1184                        _recalcPercentGarantCntr(frm, amount, nmck);
1185                    }
1186                    else if (idElement.indexOf("GarantProv") != -1) {
1187                        _recalcPercentGarantProv(frm, amount, nmck);
1188                    }else {
1189                        _recalcPercentGarantApp(frm, amount, nmck);
1190                    }
1191                }
1192            }
1193
1194            function _recalcPercentGarantCntr(frm, amount, nmck) {
1195                if (isNaN(amount))
1196                    return;
1197                var percent = Num.div(amount * 100, nmck);
1198                if (isNaN(percent)) {
1199                    $('#Model_GarantCntr_PartInPercents', frm.container).val("");
1200                    return;
1201                }
1202                percent = Math.round(percent * 100) / 100;
1203                $('#Model_GarantCntr_PartInPercents', frm.container).val(Number(percent).toFixed(2));
1204            }
1205
1206            function _recalcPercentGarantApp(frm, amount, nmck) {
1207                if (isNaN(amount))
1208                    return;
1209                var percent = Num.div(amount * 100, nmck);
1210                if (isNaN(percent)) {
1211                    $('#Model_GarantCntr_PartInPercents', frm.container).val("");
1212                    return;
1213                }
1214                percent = Math.round(percent * 100) / 100;
1215                $('#Model_GarantApp_PartInPercents', frm.container).val(Number(percent).toFixed(2));
1216            }
1217            function _recalcPercentGarantProv(frm, amount, nmck) {
1218                if (isNaN(amount))
1219                    return;
1220                var percent = Num.div(amount * 100, nmck);
1221                if (isNaN(percent)) {
1222                    $('#Model_GarantProv_PartInPercents', frm.container).val("");
1223                    return;
1224                }
1225                percent = Math.round(percent * 100) / 100;
1226                $('#Model_GarantProv_PartInPercents', frm.container).val(Number(percent).toFixed(2));
1227            }
1228
1229            function _recalcAmountGarant(frm, e, percent, nmck) {
1230                var idElement = e.target.id;
1231                if (nmck > 0) {
1232                    if (idElement.indexOf("GarantCntr") != -1) {
1233                        _recalcAmountGarantCntr(frm, percent, nmck);
1234                    }else if (idElement.indexOf("GarantProv") != -1) {
1235                        _recalcAmountGarantProv(frm, percent, nmck);
1236                    }else {
1237                        _recalcAmountGarantApp(frm, percent, nmck);
1238                    }
1239                }
1240            }
1241            function _recalcAmountGarantProv(frm, percent, nmck) {
1242                if (isNaN(percent))
1243                    return;
1244                var valRnd = _amountRnd(percent, nmck);
1245                if (isNaN(valRnd))
1246                    $('#Model_GarantProv_Amount', frm.container).val("");
1247                else
1248                    $('#Model_GarantProv_Amount', frm.container).val(Number(valRnd).toFixed(2));
1249            }
1250
1251            function _recalcAmountGarantCntr(frm, percent, nmck) {
1252                if (isNaN(percent))
1253                    return;
1254                var valRnd = _amountRnd(percent, nmck);
1255                if (isNaN(valRnd))
1256                    $('#Model_GarantCntr_Amount', frm.container).val("");
1257                else
1258                    $('#Model_GarantCntr_Amount', frm.container).val(Number(valRnd).toFixed(2));
1259            }
1260
1261            function _recalcAmountGarantApp(frm, percent, nmck) {
1262                var valRnd = _amountRnd(percent, nmck);
1263                if (isNaN(valRnd))
1264                    $('#Model_GarantApp_Amount', frm.container).val("");
1265                else
1266                    $('#Model_GarantApp_Amount', frm.container).val(Number(valRnd).toFixed(2));
1267            }
1268
1269            function _amountRnd(percent, nmck) {
1270                if (isNaN(percent))
1271                    return;
1272                var value = Num.mul(percent, nmck);
1273                if (isNaN(value))
1274                    return;
1275                value = Num.div(value, 100);
1276                var valRnd = Math.round(Num.mul(value, 100)) / 100;
1277
1278                return valRnd;
1279            }
1280
1281            function _eventLotGarantRecalcInit(frm, nmck) {
1282                var amountEl;
1283                var amount;
1284                var percentEl;
1285                var percent;
1286                if (nmck > 0) {
1287                    if ($("input[name='Model.GarantApp.PayType']:checked", frm.container).val() == '1') {
1288                        amountEl = $('#Model_GarantApp_Amount', frm.container);
1289                        if (amountEl.val != null && amountEl.val() != null && amountEl.val() != '')
1290                        {
1291                            amount = amountEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1292                            _recalcPercentGarantApp(frm, amount, nmck);
1293                        }
1294
1295                    }
1296                    if ($("input[name='Model.GarantApp.PayType']:checked", frm.container).val() == '2') {
1297                        percentEl = $('#Model_GarantApp_PartInPercents', frm.container);
1298                        if (percentEl.val != null && percentEl.val() != null && percentEl.val() != '')
1299                        {
1300                            percent = percentEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1301                            _recalcAmountGarantApp(frm, percent, nmck);
1302                        }
1303                    }
1304
1305                    if ($("input[name='Model.GarantCntr.PayType']:checked", frm.container).val() == '1') {
1306                        amountEl = $('#Model_GarantCntr_Amount', frm.container);
1307                        if (amountEl.val != null && amountEl.val() != null && amountEl.val() != '')
1308                        {
1309                            amount = amountEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1310                            _recalcPercentGarantCntr(frm, amount, nmck);
1311                        }
1312                    }
1313
1314                    if ($("input[name='Model.GarantCntr.PayType']:checked", frm.container).val() == '2') {
1315                        percentEl = $('#Model_GarantCntr_PartInPercents', frm.container);
1316                        if (percentEl.val != null && percentEl.val() != null && percentEl.val() != '')
1317                        {
1318                            percent = percentEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1319                            _recalcAmountGarantCntr(frm, percent, nmck);
1320                        }
1321                    }
1322                    if ($("input[name='Model.GarantProv.PayType']:checked", frm.container).val() == '1') {
1323                        amountEl = $('#Model_GarantProv_Amount', frm.container);
1324                        if (amountEl.val != null && amountEl.val() != null && amountEl.val() != '')
1325                        {
1326                            amount = amountEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1327                            _recalcPercentGarantProv(frm, amount, nmck);
1328                        }
1329                    }
1330
1331                    if ($("input[name='Model.GarantProv.PayType']:checked", frm.container).val() == '2') {
1332                        percentEl = $('#Model_GarantProv_PartInPercents', frm.container);
1333                        if (percentEl.val != null && percentEl.val() != null && percentEl.val() != '') {
1334                            percent = percentEl.parseNumber({ format: "#,###.00", locale: "ru" }, false);
1335                            _recalcAmountGarantProv(frm, percent, nmck);
1336                        }
1337                    }
1338                }
1339            }
1340					
1341        }
1342    };
1343
1344    $.ETC.FKS.AuctionEvents = {
1345        initForm: function (frm, data) {
1346            frm.readOnly = data.IsReadOnly == true;
1347            frm.Nmck = data.LotNmck;
1348            $.ETC.EventContainer.init(
1349                frm.container
1350                    .data('init', data)
1351                    .on('AuctionStepInPercentChanged', function (e, flag) {
1352                        _auctionStepInPercentChanged(frm, flag);
1353                    })
1354                    .on('IsAutomaticStepDecreasingChanged', function (e, flag) {
1355                        _isAutomaticStepDecreasingChanged(frm, flag);
1356                    })
1357                    .on('IsAutomaticProlongationChanged', function (e, flag) {
1358                        _isAutomaticProlongationChanged(frm, flag);
1359                    })
1360                    .on('IsAuctionWithStepChanged', function (e, flag) {
1361                        _isAuctionWithStepChanged(frm, flag);
1362                    })
1363                    .on('IsAuctionLimitReductionChanged', function (e, flag) {
1364                        _isAuctionLimitReductionChanged(frm, flag);
1365                    })
1366                    .on('IsAuctionForSecondPlaceChanged', function (e, flag) {
1367                        _isAuctionForSecondPlaceChanged(frm, flag);
1368                    })
1369                
1370            );
1371
1372            _initControls(frm);
1373
1374            function _initControls(frm) {
1375                _auctionStepInPercentChanged(frm, $("input#Model_AuctionStepInPercent").is(':checked'));
1376                _isAutomaticStepDecreasingChanged(frm, $("input#Model_IsAutomaticStepDecreasing").is(':checked'));
1377                _isAutomaticProlongationChanged(frm, $("input#Model_IsAutomaticProlongation").is(':checked'));
1378                _isAuctionWithStepChanged(frm, $("input#Model_IsAuctionWithStep").is(':checked'));
1379                _isAuctionLimitReductionChanged(frm, $("input#Model_IsAuctionLimitReduction").is(':checked'));
1380                _isAuctionForSecondPlaceChanged(frm, $("input#Model_IsAuctionForSecondPlace").is(':checked'));
1381            }
1382
1383            function _isAuctionForSecondPlaceChanged(frm, flag) {
1384                frm.toggle({
1385                    SecondPhaseDurationInMin: flag
1386                });
1387            }
1388
1389            
1390            function _isAuctionLimitReductionChanged(frm, flag) {
1391                frm.toggle({
1392                    LimitPriceReductionVal: flag
1393                });
1394            }
1395
1396            function _auctionStepInPercentChanged(frm, flag) {
1397                frm.toggle({
1398                    MinAuctionStep: !flag,
1399                    MaxAuctionStep: !flag,
1400                    MaxAuctionStepInPercent: flag,
1401                    MinAuctionStepInPercent: flag
1402                });
1403
1404                if (flag) {
1405                    $("#Model_MinAuctionStep").val(0);
1406                    $("#Model_MaxAuctionStep").val(0);
1407                } else {
1408                    $("#Model_MinAuctionStepInPercent").val(0);
1409                    $("#Model_MaxAuctionStepInPercent").val(0);
1410                }
1411            }
1412            function _isAutomaticStepDecreasingChanged(frm, flag) {
1413                frm.toggle({
1414                    StepDecreasingValue: flag
1415                });
1416            }
1417
1418            function _isAutomaticProlongationChanged(frm, flag) {
1419                frm.toggle({
1420                    PriceWaitingTimeInMin: flag,
1421                    AuctionEndDate: !flag,
1422                    NextpriceWaitingTimeInMin: flag
1423                });
1424            }
1425
1426            function _isAuctionWithStepChanged(frm, flag) {
1427                
1428                frm.toggle({
1429                    AuctionStepInPercent: flag,
1430                    MinAuctionStep: flag,
1431                    MaxAuctionStep: flag,
1432                    MaxAuctionStepInPercent: flag,
1433                    MinAuctionStepInPercent: flag,
1434                    IsAutomaticStepDecreasing: flag,
1435                    StepDecreasingValue: flag
1436                });
1437                if (flag) {
1438                    _auctionStepInPercentChanged(frm, $("input#Model_AuctionStepInPercent").is(':checked'));
1439                    _isAutomaticStepDecreasingChanged(frm, $("input#Model_IsAutomaticStepDecreasing").is(':checked'));
1440
1441                }
1442
1443            }
1444
1445        }
1446    };
1447
1448    $.ETC.FKS.Events.ItemRestrictionNpa = {
1449        initForm: function (frm, data) {
1450
1451            $.ETC.EventContainer.init(
1452                frm.container
1453                    .data('init', data)
1454                    .on('ImposibilityBanChanged', function (e, val) { _ImposibilityBanChanged(frm, val); return false; })
1455                    .on('NpaTypeChanged', function (e, val) { _NpaTypeChanged(frm, val); return false; })
1456            );
1457            initEvents();
1458            _NpaTypeChanged(frm, true);
1459
1460            function initEvents() {
1461                var flagInputs = $('input#Model_Type');
1462                for (var i = 0; i < flagInputs.length; i++) {
1463                    $(flagInputs[i]).bind("change", function (e, val) { _NpaTypeChanged(frm); });
1464                }
1465            }
1466
1467            function _NpaTypeChanged(frm, onlySetFlag) {
1468                if (onlySetFlag == undefined) onlySetFlag = false;
1469
1470                var code = "";
1471                var flagInputs = $('input#Model_Type', frm.container);
1472                var npa = $('#Model_Npa', frm.container);
1473                var lock4 = false;
1474                var lock1and2 = false;
1475                for (var i = 0; i < flagInputs.length; i++) {
1476                    if (flagInputs[i].checked) {
1477                        switch (flagInputs[i].value + "") {
1478                            case "1":// "AC": условие допуска 
1479                                code = code == "2" ? "4" : "3";
1480                                lock4 = true;
1481                                break;
1482                            case "2"://"RA": ограничение
1483                                code = code == "3" ? "4" : "2";
1484                                lock4 = true;
1485                                break;
1486                            case "4"://"BAN":  запрет
1487                                code = "1";
1488                                lock1and2 = true;
1489                                break;
1490                        }
1491                    }
1492                    flagInputs[i].disabled = false;
1493                }
1494                for (var i = 0; i < flagInputs.length; i++) {
1495                    if (lock4
1496                        && (flagInputs[i].value + "") == "4") {
1497                        flagInputs[i].checked = false;
1498                        flagInputs[i].disabled = true;
1499                    }
1500                    if (lock1and2
1501                        && (flagInputs[i].value + "") != "4") {
1502                        flagInputs[i].checked = false;
1503                        flagInputs[i].disabled = true;
1504                    }
1505                }
1506                if (!onlySetFlag) {
1507                    npa.DmLookup2({ 'clear': true });
1508                    npa.DmLookup2({ setUrlParam: { n: "NpaTypeCode", v: code } });
1509                } 
1510                npa.DmLookup2({ enable: code != "" });
1511            }
1512
1513            function _ImposibilityBanChanged(frm, val) {
1514                frm.toggle({
1515                    ImposibilityBanReason: val == true
1516                });
1517            }
1518        }
1519    };
1520    
1521})(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.