/// /************************************************* // // PRICE CALCULATOR // **************************************************/ function PriceCalc(LottoID, btnRef) { var btn = $(btnRef); var frm = $('#frmEdit' + LottoID.toString()); // Prepare the Dialog DialogOpening(); // Determine the URL var sUrl = '/Utils/PRZCALC/' + LottoID.toString(); // Call the server to obtain the Calculator View $.ajax({ type: "GET", url: sUrl, success: function (data) { // The server sent us the form var dlg = $('#icDialog'); dlg.html(data); dlg.dialog('option', 'position', 'center'); dlg.dialog('option', 'title', 'Price Calculator'); // Init the Calculator var IDProdotto = $('#pcIDProdotto').val(); var IDValAcq = $('#pcIDValuta').val(); InitCalculator(IDProdotto, IDValAcq, frm); }, error: function () { AjaxErrorDOMElem('icDialog'); } }); } /************************************************* // // PRICE CALCULATOR JAVASCRIPT OBJECT // **************************************************/ function icPriceCalc(calculatorDIV, IDProdotto, IDValAcq, lottoForm) { // initialize the member variables for this instance this.cont = $('#' + calculatorDIV); this.lottoForm = lottoForm; this.IDProdotto = IDProdotto; this.CalcPrize = 0.0; this.Calcvaluta = 0; this.QtaOff = 0; this.IDSource = 0; this.SourceType = 0; this.OKurl = '/Utils/ConfirmCalc/' + this.IDProdotto.toString(); this.DCOff = ''; this.ConsOff = 0; // initialize the member function references // for the class prototype if (typeof (_PC_prototype_called) == 'undefined') { _PC_prototype_called = true; icPriceCalc.prototype.HandleFilters = HandleFilters; icPriceCalc.prototype.HandleEditing = HandleEditing; icPriceCalc.prototype.Destroy = Destroy; icPriceCalc.prototype.Updatevalues = Updatevalues; icPriceCalc.prototype.HandleButtons = HandleButtons; icPriceCalc.prototype.RestValues = RestValues; } // The code below is run on initialization if (this.cont.length > 0) { this.HandleFilters(); this.HandleEditing(); this.HandleButtons(); // Set the Valuta Selected to that of the Offerta Lotto $("#Cambio").find('option[text=' + $('#pcValutaDescr').val() + ']').attr("selected", "selected"); // Set the byTime option $('#byPrice').change(); } // Destroy this object function Destroy() { this.cont.find('input[type="radio"].icSourceFilter').unbind(); this.cont.find('.icDataValues').unbind(); } function HandleFilters() { // Bind the changing in the filters var that = this; this.cont.find('input[type="radio"].icSourceFilter').change(function (e) { e.preventDefault(); var SourceType = $('#fromStock:checked').length == 0 ? 1 : 0; that.SourceType = SourceType; var OrderBy = $('#byTime:checked').length == 0 ? 1 : 0; var sUrl = '/Utils/SourceList/' + that.IDProdotto.toString() + '?SourceType=' + SourceType.toString() + '&OrderBy=' + OrderBy.toString(); $('#sourceList').html(WaitingIcon(true)); $('#sourceList').load(sUrl, null, function () { //$('#sourceList').busy('hide'); // Bind the selection event on the SourceList Items $('#sourceList').find('li.icSourceItem').click(function (e) { e.preventDefault(); var sItem = $(this).attr('icItemID'); var sUrl = '/Utils/SourceDetails/' + sItem.toString() + '?SourceType=' + that.SourceType.toString(); that.IDSource = sItem; //$('#sourceDetails').busy(); $('#sourceDetails').html(WaitingIcon(true)); $('#sourceDetails').load(sUrl, null, function () { //$('#sourceDetails').busy('hide'); that.Updatevalues(false, false); }); }); }); }); }; function HandleEditing() { // Bind the changing in the filters var that = this; this.cont.find('.icDataValues').change(function (e) { e.preventDefault(); var IsFromDestvaluta = $(this).attr('id') == 'Calcolato'; // ? true : false; var IsUserTyping = ($(this).attr('id') == 'PrzUser' || $(this).attr('id') == 'Calcolato' || $(this).attr('id') == 'Cambio'); // ? true : false; that.Updatevalues(IsUserTyping, IsFromDestvaluta); }); }; function HandleButtons() { // Bind the changing in the filters var that = this; this.cont.find('.icButton').each(function () { $(this).button(); $(this).click(function (e) { e.preventDefault(); var btnCode = $(this); if (btnCode.attr('id') == 'btnOK') { btnCode.fadeOut('fast', function () { $(this).before(WaitingIcon(false)); $('#ClientError').remove(); var LottoID = parseInt(that.cont.find('#pcIDLotto').val()); // Send the data choosen to the server var pData = { LottoID: LottoID, IDSource: that.IDSource, SourceType: that.SourceType, QtaOff: that.QtaOff, Calcvaluta: that.Calcvaluta, CalcPrize: Globalize.format(that.CalcPrize, 'n4').replace(Globalize.culture().numberFormat[','], '') }; $.ajax({ type: "POST", url: '/utils/StoreData/', data: pData, success: function (data) { if (data.indexOf('OK') != -1) { // Update the Lotto data var parts = data.split(',', 5); var cons = parseInt(parts[1]); //data.replace('OK,', '')); var rohs = parts[2]; var frm = $(that.lottoForm); frm.find('input[id^="Qta_"]').first().val(that.QtaOff); frm.find('select[id^="IDValuta_"]').find('option:contains("' + that.Calcvaluta + '")').attr("selected", "selected"); frm.find('input[id^="Prezzo_"]').first().val(Globalize.format(that.CalcPrize, 'n4')); frm.find('input[id^="Consegna_"]').first().val(cons + that.ConsOff); frm.find('input[id^="DataCode_"]').first().val(that.DCOff); frm.find('select[id^="IsRohs"]').find('option:contains("' + rohs + '")').attr("selected", "selected"); DialogClose(); } else { // Something went wrong on the server btnCode.parent().after(newError(data, 5)); btnCode.prev('span').fadeOut('fast', function () { $(this).remove(); btnCode.fadeIn('fast'); }); } }, error: function () { // Something went wrong on the server btnCode.parent().after(newError('Unspecified error on the server', 5)); btnCode.prev('span').fadeOut('fast', function () { $(this).remove(); btnCode.fadeIn('fast'); }); } }); }); } else { // Close dialog doing nothing DialogClose(); }; }); }); }; function RestValues() { $('#przAcqSel').html('0.00'); $('#valutaAcqSel').html('-'); $('#valutaCalc').html('-'); $('#valutaVend').html($('#pcValutaDescr').val()); $("#Cambio").find('option:contains("' + $('#pcValutaDescr').val() + '")').attr("selected", "selected"); $('#PrzUser').val('0.00'); $('#MLCalc').html('0.00'); $('#ExchRate').html('1.0000'); $('#Calcolato').val('0.00'); }; function Updatevalues(IsUserTyping, IsFromDestvaluta) { var prz = 0.0, przML = 0.0, przMK = 0.0, prxMinOrd = 0.0, przAcq = 0.0; // Reset the values if (!IsUserTyping) { this.RestValues(); } // validate fields RemoveErrorIndication(this.cont); var QtaOff = $('#QtaOff').val(); var QtaAcq = $('#QtaAcq').html(); var QtaOffOrig = $('#QtaOffOrig').html(); var MLMin = $('#MLMin').val(); var MinK = $('#MinK').val(); var przAcq = $('#przAcq').html(); var ValutaAcq = $('#valutaAcq').html(); var valutaSelected = $('#Cambio option:selected').text(); var Dazio = $('#Dazio').html(); var PrzUser = $('#PrzUser').val(); var Calcolato = $('#Calcolato').val(); var Spread = $('#Spread').val(); var isvalid = true; if (!isNumber(QtaOff)) { $('#QtaOff').addClass('input-validation-error'); isvalid = false; } else { QtaOff = Globalize.parseInt(QtaOff); } if (!isNumber(QtaOffOrig)) { $('#QtaOffOrig').addClass('input-validation-error'); isvalid = false; } else { QtaOffOrig = Globalize.parseInt(QtaOffOrig); } if (!isNumber(QtaAcq)) { $('#QtaAcq').addClass('input-validation-error'); isvalid = false; } else if (isvalid) { QtaAcq = Globalize.parseInt(QtaAcq); if (QtaOff >= QtaAcq) { QtaOff = QtaAcq; $('#QtaOff').val(QtaOff); } else { QtaOff = QtaOffOrig; $('#QtaOff').val(QtaOff); } } if (!isNumber(MLMin)) { $('#MLMin').addClass('input-validation-error'); isvalid = false; } else { MLMin = Globalize.parseFloat(MLMin); } if (!isNumber(MinK)) { $('#MinK').addClass('input-validation-error'); isvalid = false; } else { MinK = Globalize.parseInt(MinK); } if (!isNumber(PrzUser)) { $('#PrzUser').addClass('input-validation-error'); isvalid = false; } else { PrzUser = Globalize.parseFloat(PrzUser); } if (!isNumber(przAcq)) { $('#przAcq').addClass('input-validation-error'); isvalid = false; } else { przAcq = Globalize.parseFloat(przAcq); } if (!isNumber(Dazio)) { $('#Dazio').addClass('input-validation-error'); isvalid = false; } else { Dazio = Globalize.parseFloat(Dazio); } if (!isNumber(Calcolato)) { $('#Calcolato').addClass('input-validation-error'); isvalid = false; } else { Calcolato = Globalize.parseFloat(Calcolato); } if (!isNumber(Spread)) { $('#Spread').addClass('input-validation-error'); isvalid = false; } else { Spread = Globalize.parseFloat(Spread); } if (!isvalid) { return; } var cons = $('#ConsAcq').html(); if (!isNumber(cons)) { this.ConsOff = 0; } else { this.ConsOff = Globalize.parseInt(cons); } this.DCOff = $('#DCAcq').html(); // Calculate real Prezzo Acquisto using the Dazio if (Dazio>0) { przAcq = przAcq * (1 + Dazio / 100); } $('#przAcqSel').html(Globalize.format(przAcq, 'n4')); $('#valutaAcqSel').html(ValutaAcq); $('#valutaCalc').html(ValutaAcq); $('#valutaVend').html(valutaSelected); // Get the Cambio to be used var Cambio = "1"; if (ValutaAcq != valutaSelected) { if (ValutaAcq == 'EUR') { Cambio = $('#Cambio').find('option:contains("' + valutaSelected + '")').val(); } else { Cambio = $('#Cambio').find('option:contains("' + ValutaAcq + '")').val(); } } Cambio = Globalize.parseFloat(Cambio); $('#ExchRate').html(Globalize.format(Cambio, 'n4')); // Calculate the Price based on the minimum order for this cliente var minOrder = Globalize.parseFloat($('#minOrder').html()); var prxMinOrd = 0.0; if (minOrder>0) { if (QtaOff == 0) { prxMinOrd = minOrder; } else { prxMinOrd = minOrder / QtaOff; } } // Calculate the Price using the minimum Margine Lordo (in EURO) var przML = MLMin; if (Cambio != 0) { if (QtaOff == 0) { przML = MLMin; } else { if (ValutaAcq == 'EUR') { przML = (MLMin + QtaOff * przAcq) / QtaOff; } else { przML = (MLMin + QtaOff * przAcq / Cambio) / QtaOff; } } } // Calculate the Price using the minimum Ricarico K (in EURO) var przMK = 0.0; przMK = przAcq * (1 + MinK / 100); if (Cambio != 0) { przMK = przMK / Cambio; } if (IsUserTyping) { if (IsFromDestvaluta) { prz = Calcolato; } else { prz = PrzUser; if (valutaSelected != ValutaAcq) { prz = prz * (1 + Spread / 100); } } } else { prz = (prxMinOrd >= przML && prxMinOrd >= przMK) ? prxMinOrd : (przML >= prxMinOrd && przML >= przMK ? przML : przMK); if (valutaSelected != ValutaAcq) { prz = prz * (1 + Spread / 100); } } if (!IsUserTyping) { if (ValutaAcq == 'EUR') { PrzUser = prz; } else { PrzUser = prz * Cambio; } if (valutaSelected == 'EUR') { Calcolato = prz; } else { Calcolato = prz * Cambio; } $('#PrzUser').val(Globalize.format(PrzUser, 'n4')); $('#Calcolato').val(Globalize.format(Calcolato, 'n4')); } else { if (IsFromDestvaluta) { if (valutaSelected != ValutaAcq) { if (valutaSelected == 'EUR') { PrzUser = prz * Cambio; } else { PrzUser = prz / Cambio; } } else { PrzUser = prz; } $('#PrzUser').val(Globalize.format(PrzUser, 'n4')); } else { if (valutaSelected != ValutaAcq) { if (valutaSelected == 'EUR') { Calcolato = prz / Cambio; } else { Calcolato = prz * Cambio; } } else { Calcolato = prz; } $('#Calcolato').val(Globalize.format(Calcolato, 'n4')); } } // Calculate the Estimated ML in EURO if (ValutaAcq != 'EUR') { Cambio = Globalize.parseFloat($('#Cambio').find('option:contains("' + ValutaAcq + '")').val()); MLCalc = (PrzUser - przAcq) * QtaOff / Cambio; } else { MLCalc = (PrzUser - przAcq) * QtaOff; } $('#MLCalc').html(Globalize.format(MLCalc, 'n4')); // Set the internal values this.QtaOff = QtaOff; this.Calcvaluta = valutaSelected; this.CalcPrize = Calcolato; }; } // INIT THE CALCULATOR var Calculator; function InitCalculator(IDProdotto, IDValAcq, lottoForm) { // Istantiate the Itinerario Object Calculator = new icPriceCalc('pcMain', IDProdotto, IDValAcq, lottoForm); }